Skip to main content
Glama
vishalmurugan1986

mcp-github-tool-eval

GitHub Model Context Protocol (MCP) Server mit Tool-Calling-Evaluierung

Python 3.10+ Model Context Protocol Llama 3.1 70B FastMCP

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.md

Schnellstart & Verwendung

1. Installation

git clone https://github.com/vishalmurugan1986/github-mcp-server.git
cd github-mcp-server

pip install -r requirements.txt

2. 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.server

Verbinden 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_eval

Ergebnisse werden in eval/results.json gespeichert und mit vollständigen Metrik-Aufschlüsselungen ausgegeben.


Sicherheitsdesign-Prinzipien

  1. 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.py fest codiert. Eine unbestätigte Anfrage kann keine versehentliche Mutation verursachen.

  2. 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.

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