Skip to main content
Glama

⚡ Omni-Tester: MCP-агент тестирования без галлюцинаций

Omni-Tester — это сервер Model Context Protocol (MCP), который оснащает AI-агентов (Claude, Cursor, Windsurf и других) основанным на доказательствах антигаллюцинационным движком валидации. Перестаньте позволять вашей LLM «угадывать», работает ли эндпоинт, — требуйте программных доказательств.

Агент взаимодействует напрямую с бэкенд-серверами, проверяя HTTP-статусы, заголовки ответов и JSON-полезные нагрузки, и выдаёт детерминированные, машинно проверенные результаты.


✅ Уже реализовано (детерминированное доказательство)

Эти уровни работают уже сегодня и возвращают машинно проверенные доказательства — без участия суждений LLM:

  • Слой 1 — проверка протокола и статуса: отправляет запрос и проверяет, что возвращённый HTTP-статус соответствует вашему явному ожиданию (например, 200 OK, 201 Created), помечая несовпадения и сбои 5xx.

  • Слой 2 — целостность схемы и полезной нагрузки: проверяет, что заголовок Content-Type равен application/json, разбирает тело как JSON и возвращает снимок полезной нагрузки. Если передать необязательный expected_schema, он также детерминированно обеспечивает наличие и тип каждого поля — верхнего уровня ("id"), вложенных через точечные пути ("address.geo.lat") и элементов списков по индексам ("items.0.id"). Поддерживаемые типы: int, float/number, str/string, bool, list/array, dict/object, null. (JSON true/false не принимается как int.)

Оба слоя выполняются всегда — сбой по статус-коду не подавляет диагностику полезной нагрузки, поэтому вы по-прежнему видите тело ошибки ответа 4xx/5xx.

Пример с контролем схемы:

run_api_4_layer_validation(
    endpoint_url="https://jsonplaceholder.typicode.com/users/1",
    expected_status=200,
    method="GET",
    expected_schema={"id": "int", "email": "str", "address.geo.lat": "str"},
)

Также есть экспериментальный инструмент run_ui_dom_checklist (Playwright), который загружает страницу в headless-браузере и сообщает количество форм, изображения без alt-тегов и ошибки консоли.


Related MCP server: agentseed

🗺️ Дорожная карта (ещё не реализовано)

Следующие возможности запланированы, но сейчас отсутствуют в коде. Они описаны здесь для прозрачности, а не как доступные функции:

  • Слой 3 — функциональная бизнес-логика: использование LLM для проверки того, что возвращённые данные логически соответствуют сценарию. (Примечание: это суждение на основе LLM, а не детерминированное доказательство.)

  • Слой 4 — проверка безопасности и граничных условий: внедрение вредоносных полезных нагрузок (строк SQL-инъекций, повреждённых заголовков, просроченных токенов аутентификации), чтобы убедиться, что API безопасно завершается сбоем.

  • Углублённый слой 2 (проверки вложенных типов): ✅ Готово — проверяются поля верхнего уровня, точечные вложенные пути и индексы списков. Оставшиеся идеи: поэлементная валидация по всему массиву (например, «у каждого элемента есть int id») и ограничения enum/формата.

  • Автономный API-агент: самостоятельный инженер по тестированию, который планирует сценарии, генерирует тестовый код на Python и самовосстанавливается при изменении схем.

  • API-агент-исследователь: динамически фаззит и связывает действия (например, извлекает токен из GET и подставляет его в PUT).

  • Журналы аудита: структурированный вывод в specs/api_plan.md, tests/api/ и data/reports/api_report_*.html.


📦 Установка

С помощью uv (рекомендуется):

uv venv
source .venv/bin/activate        # On Windows: .venv\Scripts\activate
uv sync                          # Install dependencies from pyproject.toml

Для инструмента UI-чеклиста один раз установите браузер Playwright:

uv run playwright install chromium

Проверьте, что сервер запускается (он общается по MCP через stdio и будет ждать клиента):

uv run omni-tester

🔌 Подключение к MCP-клиентам

Сервер запускается командой uv run omni-tester. Добавьте его в выбранный вами клиент ниже. Если uv отсутствует в PATH вашего клиента, укажите абсолютный путь к бинарному файлу uv в поле command.

Claude Code (CLI)

Добавьте его одной командой:

claude mcp add --transport stdio omni-tester -- uv run omni-tester

Или добавьте его вручную в .mcp.json уровня проекта:

{
  "mcpServers": {
    "omni-tester": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "omni-tester"],
      "env": {}
    }
  }
}

Claude Desktop

Отредактируйте claude_desktop_config.json (Настройки → Разработчик → Изменить конфигурацию):

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "omni-tester": {
      "command": "uv",
      "args": ["run", "omni-tester"],
      "env": {}
    }
  }
}

Перезапустите Claude Desktop после сохранения.

Cursor

Отредактируйте .cursor/mcp.json (для проекта) или ~/.cursor/mcp.json (глобально):

{
  "mcpServers": {
    "omni-tester": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "omni-tester"],
      "env": {}
    }
  }
}

Windsurf (Cascade)

Отредактируйте mcp_config.json (Настройки → Управление MCP-серверами → Просмотр конфигурации):

  • macOS/Linux: ~/.codeium/windsurf/mcp_config.json

  • Windows: %APPDATA%\Codeium\Windsurf\mcp_config.json

{
  "mcpServers": {
    "omni-tester": {
      "command": "uv",
      "args": ["run", "omni-tester"],
      "env": {}
    }
  }
}

Перезапустите Windsurf после сохранения.


🛠️ Инструменты

Инструмент

Статус

Назначение

run_api_4_layer_validation

✅ Слои 1–2

Проверяет HTTP-статус, Content-Type, корректность JSON и опционально тип/схему каждого поля (вложенные пути и пути списков)

run_ui_dom_checklist

🧪 Экспериментальный

Playwright DOM-чеклист (формы, alt-теги, ошибки консоли)

Примечание о названии: инструмент называется run_api_4_layer_validation для совместимости с будущими версиями, но сегодня реализованы только слои 1–2 (см. «Дорожная карта»).


🧪 Пример

Проверка живого эндпоинта с ожиданием 200:

run_api_4_layer_validation(
    endpoint_url="https://jsonplaceholder.typicode.com/users/1",
    expected_status=200,
    method="GET",
)

Результат:

Backend 4-Layer Validation Complete:
✅ Layer 1 PASS: Expected 200, received 200.
✅ Layer 2 PASS: Valid JSON payload returned.
Payload Snapshot: {'id': 1, 'name': 'Leanne Graham', ...}

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables coding agents to independently verify web changes by scanning pages, inspecting UI structure, generating Playwright reproductions, and executing tests with structured QA evidence.
    4
    0
    4
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI coding agents to enforce spec-driven development and verify code before it is marked done, using six tools that catch invented APIs, scan for hallucinated content, check plugin conformance, sandbox-run tests, validate schemas, and record audit evidence.
    771 npm
    8
    PolyForm Noncommercial 1.0.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to verify application changes by running browser workflows, executing independent state assertions, and producing replayable evidence.
    0
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables deterministic verification of AI agent decisions and actions, providing PASS/FAIL/ABSTAIN verdicts with replayable proofs and an optional signed receipt ledger.
    5 npm
    Apache 2.0