Skip to main content
Glama

MCP Agent Evaluation Harness

Un proyecto de referencia compacto para evaluar agentes de codificación que usan herramientas del Model Context Protocol. Este proyecto le da a un agente acceso controlado al repositorio, ejecuta comprobaciones repetibles, compara ejecuciones repetidas y devuelve un informe de verificación estructurado.

Qué demuestra el proyecto

  • Un servidor MCP con herramientas de listado, lectura, búsqueda y verificación del repositorio

  • Acceso a los archivos confinado a la raíz, con protección contra el recorrido de rutas

  • Ejecución determinista de comandos con locale, zona horaria y semilla hash de Python fijadas

  • Comprobación de patrones de código requeridos y prohibidos

  • Comparación de ejecuciones repetidas para detectar no determinismo

  • Material de referencia canónico para una tarea reproducible de corrección de errores

  • Pruebas unitarias con la biblioteca estándar y un flujo de trabajo de integración continua

Related MCP server: mcp-software-engineering-challenge

Arquitectura

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

El verificador principal no tiene ninguna dependencia de terceros. El adaptador MCP utiliza el SDK oficial de Python v2.

Inicio rápido

Ejecute las pruebas unitarias.

python -m unittest discover -s tests -v

Ejecute la tarea de evaluación incluida.

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

Instale el adaptador MCP e inicie el servidor stdio.

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

Herramientas MCP

Herramienta

Propósito

list_repository_files

Devuelve una lista de archivos estable y ordenada bajo la raíz configurada

read_repository_file

Lee un archivo UTF-8 mientras bloquea el recorrido de rutas

search_repository

Busca texto literal con orden determinista y límites de resultados

verify_solution

Ejecuta la especificación de la tarea y devuelve un informe estructurado

Especificación de la tarea

Cada tarea está definida como JSON y declara los archivos, los requisitos de código, el comando de verificación, el tiempo de espera y el número de repeticiones.

{
  "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
}

Límite de seguridad

Las comprobaciones de rutas protegen la raíz del repositorio configurada. El verificador de comandos está diseñado para definiciones de tareas locales de confianza. Ejecute código candidato no confiable dentro de un contenedor o de otro sandbox del sistema operativo.

Autor

Mohammed Ibrahim Sadiq

Licencia

MIT

Related MCP Connectors

Related MCP Servers