Skip to main content
Glama

MCP Agent Evaluation Harness

Ein kompaktes Referenzprojekt zur Evaluierung von Coding-Agenten, die Tools des Model Context Protocol verwenden. Das Harness verschafft einem Agenten kontrollierten Repository-Zugriff, führt wiederholbare Prüfungen aus, vergleicht wiederholte Ausführungen und gibt einen strukturierten Verifikationsbericht zurück.

Was das Projekt demonstriert

  • Ein MCP-Server mit Tools zum Auflisten, Lesen, Durchsuchen und Verifizieren von Repositories

  • Auf das Root-Verzeichnis begrenzter Dateizugriff mit Schutz vor Pfad-Traversierung

  • Deterministische Befehlsausführung mit festem Locale, fester Zeitzone und festem Python-Hash-Seed

  • Prüfungen für erforderliche und verbotene Codemuster

  • Vergleich wiederholter Läufe zur Erkennung von Nichtdeterminismus

  • Golden-Reference-Material für eine reproduzierbare Bugfixing-Aufgabe

  • Unit-Tests auf Basis der Standardbibliothek und ein Continuous-Integration-Workflow

Related MCP server: mcp-software-engineering-challenge

Architektur

MCP client or coding agent
          |
          v
Repository MCP tools
          |
          v
SafeWorkspace boundary
          |
          v
DeterministicVerifier
          |
          v
Structured VerificationReport

Der zentrale Verifizierer ist frei von Drittanbieter-Abhängigkeiten. Der MCP-Adapter verwendet das offizielle Python SDK v2.

Schnellstart

Führen Sie die Unit-Tests aus.

python -m unittest discover -s tests -v

Führen Sie die enthaltene Evaluierungsaufgabe aus.

PYTHONPATH=src python -m mcp_eval_harness.cli verify \
  examples/rounding-bug/task.json \
  examples/rounding-bug/workspace

Installieren Sie den MCP-Adapter und starten Sie den stdio-Server.

python -m pip install -e ".[mcp]"
mcp-eval serve

MCP-Tools

Tool

Zweck

list_repository_files

Gibt eine stabile, sortierte Dateiliste unter dem konfigurierten Root-Verzeichnis zurück

read_repository_file

Liest eine UTF-8-Datei und blockiert dabei Pfad-Traversierung

search_repository

Findet wörtlichen Text mit deterministischer Reihenfolge und Ergebnislimit

verify_solution

Führt die Aufgabespezifikation aus und gibt einen strukturierten Bericht zurück

Aufgabespezifikation

Jede Aufgabe ist als JSON definiert und legt die Dateien, die Code-Anforderungen, den Verifizierungsbefehl, das Timeout und die Wiederholungsanzahl fest.

{
  "task_id": "decimal-rounding-fix",
  "required_files": ["calculator.py", "test_calculator.py"],
  "required_patterns": {"calculator.py": ["Decimal", "ROUND_HALF_UP"]},
  "forbidden_patterns": {"calculator.py": ["round("]},
  "command": ["python", "-m", "unittest", "discover", "-s", ".", "-p", "test_*.py"],
  "timeout_seconds": 10,
  "repeat_count": 2
}

Sicherheitsgrenze

Die Pfadprüfungen schützen das konfigurierte Repository-Root. Der Befehlsverifizierer ist für vertrauenswürdige lokale Aufgabendefinitionen ausgelegt. Führen Sie nicht vertrauenswürdigen Kandidatencode in einem Container oder einer anderen Betriebssystem-Sandbox aus.

Autor

Mohammed Ibrahim Sadiq

Lizenz

MIT

Related MCP Connectors

Related MCP Servers