Skip to main content
Glama

Оценочный стенд для агентов MCP

Компактный справочный проект для оценки агентов, пишущих код и использующих инструменты Model Context Protocol. Стенд даёт агенту контролируемый доступ к репозиторию, выполняет повторяемые проверки, сравнивает повторные запуски и возвращает структурированный отчёт о верификации.

Что демонстрирует проект

  • MCP-сервер с инструментами для вывода списка файлов репозитория, чтения, поиска и верификации

  • Доступ к файлам, ограниченный корневым каталогом, с защитой от обхода пути

  • Детерминированное выполнение команд с фиксированной локалью, часовым поясом и зерном хэширования Python

  • Проверки обязательных и запрещённых шаблонов кода

  • Сравнение повторных запусков для обнаружения недетерминированности

  • Эталонные материалы для воспроизводимой задачи исправления ошибок

  • Модульные тесты на стандартной библиотеке и конвейер непрерывной интеграции

Related MCP server: mcp-software-engineering-challenge

Архитектура

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

Основной верификатор не имеет сторонних зависимостей. MCP-адаптер использует официальный Python SDK v2.

Быстрый старт

Запустите модульные тесты.

python -m unittest discover -s tests -v

Запустите включённую оценочную задачу.

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

Установите MCP-адаптер и запустите stdio-сервер.

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

Инструменты MCP

Инструмент

Назначение

list_repository_files

Возвращает стабильный, отсортированный список файлов в пределах настроенного корневого каталога

read_repository_file

Читает один файл в кодировке UTF-8, блокируя обход пути

search_repository

Находит литеральный текст с детерминированным порядком и ограничением результатов

verify_solution

Выполняет спецификацию задачи и возвращает структурированный отчёт

Спецификация задачи

Каждая задача представляет собой JSON и объявляет пути файлов, требования к коду, команду верификации, тайм-аут и количество повторов.

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

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

Проверки пути защищают настроенный корневой каталог репозитория. Верификатор команд предназначен для доверенных локальных определений задач. Запускайте недоверенный код кандидата в контейнере или другой песочнице операционной системы.

Автор

Mohammed Ibrahim Siddiq

Лицензия

MIT

Related MCP Connectors

Related MCP Servers