Skip to main content
Glama
vishalmurugan1986

mcp-github-tool-eval

GitHub Model Context Protocol (MCP) Server with Tool-Calling Evaluation

Python 3.10+ Model Context Protocol Llama 3.1 70B FastMCP

Промышленный 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.txt

2. Настройка окружения

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 и выводятся с полной разбивкой по метрикам.


Принципы безопасности

  1. Многоуровневое подтверждение: вместо того чтобы полагаться исключительно на инструкции в промпте, защитные проверки подтверждения жёстко прописаны непосредственно в app/github_client.py. Неподтверждённый запрос не может привести к случайному изменению.

  2. Отказ при неоднозначности: модели предписано отказываться от выполнения и задавать уточняющие вопросы всякий раз, когда репозитории, номера задач или параметры не указаны, что позволяет избежать галлюцинаций с заполнителями.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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 npm
    MIT