api-testing-agent
MCP-агент тестирования API
AI-агент для тестирования API, который использует Model Context Protocol (MCP) для автоматизации генерации тест-кейсов API, их выполнения и анализа сбоев.
Что он делает
Обнаруживает конечные точки из спецификации OpenAPI/Swagger (через MCP-инструмент).
Генерирует позитивные и негативные тестовые сценарии для каждой конечной точки с помощью LLM (LangChain + OpenAI) — валидные входные данные, отсутствующие обязательные поля, неверные типы, граничные значения, сбои аутентификации и т.д.
Выполняет каждый тест-кейс против реального API через MCP-инструменты, которые отправляют запросы, проверяют ответы и анализируют HTTP-статусы.
Анализирует сбои, сравнивая ожидаемые и фактические ответы и запрашивая у LLM объяснение, почему тест не прошёл и насколько это критично.
Формирует отчёт в виде структурированного Markdown/JSON тестового отчёта.
Сервис FastAPI оборачивает весь конвейер, чтобы его можно было запускать по HTTP (POST /agent/run) — например, из CI, планировщика или UI, — а MCP-сервер можно также запускать отдельно и подключать к любому MCP-совместимому клиенту (Claude Desktop, Claude Code и т.д.).
Related MCP server: MCP-QA
Архитектура
┌─────────────────────┐ OpenAPI spec / target base URL
│ FastAPI Service │◄──────────────────────────────────
│ (api/main.py) │
└──────────┬───────────┘
│ triggers
┌──────────▼───────────┐
│ Testing Agent │
│ (agent/*.py) │
│ │
│ 1. TestGenerator │──uses──► OpenAI (LangChain)
│ (positive/negative │
│ scenarios) │
│ │
│ 2. TestExecutor │──calls──► MCP Client ──stdio──► MCP Server
│ (runs each case) │ │
│ │ ┌───────┴────────┐
│ 3. FailureAnalyzer │ │ MCP Tools: │
│ (LLM explains diff) │ │ - discover_ │
│ │ │ endpoints │
│ 4. ReportGenerator │ │ - send_request │
│ (md/json report) │ │ - validate_ │
└─────────────────────────┘ │ response │
│ - analyze_ │
│ status_code │
└────────┬───────┘
│ HTTP
┌────────▼───────┐
│ Target API │
│ (any REST API, │
│ e.g. sample_ │
│ target_api/) │
└─────────────────┘Структура проекта
mcp-api-testing-agent/
├── mcp_server/
│ ├── server.py # MCP server (FastMCP) exposing the 4 tools
│ └── tools/
│ ├── discover.py # discover_endpoints — parses OpenAPI spec
│ ├── request_tool.py # send_request — issues HTTP calls
│ ├── validate.py # validate_response — schema/status checks
│ └── status_analyzer.py # analyze_status_code — status code semantics
├── agent/
│ ├── mcp_client.py # stdio MCP client used by the agent
│ ├── test_generator.py # LLM-based positive/negative test generation
│ ├── test_executor.py # runs generated test cases via MCP tools
│ ├── failure_analyzer.py # LLM explains expected-vs-actual mismatches
│ └── report_generator.py # Markdown + JSON report writer
├── api/
│ └── main.py # FastAPI app: POST /agent/run, GET /agent/reports/{id}
├── schemas/
│ └── models.py # Pydantic models shared across the app
├── sample_target_api/
│ └── demo_api.py # tiny FastAPI service to test the agent against
├── scripts/
│ └── run_agent.py # CLI entrypoint (no FastAPI needed)
├── reports/ # generated test reports land here
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── .env.exampleУстановка
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # add your OPENAI_API_KEYЗапуск демонстрационного целевого API (небольшой пример API для тестирования)
uvicorn sample_target_api.demo_api:app --port 9000Это открывает демонстрационный API «Task Manager» с CRUD-эндпоинтами /tasks и сгенерированной OpenAPI-спецификацией по адресу http://localhost:9000/openapi.json.
Запуск агента через CLI
python scripts/run_agent.py --spec http://localhost:9000/openapi.json --base-url http://localhost:9000В результате будут сгенерированы тест-кейсы, выполнены их прогоны, проанализированы сбои и записан отчёт в reports/report_<timestamp>.md и .json.
Запуск агента как HTTP-сервиса
uvicorn api.main:app --port 8000curl -X POST http://localhost:8000/agent/run \
-H "Content-Type: application/json" \
-d '{"spec_url": "http://localhost:9000/openapi.json", "base_url": "http://localhost:9000"}'Запуск MCP-сервера отдельно
Чтобы подключить инструменты к MCP-совместимому клиенту (Claude Desktop, Claude Code и т.д.) вместо встроенного агента:
python -m mcp_server.serverЗатем добавьте его в конфигурацию вашего MCP-клиента, например, для Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"api-testing-agent": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"cwd": "/absolute/path/to/mcp-api-testing-agent"
}
}
}Запуск всего с Docker
docker compose up --buildЭто запускает демонстрационное целевое API, FastAPI-сервис агента тестирования на базе MCP и монтирует каталог ./reports, чтобы сгенерированные отчёты были доступны на хостовой машине.
Пример вывода отчёта
# API Test Report — 2026-02-03T10:15:00
Target: http://localhost:9000
Total: 18 Passed: 15 Failed: 3 Pass rate: 83%
## Failures
### POST /tasks — missing required field "title" (negative test)
Expected: 422 Unprocessable Entity
Actual: 500 Internal Server Error
Analysis: The endpoint does not validate the request body before hitting the
database layer, so a missing "title" causes an unhandled exception instead
of a client-error response. Severity: High — indicates missing input
validation.Замечания по адаптации под реальный проект
Замените
sample_target_api/на ваш настоящий сервис или укажите--spec/spec_urlна любой работающий OpenAPI/Swagger JSON-эндпоинт.Промпт в
test_generator.pyможно расширить доменными правилами (например, требуемые заголовки аутентификации, ограничения частоты запросов, ID арендаторов).Для CI запускайте
scripts/run_agent.pyкак шаг пайплайна и завершайте сборку с ошибкой, еслиreport["summary"]["failed"] > 0.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server that provides tools for exploring and testing APIs through Swagger/OpenAPI documentation.517612MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server for the comprehensive analysis of Swagger 2.0 and OpenAPI 3.x contracts. It allows users to extract detailed information about endpoints, request/response schemas, parameters, and security configurations from API documentation.
- AlicenseAqualityFmaintenanceMCP server for API test case generation from Swagger/OpenAPI specs. Parses Swagger 2.0 and OpenAPI 3.x, generates test cases across 8 categories (positive, negative, boundary, auth, security, idempotency, pagination, business logic), and exports to Postman, TestRail, Allure, k6, pytest, Gherkin, and CSV. Supports internal corporate APIs with auth headers. Auto-saves export files to your working di10112MIT
- AlicenseAqualityCmaintenanceParses Swagger 2.0 and OpenAPI 3.x specifications, exposing API endpoints, schemas, and authentication through MCP tools with local caching to reduce token usage.11161MIT
Related MCP Connectors
MCP server for AI access to Swagger by SmartBear.
APIs.guru MCP — keyless directory of 2,500+ public APIs and their OpenAPI specs.
Search, document and execute authenticated API calls across 700+ apps via one MCP server
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SHREELASYABEZAWADA/Mcp-Api-Testing-Agent--Model-Context-Protocol'
If you have feedback or need assistance with the MCP directory API, please join our Discord server