Skip to main content
Glama

GithubMCP

Производственный MCP-сервер персонального помощника разработчика

License: MIT Python: 3.11+ Managed by: uv MCP Compatible Code style: ruff Type checked with: mypy

Бесшовно подключайте ИИ-модели (Claude, Cursor и др.) к вашим рабочим процессам GitHub, CI/CD-пайплайнам, контексту локального рабочего пространства и инструментам анализа кода.


Обзор

GithubMCP — это MCP-сервер (Model Context Protocol), созданный для разработчиков. Он напрямую связывает ИИ-ассистентов с вашей средой разработки и позволяет им:

  • Исследовать репозитории GitHub, пул-реквесты, issue, коммиты и код в публичных и приватных репозиториях.

  • Управлять конфиденциальностью и видимостью репозиториев (public/private) прямо через диалог.

  • Отслеживать запуски CI/CD-пайплайнов и разбирать упавшие шаги сборки в GitHub Actions.

  • Безопасно просматривать локальную файловую систему в пределах заданных пользователем разрешённых путей.

  • Анализировать качество кода, рассчитывать метрики сложности, находить TODO и обнаруживать потенциально опасные места с секретами.

Поддерживаются оба режима транспорта: STDIO (Claude Desktop, Cursor) и SSE (Server-Sent Events, для веб-клиентов).


Related MCP server: Git MCP Server

Справочник инструментов

GithubMCP предоставляет 13 специализированных инструментов:

Категория

Инструмент

Описание

GitHub

search_repos

Поиск публичных и приватных репозиториев пользователей/организаций с фильтрами по языку и сортировке.

GitHub

inspect_pr

Получение сведений о PR, изменённых файлах, статистике добавлений/удалений и комментариях к ревью.

GitHub

inspect_issue

Просмотр состояния issue, ответственных, связанных PR, меток и последних комментариев.

GitHub

search_code

Поиск фрагментов кода по репозиториям с фильтрами по расширениям файлов.

GitHub

recent_commits

Получение истории последних коммитов со статистикой diff и авторами.

GitHub

update_repo_visibility

Изменение видимости репозитория между private и public.

CI/CD

check_ci_status

Мониторинг статуса GitHub Actions (успех/сбой/выполняется) и журнал упавших шагов.

Файловая система

read_file

Безопасное чтение локальных файлов с определением MIME-типа и проверкой размера.

Файловая система

list_directory

Вывод дерева каталогов с размерами файлов, временем изменения и glob-фильтрами.

Файловая система

search_local_files

Асинхронный поиск по файлам с регулярными выражениями/шаблонами и контекстом соседних строк.

Файловая система

get_project_context

Определение технологического стека проекта (Node, Python, Rust, Go, Docker) и команд запуска.

Анализ

generate_change_summary

Сравнение git-ссылок и категоризация коммитов: Features, Fixes, Breaking Changes и др.

Анализ

analyze_code_quality

Подсчёт строк кода, оценка сложности, поиск TODO-задач и выявление признаков утечки секретов.


Быстрый старт

1. Предварительные требования

  • Python 3.11+

  • uv (быстрый менеджер пакетов Python)

Установите uv (если ещё не установлен):

# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

2. Клонирование и настройка

git clone https://github.com/Dhananjayrbiraris/github-mcp.git
cd github-mcp

# Install dependencies and sync virtual environment
uv sync

3. Конфигурация окружения

Скопируйте файл-шаблон .env.example в .env:

cp .env.example .env

Отредактируйте .env, указав личный токен доступа GitHub (Personal Access Token):

# GitHub Personal Access Token (Classic PAT with 'repo', 'workflow', 'read:user' scopes)
GITHUB_TOKEN=ghp_your_github_token_here

# Default GitHub Username (Optional)
GITHUB_USERNAME=your_username

# Sandboxed directories allowed for local filesystem operations
ALLOWED_PATHS=["~/projects", "~/workspace", "."]

# Max file size limit in MB for reading files
MAX_FILE_SIZE_MB=10

# Default Transport mode: "stdio" or "sse"
TRANSPORT=stdio

Генерация GitHub-токена: Перейдите в GitHub Settings -> Developer Settings -> Personal access tokens (classic) и создайте токен с правами repo, workflow и read:user.


Руководства по настройке клиентов

A. Claude Desktop

1. Откройте файл конфигурации Claude Desktop:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Добавьте сервер github-mcp:

{
  "mcpServers": {
    "github-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/github-mcp",
        "run",
        "python",
        "-m",
        "github_mcp.main",
        "--transport",
        "stdio"
      ],
      "env": {
        "GITHUB_TOKEN": "ghp_your_personal_access_token_here"
      }
    }
  }
}

(В Windows используйте обратную косую черту, например C:\\Users\\yourname\\path\\to\\github-mcp, либо прямую).

3. Перезапустите Claude Desktop

Откройте Claude Desktop — нажмите иконку Tools (Инструменты) в правом нижнем углу поля ввода, чтобы увидеть все подключённые инструменты GithubMCP.


B. Cursor IDE

В Cursor:

  1. Перейдите в Cursor Settings -> Features -> MCP.

  2. Нажмите + Add New MCP Server.

  3. Заполните:

    • Name: github-mcp

    • Type: command

    • Command: uv --directory /path/to/github-mcp run python -m github_mcp.main --transport stdio


C. Server-Sent Events (SSE) / веб-клиенты

Чтобы запустить MCP-сервер через HTTP / Server-Sent Events:

uv run python -m github_mcp.main --transport sse --host 0.0.0.0 --port 8000

SSE-эндпоинтбудет доступен по адресу: http://localhost:8000/sse


Безопасность и песочница

  1. Ограничение путей: файловые инструменты (read_file, list_directory, search_local_files, get_project_context) строго проверяют пути на допустимость относительно ALLOWED_PATHS. Дата обращений до минимум вне разрешённого списка вызовет исключение SecurityError.

  2. Управление секретами: токены и учётные данные никогда не логируются и не раскрываются.

  3. Устойчивость к ограничениям: при тротлинге лимитов GitHub API автоматически выполняются повторные попытки с экспоненциальной задержкой.


Разработка и тестирование

Запустите полный набор тестов и проверки качества:

# Run pytest unit tests
uv run pytest

# Run linter
uv run ruff check .

# Check code formatting
uv run ruff format --check .

# Run strict type checking
uv run mypy src/

Структура репозитория

github-mcp/
├── .github/workflows/ci.yml # GitHub Actions CI workflow
├── src/github_mcp/
│   ├── __init__.py
│   ├── main.py              # Server entrypoint & MCP tool registrations
│   ├── config.py            # Pydantic Settings model
│   ├── github_tools.py      # GitHub API integrations & visibility controls
│   ├── file_tools.py        # Sandboxed local filesystem operations
│   ├── ci_tools.py          # GitHub Actions CI/CD monitoring
│   ├── analysis_tools.py    # Diff categorization & code quality analyzer
│   └── utils.py             # Path safety, error handling, rate limiting
├── tests/
│   ├── conftest.py          # Pytest fixtures and mocks
│   ├── test_github.py       # GitHub tools unit tests
│   ├── test_files.py        # Filesystem tools unit tests
│   └── test_ci.py           # CI status tools unit tests
├── docs/
│   ├── architecture.md      # System architecture & data flow
│   └── tools_reference.md   # Complete API schemas for all 13 tools
├── pyproject.toml           # Project dependencies & tool configurations
├── .env.example             # Environment variable template
├── CONTRIBUTING.md          # Open-source contribution guidelines
├── SECURITY.md              # Security policy & vulnerability reporting
└── LICENSE                  # MIT License

Лицензия

Этот проект по лицензии MIT License — бесплатно для личного и коммерческого использования.


Available Tools

13 tools
analyze_code_qualityA

Analyze file metrics (line counts, comment ratio, complexity estimate), TODO/FIXME comments, and potential security smells (hardcoded secrets).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral transparency. It does disclose what the tool scans for, including potential security smells, but it does not explicitly state that the operation is read-only, how the complexity estimate is calculated, or whether the path is limited to the current repository.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clean sentence front-loads the main action and uses parentheticals to scope the analysis. No filler, no repeated schema content, and each phrase contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter and an existing output schema, the description is nearly sufficient for correct tool invocation. The main gap is broader path-semantics documentation, but this is minor for a one-parameter analysis tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only describes a 'path' string with no schema-level description (0% coverage). The description adds that a file's metrics will be analyzed, so path clearly suggests a file target, but it doesn't specify path format, relative-to-root ambiguity, or directory compatibility.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Analyze') and enumerates concrete analysis targets: line counts, comment ratio, complexity estimate, TODO/FIXME comments, and hardcoded secrets. This makes the tool's purpose clear and distinguishes it from siblings like read_file and search_code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this tool when code-quality metrics or potential issues in a file are needed. However, that description provides no explicit when-to-use/when-not-to-use guidance and does not compare it with sibling tools such as inspect_pr or check_ci_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ci_statusA

Check current build status (success/failure/in_progress), duration, log URL, and summary of failed steps for GitHub Actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
branchNomain
platformNogithub_actions

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the transparency burden. It conveys that this is a status-checking operation and lists useful informational outputs, but it does not state read-only behavior, credential needs, platform expectations, or behavior when no build exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core action and then enumerates the relevant output details. There is no redundancy or wasted phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values are covered outside the description, and the branch/platform defaults are represented in the input schema. However, with no annotations and no parameter descriptions, the definition lacks some behavioral and selection context that would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for missing parameter documentation. It only clarifies the platform via 'GitHub Actions' but does not explain repo format, branch usage, or the role of the platform parameter beyond its default. The parameter names are self-explanatory, but the description adds little semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description defines a concrete action, 'Check current build status', and a clear resource: GitHub Actions CI status. It also names the exact outputs returned: status, duration, log URL, and failed-step summary. None of the sibling tools covers CI status, so it is easily distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The text makes it clear the tool applies when checking current build status for GitHub Actions on a branch. It does not explicitly list exclusions or alternatives, but no sibling tool handles CI build status, so the usage context is still clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_change_summaryA

Compare base and head git refs for a repository and generate a human-readable summary categorized by Features, Fixes, Breaking Changes, and Config Updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
base_refYes
head_refYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavior disclosure. It discloses that the result is a human-readable summary with categories, but it does not explicitly state whether the tool is read-only or whether there are side effects/prerequisites. For a compare-and-summarize tool this is adequate but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one front-loaded sentence that states the operation, the inputs, and the output categories without waste. It is efficiently structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values are presumably covered by the schema. The input roles are stated, but the lack of repo and ref format details combined with zero schema coverage leaves real ambiguity for an agent about which strings are valid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description is responsible for clarifying all three parameters. It clearly maps base_ref and head_ref to git refs, but it does not explain repo identifier formats, ref formats, branch/SHA/tag handling, or any constraints. The description adds partial meaning beyond the bare parameter names, but it is not sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a clear verb and resource: it compares base and head git refs for a repository and produces a categorized summary. It is distinguishable from siblings like recent_commits or inspect_pr because it is about generating a diff-based summary, not about PRs, issues, or raw commit listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is clear: an agent should call this when it needs a categorized summary of changes between two refs. It does not explicitly name alternatives or exclusion cases, but the trigger condition is stated directly in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_contextB

Detect project type (Node, Python, Rust, Go, Docker), key config files, sample dependencies, and suggested dev commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
root_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Detect' weakly implies a read-only operation, but the description fails to state that it scans a directory recursively, whether it modifies anything, whether root_path must exist, or what side effects may occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with a clear verb and a short list of what will be detected. Every word adds useful information, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool, the description covers main output categories and makes its scope broadly understandable. It falls slightly short by not clarifying the input parameter and not mentioning any operational limitations, but the output-schema presence reduces the need for return-value documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single required parameter 'root_path' with zero description coverage, and the tool description never mentions root_path or explains that it is the directory to analyze. The title 'Root Path' gives a general hint, but the description does not compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Detect', and names the concrete resources it examines: project type, key config files, sample dependencies, and suggested dev commands. This clearly differentiates it from sibling tools like read_file or list_directory in function, though it never explicitly names a sibling to distinguish itself from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Context is implied: the tool should be used when an agent needs an overview of a project's stack, config files, dependencies, and dev commands. However, the description says nothing about when not to use it or which sibling alternatives might be better suited.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_issueA

Fetch issue details including assignees, state, labels, linked PRs, and recent comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
issue_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description itself must convey the tool's behavior. It indicates this is a read-only fetch operation by listing the data returned, but it doesn't mention any auth requirements, rate handling, or exactly how the output is structured. For a simple inspect tool with no annotation support, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the verb and resource, then compactly lists the key detail categories. No word is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with an output schema, the description's enumerated result categories give enough detail about what to expect. It does not explain repo naming conventions, but the self-explanatory parameter titles and output schema reduce the risk of incorrect invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate by explaining the parameters. The description does not define what 'repo' should look like (e.g., owner/name) or the required format of 'issue_number'. The parameter names are self-explanatory, but the description adds no semantic detail beyond what the schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Fetch' with a clear resource: 'issue details', and enumerates the included content (assignees, state, labels, linked PRs, recent comments). This distinguishes it from sibling tools like inspect_pr even though the description itself doesn't name the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case clear: when you need details about a given issue. It doesn't explicitly mention when not to use it or recommend alternatives, but the context of sibling tools plus the direct 'issue details' phrasing provides clear guidance for typical selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_prA

Fetch pull request details including changed files, diff stats, additions/deletions, and review comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
pr_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden of communicating behavioral characteristics. The verb 'Fetch' implies a read-only operation, and the listed fields communicate what is returned, but the description does not mention access requirements, whether the operation is purely non-destructive, or any rate-limit or payload-size caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It starts with the action, names the target resource, and then lists the key data points, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with an output schema, this is a fairly complete definition, and it does not need to describe return values since an output schema exists. However, the repo format ambiguity and the absence of any explicit 'when to use' note mean an agent can still call the tool incorrectly or pick a less appropriate sibling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is responsible for explaining the parameters. While 'pr_number' is reasonably self-explanatory, 'repo' is ambiguous in terms of format, the description does not specify whether it expects an owner/repo string, a repository URL, or an ID, and it adds no semantic guidance beyond a statement that it relates to a pull request.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') with a precise resource ('pull request details') and enumerates concrete components such as changed files, diff stats, additions/deletions, and review comments. This makes it clearly distinct from siblings like inspect_issue, which handles issue details rather than PR details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied: it should be called when a pull request's details are needed. However, the description never explicitly specifies when not to use it or how to choose between this and inspect_issue, so it falls short of giving clear when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_directoryB

List directory structure, files, subdirectories, sizes, and modification dates with optional depth limit and glob filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
recursiveNo
depth_limitNo
glob_patternNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral context. It conveys the return content and optional filtering/depth parameters, but it does not mention read-only status, recursion behavior, symlink handling, or potential performance impact on large directories.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that packs the core operation and key options without filler. Every phrase contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple listing tool and an output schema exists, but it leaves parameter semantics and when-to-use decision-making mostly to the agent. There is no statement of expected output shape beyond the listed fields, and no alternative tool routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meaning. It only names depth limit and glob filter without clarifying their exact semantics, and omits any real explanation for path and recursive. The schema defaults do some work, but the required path is left entirely implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a directory-listing action and the resource: files, subdirectories, sizes, and modification dates. It is distinct by nature from siblings like search_local_files or read_file, though it does not explicitly name or contrast any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is given. The description does not state when to prefer this over sibling tools, whether it is appropriate for filtering projects vs. file content, or any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileA

Read file contents securely within allowed directories with MIME type detection and size validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It goes beyond a plain 'read file' statement by mentioning security containment, MIME type detection, and size validation, which are meaningful behavioral constraints an agent should know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence front-loads the core action, then supplies key constraints without redundancy. Every phrase adds relevant value and the description is well-sized for the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter file-reading tool with an output schema, the description covers the essential context: security boundary and validation behavior. It still lacks explicit guidance on path format and failure behavior, which prevents a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no description for 'path', and the textual description adds limited guidance about path semantics. It implies the path must reside within allowed directories, but it does not define path format, allowed roots, or other details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific verb ('Read'), a resource ('file contents'), and a distinct scope ('within allowed directories'). This distinguishes it from sibling tools like list_directory and search_local_files, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear that this tool is for reading file contents, not for listing or searching. However, it does not explicitly mention when not to use it or name sibling alternatives as options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recent_commitsA

Fetch recent commits for a repository branch within lookback days with commit stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
repoYes
limitNo
branchNomain

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the behavioral burden; 'Fetch' clearly implies a read-only operation, and 'with commit stats' gives some insight into response content. However, it does not disclose auth requirements, sorting/ordering, how branches/days interact, or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant information. It conveys the primary operation, the scope, the lookback period, and the output feature efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-format documentation is less necessary. But with no annotations and 0% schema parameter coverage, the description should cover key operational details like 'limit', repo naming format, and branch behavior. It covers the core idea but leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since there are no parameter descriptions in the schema, the description is responsible for clarifying parameter semantics. It clarifies lookback days and branches, but does not explain 'limit', repo name format, or defaults. The description only partially compensates for 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a concrete verb ('Fetch') and identifies a clear resource ('recent commits') with useful scoping details: repository branch, lookback days, and commit stats. It distinguishes this tool from siblings like inspect_pr, check_ci_status, and search_repos without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is only implied: use this tool to retrieve recent commit history for a branch. There is no explicit 'when to use' vs alternative, no exclusions, and no mention of when a repo/branch combination is required. This is minimally viable but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_codeA

Search code across specified repositories matching pattern and optional file extension filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
reposYes
patternYes
file_extensionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It states the search action but does not disclose important behaviors such as whether the search is read-only, how pattern semantics behave (e.g., regex vs literal), what exactly is searched (file contents vs filenames), or any limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence, front-loads the primary action, and includes all three parameters at a high level. It has no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple (3 parameters, 2 required, no nested objects) and an output schema exists. Yet with no annotations and significant ambiguity in pattern semantics, a slightly richer description would make the tool safely and correctly invokable in more situations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the missing parameter details. It only restates the high-level purpose of repos, pattern, and file_extension without adding syntax, allowed values, or examples. It does not explain what a valid 'pattern' looks like or how file extensions are formatted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a specific resource ('code across specified repositories'), and the matching conditions (pattern, optional file extension filter). It clearly distinguishes from sibling tools like search_local_files and search_repos by anchoring the search scope to user-selected repositories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this tool searches code within given repositories, which implies when to use it over local-file or repository-metadata search. However, it does not explicitly mention alternatives or exclusions, so it falls short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_local_filesA

Search local directory files for text matching pattern with line numbers and surrounding context.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
patternYes
file_typeNo
case_sensitiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral context on its own. It does usefully report that results include line numbers and surrounding context, and 'search' implies a read-only operation. However, it does not disclose recursion behavior, hidden-file handling, size limits, or whether matches are grouped by file.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that packs the core action, resource, and output detail with no filler. It front-loads the verb and resource and earns every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a straightforward search tool, especially with an output schema available, but it leaves gaps: no explicit alternative-choosing guidance, no mention of whether the search is recursive, and no mention of how file_type or case_sensitive affect results. These would matter for an agent correctly invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the field names are the only aid. The description adds little beyond restating that a text pattern is matched; it does not explain path semantics, file_type filtering, or case_sensitive behavior. The parameter names are self-explanatory, but the description fails to compensate for the missing schema information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (Search), a specific resource (local directory files), and distinctive output traits (line numbers and surrounding context). It clearly distinguishes from sibling tools like search_code or search_repos by explicitly scoping to local directory files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching text within local directories, which gives some context, but it does not explicitly state when to prefer this tool over siblings like search_code or read_file, nor does it mention exclusions or limitations. The word 'local' is the only implicit signal for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_reposA

Search GitHub repositories matching query, optional language filter, and sort order.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNo
queryNo
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the core search behavior: query matching, optional language filtering, and sorting. It also implicitly signals a non-mutating operation via the verb 'Search.' However, with no annotations available, it omits potentially useful behavioral details such as rate limits, visibility constraints, or whether only public repositories are searched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one front-loaded, concise sentence with no unnecessary wording. Every phrase contributes something meaningful: the resource searched, the query, the optional language filter, and the sort behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only search tool with an output schema already present, so the description need not document return values. The main missing elements are sort value options and sibling-tool routing guidance, but an agent has enough information to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description is responsible for explaining parameters. It adds meaning to query, language, and sort, but it does not explain the limit parameter's purpose or what sort values are accepted, leaving the parameter explanation incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Search GitHub repositories matching query, optional language filter, and sort order.' It clearly identifies what the tool affects and differentiates it from sibling tools like search_code and search_local_files, which operate on code or local files rather than repositories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this tool when looking for GitHub repositories. However, the description never explicitly mentions when to choose this over search_code or search_local_files, nor does it state any exclusions or alternative conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_repo_visibilityA

Update the privacy/visibility settings of a repository to make it private or public.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
privateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It indicates a mutation ('update', 'make private or public') but does not disclose side effects, permission requirements, reversibility, or any consequences of changing visibility. For a mutating operation, this is a notable transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single precise sentence with no filler. The core action, resource, and outcome are stated upfront, earning its place and avoiding redundant restatement of the parameter names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two simple required parameters and an output schema present, the description is almost sufficient. Nevertheless, no context is given about required permissions, side effects, or behavior on unauthorized operations. For a mutating tool without annotations, this small gap prevents full confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description maps 'private/public' to the 'private' boolean parameter, clarifying that true privately identifies the private state and false means public. However, it does not clarify the expected format of the 'repo' parameter (e.g., owner/repo), relying heavily on the parameter name. The description compensates minimally for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Update'), identifies the resource ('repository privacy/visibility settings'), and clarifies the exact outcome ('make it private or public'). It is distinct from the sibling read-only tools, so an agent can tell this tool's purpose immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: whenever a repository's visibility needs changing between private and public. However, it does not explicitly discuss when not to use it, mention alternatives, or state prerequisites such as required permissions or repository ownership, leaving usage context mostly implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 13 tool updatesv0.1.0
    • First observedanalyze_code_quality
    • First observedcheck_ci_status
    • First observedgenerate_change_summary
    • First observedget_project_context
    • First observedinspect_issue
    • First observedinspect_pr
    • First observedlist_directory
    • First observedread_file
    • First observedrecent_commits
    • First observedsearch_code
    • First observedsearch_local_files
    • First observedsearch_repos
    • First observedupdate_repo_visibility

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: repository search, code search, local file search, PR/issue inspection, CI status, and file analysis are clearly separated. The three search tools differ by target, and read/list/analyze local tools have unambiguous boundaries.

Naming Consistency4/5

Most tools follow a verb_noun snake_case pattern like search_repos, inspect_pr, read_file, and update_repo_visibility. The main inconsistency is recent_commits, which uses adjectival naming rather than an imperative verb, and get_project_context breaks the simple verb-noun pattern slightly.

Tool Count5/5

13 tools is a well-scoped count for the apparent purpose of reading and analyzing GitHub repositories alongside local project inspection. Every tool has a clear, non-redundant job and the set feels dense without being bloated.

Completeness3/5

There is strong coverage for inspecting and analyzing repos, PRs, issues, CI, and local code, and generate_change_summary provides a useful diff workflow. However, as a GitHub MCP server it lacks list/create/update operations for PRs and issues, forcing agents to know IDs in advance and making common collaborative workflows impossible.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dhananjayrbiraris/github-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server