mcp-github-tool-eval
GitHub Model Context Protocol (MCP) Server with Tool-Calling Evaluation
Промышленный FastMCP-сервер GitHub, предоставляющий операции чтения и операции записи с подтверждением, в паре с оценочным стендом из 30 сценариев, оценивающим выбор инструментов, точность аргументов и безопасность подтверждения деструктивных действий.
Краткое резюме и матрица оценки
Вызов инструментов LLM-агентом требует строгих границ безопасности. Этот MCP-сервер обеспечивает подтверждение на уровне сервера для всех изменяющих действий: неподтверждённые запросы возвращают предварительные просмотры (dry-run) вместо выполнения изменений в GitHub.
Результаты бенчмарка (30 размеченных сценариев)
Оценка по бенчмарку из 30 сценариев, проверяющему стандартные вызовы инструментов, недостаточно определённые/неоднозначные запросы и деструктивные действия с подтверждением:
Метрика | Проход 1 (Zero-Shot) | Проход 3 (Оптимизированный) |
Точность выбора инструмента | 76,7% (23/30) | 90,0% (27/30) |
Точность аргументов (при верном инструменте) | 52,6% (10/19) | 100,0% (19/19) |
Точность флага подтверждения (деструктивные) | 50,0% (3/6) | 100,0% (7/7) |
— Категория стандартного выбора инструмента | 100,0% (8/8) | 100,0% (8/8) |
— Категория ошибок / деструктивных действий | 90,9% (10/11) | 90,9% (10/11) |
— Категория неоднозначных / отсутствующих аргументов | 25,0% (2/8) | 75,0% (6/8) |
Related MCP server: github-mcp-tool
Архитектура инструментов и операции
flowchart TD
A[User Request] --> B[LLM Tool-Calling Engine]
B --> C{Tool Category}
C -- Read Tool --> D[Execute GitHub API Call Directly]
D --> E[Return API Payload]
C -- Write / Destructive --> F{confirm == true ?}
F -- Yes --> G[Execute State Mutation on GitHub]
G --> H[Return Success / Number / URL]
F -- No --> I[Return Dry-Run Preview of Mutation]Доступные инструменты
Операции чтения (немедленное выполнение)
list_issues(owner, repo, state): Список открытых/закрытых задач в репозитории.get_issue(owner, repo, issue_number): Получение подробных метаданных для одной задачи.list_pull_requests(owner, repo, state): Список pull request'ов в репозитории.get_pull_request(owner, repo, pr_number): Получение сведений и информации о возможности слияния для PR.search_code(query, owner, repo): Поиск по кодовой базе GitHub глобально или в пределах репозитория.
Деструктивные операции (с подтверждением)
create_issue(owner, repo, title, body, confirm=False): Создаёт задачу только при подтверждении; в противном случае возвращает предварительный просмотр.close_issue(owner, repo, issue_number, confirm=False): Закрывает задачу только при подтверждении; в противном случае возвращает предварительный просмотр.add_comment(owner, repo, issue_number, body, confirm=False): Оставляет комментарий к задаче/PR только при подтверждении; в противном случае возвращает предварительный просмотр.merge_pull_request(owner, repo, pr_number, confirm=False): Выполняет слияние PR только при подтверждении; в противном случае возвращает предварительный просмотр.
Структура проекта
├── app/
│ ├── __init__.py # Public MCP server & client exports
│ ├── server.py # FastMCP server definition & tool routing
│ └── github_client.py # GitHub REST API client with dry-run previews
├── eval/
│ ├── __init__.py # Evaluation package
│ ├── tool_schemas.py # OpenAI-compatible function definitions & prompt
│ ├── test_set.json # 30 labeled evaluation test cases
│ └── run_eval.py # Benchmark harness scoring tool, args, and confirm flags
├── requirements.txt # Dependencies (mcp, requests, openai)
├── WRITEUP.md # Detailed evaluation report & iteration analysis
└── README.mdБыстрый старт и использование
1. Установка
git clone https://github.com/vishalmurugan1986/github-mcp-server.git
cd github-mcp-server
pip install -r requirements.txt2. Настройка окружения
export NVIDIA_API_KEY="nvapi-your-key-here"
# Optional: real GitHub write access
export GITHUB_TOKEN="ghp_your_personal_access_token"3. Запуск MCP-сервера
python -m app.serverПодключите MCP-клиент (например, Claude Desktop или пользовательских агентов) через стандартный ввод-вывод.
4. Запуск набора оценки вызова инструментов
python -m eval.run_evalРезультаты сохраняются в eval/results.json и выводятся с полной разбивкой по метрикам.
Принципы безопасности
Многоуровневое подтверждение: вместо того чтобы полагаться исключительно на инструкции в промпте, защитные проверки подтверждения жёстко прописаны непосредственно в
app/github_client.py. Неподтверждённый запрос не может привести к случайному изменению.Отказ при неоднозначности: модели предписано отказываться от выполнения и задавать уточняющие вопросы всякий раз, когда репозитории, номера задач или параметры не указаны, что позволяет избежать галлюцинаций с заполнителями.
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage repositories, users, releases, and automate GitHub workflows
Create, deploy, and operate MCP servers directly from your GitHub repositories.
GitHub MCP — wraps the GitHub public REST API (no auth required for public endpoints)
Access the GitHub API, enabling file operations, repository management, search functionality, and…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables management of GitHub issues, milestones, projects, and labels for a single repository via MCP tools.251 npm1ISC
- FlicenseNot gradedqualityDmaintenanceEnables managing GitHub repositories, files, and user information through MCP, with support for creating, updating, and deleting repository contents, as well as fetching user profiles.1-
- AlicenseNot gradedqualityCmaintenanceEnables self-hosted, read-only remote interaction with GitHub repositories, allowing listing repositories, searching code, and inspecting commits, pull requests, issues, and diffs via authenticated MCP clients.99 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables read-only browsing and querying of GitHub repositories, including listing repos, reading files, fetching READMEs, searching code, and viewing commit history via MCP.-