mcp-github-tool-eval
GitHub Model Context Protocol (MCP) Server mit Tool-Calling-Evaluierung
Ein produktionsreifer FastMCP GitHub-Server, der Lese- und bestätigungsgeschützte Schreiboperationen bereitstellt, gepaart mit einer 30-Fälle-Evaluierungs-Harness, die Tool-Auswahl, Argumentgenauigkeit und Sicherheit bei destruktiven Bestätigungen bewertet.
Executive Summary & Evaluierungsmatrix
LLM-Agent-Tool-Calling erfordert strenge Sicherheitsgrenzen. Dieser MCP-Server erzwingt serverseitige Bestätigungs-Gates für alle mutierenden Aktionen: Unbestätigte Anfragen geben Dry-Run-Vorschauen zurück, anstatt Mutationen auf GitHub auszuführen.
Benchmark-Leistung (30 beschriftete Szenarien)
Bewertet anhand eines 30-Fälle-Benchmarks, der Standard-Tool-Aufrufe, unterbestimmte/mehrdeutige Anfragen und destruktive, bestätigungsgeschützte Aktionen testet:
Metrik | Durchgang 1 (Zero-Shot) | Durchgang 3 (optimiert) |
Genauigkeit der Tool-Auswahl | 76,7 % (23/30) | 90,0 % (27/30) |
Argumentgenauigkeit (bei korrektem Tool) | 52,6 % (10/19) | 100,0 % (19/19) |
Genauigkeit des Bestätigungs-Flags (destruktiv) | 50,0 % (3/6) | 100,0 % (7/7) |
— Kategorie Standard-Tool-Auswahl | 100,0 % (8/8) | 100,0 % (8/8) |
— Kategorie Fehler / destruktive Aktion | 90,9 % (10/11) | 90,9 % (10/11) |
— Kategorie Mehrdeutig / fehlendes Argument | 25,0 % (2/8) | 75,0 % (6/8) |
Related MCP server: github-mcp-tool
Tool-Architektur & Operationen
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]Verfügbare Tools
Leseoperationen (sofortige Ausführung)
list_issues(owner, repo, state): Listet offene/geschlossene Issues in einem Repository auf.get_issue(owner, repo, issue_number): Ruft detaillierte Metadaten für ein einzelnes Issue ab.list_pull_requests(owner, repo, state): Listet Pull Requests in einem Repository auf.get_pull_request(owner, repo, pr_number): Ruft Details und Merge-Fähigkeit für einen PR ab.search_code(query, owner, repo): Durchsucht die GitHub-Codebasis global oder auf ein Repository beschränkt.
Destruktive Operationen (bestätigungsgeschützt)
create_issue(owner, repo, title, body, confirm=False): Erstellt ein Issue nur bei Bestätigung; gibt andernfalls eine Vorschau zurück.close_issue(owner, repo, issue_number, confirm=False): Schließt ein Issue nur bei Bestätigung; gibt andernfalls eine Vorschau zurück.add_comment(owner, repo, issue_number, body, confirm=False): Kommentiert ein Issue/PR nur bei Bestätigung; gibt andernfalls eine Vorschau zurück.merge_pull_request(owner, repo, pr_number, confirm=False): Merged einen PR nur bei Bestätigung; gibt andernfalls eine Vorschau zurück.
Projektstruktur
├── 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.mdSchnellstart & Verwendung
1. Installation
git clone https://github.com/vishalmurugan1986/github-mcp-server.git
cd github-mcp-server
pip install -r requirements.txt2. Umgebungskonfiguration
export NVIDIA_API_KEY="nvapi-your-key-here"
# Optional: real GitHub write access
export GITHUB_TOKEN="ghp_your_personal_access_token"3. Ausführen des MCP-Servers
python -m app.serverVerbinden Sie einen MCP-Client (wie Claude Desktop oder benutzerdefinierte Agenten) über Standard-I/O.
4. Ausführen der Tool-Calling-Evaluierungs-Suite
python -m eval.run_evalErgebnisse werden in eval/results.json gespeichert und mit vollständigen Metrik-Aufschlüsselungen ausgegeben.
Sicherheitsdesign-Prinzipien
Bestätigung mit Verteidigung in der Tiefe: Anstatt sich ausschließlich auf Prompt-Anweisungen zu verlassen, sind Bestätigungs-Guards direkt in
app/github_client.pyfest codiert. Eine unbestätigte Anfrage kann keine versehentliche Mutation verursachen.Ablehnung von Mehrdeutigkeiten: Das Modell wird angewiesen, die Ausführung zu verweigern und klärende Fragen zu stellen, wenn Repositorys, Issue-Nummern oder Parameter nicht angegeben sind, um Platzhalter-Halluzinationen zu vermeiden.
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.-