API Tester

Este servidor MCP aceita documentos swagger/postman como entrada. Em seguida, gera cenários de teste de API e carga, executa os testes e gera o relatório de execução.

Documentação

Servidor MCP API Tester

npm (scoped) npm downloads License: MIT

Um servidor abrangente do Model Context Protocol (MCP) para engenheiros de QA/SDET que fornece recursos de teste de API com suporte a Swagger/OpenAPI e coleções do Postman.

🎉 Agora disponível no NPM! Instale com npx @kirti676/api-tester-mcp@latest

🆕 Novidades

  • ✅ Rastreamento de Progresso Aprimorado - Progresso em tempo real com percentuais de conclusão e ETA
  • ✅ Barras de Progresso Visuais - Barras de progresso ASCII com notificações de marcos
  • ✅ Métricas de Desempenho - Cálculos de throughput e resumos de execução
  • ✅ Publicado no NPM - Instale instantaneamente com NPX
  • ✅ Integração com VS Code - Botões de instalação com um clique
  • ✅ Configuração Simplificada - Sem necessidade de instalação manual do Python
  • ✅ Multiplataforma - Funciona em Windows, macOS e Linux
  • ✅ Atualizações Automáticas - Sempre obtenha a versão mais recente com @latest

🚀 Primeiros Passos

📦 Instalação

O servidor MCP API Tester pode ser usado diretamente com npx sem qualquer instalação:

npx @kirti676/api-tester-mcp@latest

⚡ Instalação Rápida:

Install in VS Code Install in VS Code Insiders

🤖 Claude Desktop

Siga o guia de instalação do MCP, use a configuração padrão abaixo:

{
  "mcpServers": {
    "api-tester": {
      "command": "npx",
      "args": ["@kirti676/api-tester-mcp@latest"]
    }
  }
}

🔗 Outros Clientes MCP

A configuração padrão funciona com a maioria dos clientes MCP:

{
  "mcpServers": {
    "api-tester": {
      "command": "npx",
      "args": ["@kirti676/api-tester-mcp@latest"]
    }
  }
}

🖥️ Clientes Suportados:

🐍 Instalação com Python (Alternativa)

pip install api-tester-mcp

💻 A partir do Código Fonte

git clone https://github.com/kirti676/api_tester_mcp.git
cd api_tester_mcp
npm install

⚡ Início Rápido

Experimente o servidor MCP API Tester imediatamente:

# Run the server
npx @kirti676/api-tester-mcp@latest

# Check version
npx @kirti676/api-tester-mcp@latest --version

# Get help
npx @kirti676/api-tester-mcp@latest --help

Para clientes MCP como Claude Desktop, use esta configuração:

{
  "mcpServers": {
    "api-tester": {
      "command": "npx",
      "args": ["@kirti676/api-tester-mcp@latest"]
    }
  }
}

✨ Recursos

  • 📥 Suporte a Entrada: Documentos OpenAPI/Swagger, coleções do Postman e esquemas GraphQL
  • 🔄 Geração de Testes: Geração automática de cenários de teste de API e carga
  • 🌐 Suporte Multilíngue: Gere testes em TypeScript/Playwright, JavaScript/Jest, Python/pytest e mais
  • ⚡ Execução de Testes: Execute testes gerados com relatórios detalhados
  • 🔐 Detecção Inteligente de Autenticação: Análise automática de variáveis de ambiente e orientação de configuração
  • 🔐 Autenticação: Suporte a token Bearer e chave de API via set_env_vars
  • 📊 Relatórios HTML: Relatórios bonitos e acessíveis via recursos MCP
  • 📈 Progresso em Tempo Real: Atualizações ao vivo com barras de progresso e percentuais de conclusão
  • ⏱️ Cálculos de ETA: Tempo estimado para conclusão de todas as operações
  • 🎯 Rastreamento de Marcos: Notificações especiais em marcos importantes de progresso (25%, 50%, 75%, etc.)
  • 📊 Métricas de Desempenho: Cálculos de throughput e resumos de execução
  • ✅ Validação de Esquema: Geração de corpo de requisição a partir de exemplos de esquema
  • 🎯 Asserções: Asserções de código de status por endpoint (2xx, 4xx, 5xx)
  • 📦 Geração de Projetos: Estrutura completa de projetos com dependências e configuração

🌐 Geração de Testes Multilíngue

O MCP API Tester agora suporta a geração de código de teste em vários idiomas de programação e frameworks de teste:

🔧 Combinações de Idioma/Framework Suportadas

IdiomaFrameworkDescriçãoCaso de Uso
📘 TypeScript🎭 PlaywrightTestes E2E modernos com excelente suporte a API🏢 Aplicações web empresariais
📘 TypeScript🚀 SupertestTestes de API focados em Express.js🟢 Serviços backend Node.js
📙 JavaScript🃏 JestFramework de teste popular com bom ecossistema🔧 Testes de API gerais
📙 JavaScript🌲 CypressTestes E2E com ótima experiência de desenvolvedor🌐 Aplicações full-stack
🐍 Python🧪 pytestTestes abrangentes com fixtures e plugins📊 APIs com muitos dados e serviços de ML
🐍 Python📡 requestsTestes HTTP simples para validação rápida⚡ Prototipagem rápida e scripts

🎯 Fluxo de Trabalho de Seleção de Idioma

// 1. Get available languages and frameworks
const languages = await mcp.call("get_supported_languages");

// 2. Choose your preferred combination
await mcp.call("ingest_spec", {
  spec_type: "openapi",
  file_path: "./path/to/your/api-spec.json",
  preferred_language: "typescript",    // python, typescript, javascript
  preferred_framework: "playwright"     // varies by language
});

// 3. Generate test cases with code
await mcp.call("generate_test_cases", {
  language: "typescript",
  framework: "playwright"
});

// 4. Get complete project setup
await mcp.call("generate_project_files", {
  language: "typescript",
  framework: "playwright",
  project_name: "my-api-tests",
  include_examples: true
});

📁 Estrutura de Projeto Gerada

A ferramenta generate_project_files cria um projeto completo e pronto para execução:

📘 TypeScript + Playwright:

my-api-tests/
├── 📦 package.json          # Dependencies & scripts
├── ⚙️ playwright.config.ts  # Playwright configuration
├── 📂 tests/
│   └── 🧪 api.spec.ts      # Generated test code
└── 📖 README.md            # Setup instructions

🐍 Python + pytest:

my-api-tests/
├── 📋 requirements.txt     # Python dependencies
├── ⚙️ pytest.ini         # pytest configuration
├── 📂 tests/
│   └── 🧪 test_api.py    # Generated test code
└── 📖 README.md          # Setup instructions

📙 JavaScript + Jest:

my-api-tests/
├── 📦 package.json       # Dependencies & scripts
├── ⚙️ jest.config.js     # Jest configuration
├── 📂 tests/
│   └── 🧪 api.test.js   # Generated test code
└── 📖 README.md         # Setup instructions

🎯 Recursos Específicos do Framework

  • 🎭 Playwright: Automação de navegador, execução paralela, relatórios detalhados
  • 🃏 Jest: Testes de snapshot, mocks, modo de observação para desenvolvimento
  • 🧪 pytest: Fixtures, testes parametrizados, ecossistema extenso de plugins
  • 🌲 Cypress: Depuração interativa, depuração com viagem no tempo, testes em navegador real
  • 🚀 Supertest: Integração com Express.js, testes de middleware
  • 📡 requests: Chamadas de API simples, gerenciamento de sessão, auxiliares de autenticação

📈 Rastreamento de Progresso

O MCP API Tester inclui rastreamento abrangente de progresso para todas as operações:

📊 Indicadores Visuais de Progresso

🎯 API Test Execution: [██████████░░░░░░░░░░] 50.0% (5/10) | ETA: 2.5s - GET /api/users ✅

🔥 Recursos:

  • 📊 Barras de Progresso: Barras de progresso ASCII com indicadores preenchidos/vazios
  • 📈 Percentuais de Conclusão: Percentual de conclusão em tempo real
  • ⏰ Cálculos de ETA: Tempo estimado para conclusão com base no desempenho atual
  • 🎯 Notificações de Marcos: Destaque especial em pontos-chave de progresso
  • ⚡ Métricas de Desempenho: Estatísticas de throughput e tempo
  • 📋 Contexto da Operação: Informações detalhadas sobre a etapa atual em execução

✅ Disponível para:

  • 🎬 Geração de cenários
  • 🧪 Geração de casos de teste
  • 🚀 Execução de testes de API
  • ⚡ Execução de testes de carga
  • 🔄 Todas as operações de longa duração

🛠️ Ferramentas MCP

O servidor fornece 11 ferramentas MCP abrangentes com especificações detalhadas de parâmetros:

1. 📥 ingest_spec - Carregar Especificações de API

Carregue OpenAPI/Swagger, coleções do Postman ou esquemas GraphQL com preferências de idioma/framework

{
  "spec_type": "openapi",           // openapi, swagger, postman, graphql (optional, auto-detected)
  "file_path": "./api-spec.json",   // Path to JSON, YAML, or GraphQL schema file (required)
  "preferred_language": "python",   // python, typescript, javascript (optional, default: python)
  "preferred_framework": "requests" // pytest, requests, playwright, jest, cypress, supertest (optional, default: requests)
}

2. 🔧 set_env_vars - Configurar Autenticação e Ambiente

Defina variáveis de ambiente com validação automática e orientação

{
  "variables": {},                  // Dictionary of custom environment variables (optional)
  "baseUrl": null,                 // API base URL (optional)
  "auth_bearer": null,             // Bearer/JWT token (optional)
  "auth_apikey": null,             // API key (optional)
  "auth_basic": null,              // Base64 encoded credentials (optional)
  "auth_username": null,           // Username for basic auth (optional)
  "auth_password": null            // Password for basic auth (optional)
}

3. 🎬 generate_scenarios - Criar Cenários de Teste

Gere cenários de teste a partir de especificações ingeridas

{
  "include_negative_tests": true,   // Generate failure scenarios (default: true)
  "include_edge_cases": true        // Generate boundary conditions (default: true)
}

4. 🧪 generate_test_cases - Converter em Testes Executáveis

Converta cenários em casos de teste executáveis no idioma/framework preferido

{
  "scenario_ids": null              // Array of scenario IDs or null for all (optional)
}

5. 🚀 run_api_tests - Executar Testes de API

Execute testes de API com resultados detalhados e relatórios

{
  "test_case_ids": null,           // Array of test case IDs or null for all (optional)
  "max_concurrent": 10             // Number of concurrent requests 1-50 (default: 10)
}

6. ⚡ run_load_tests - Executar Testes de Desempenho

Execute testes de carga/desempenho com parâmetros configuráveis

{
  "test_case_ids": null,           // Array of test case IDs or null for all (optional)
  "duration": 60,                  // Test duration in seconds (default: 60)
  "users": 10,                     // Number of concurrent virtual users (default: 10)
  "ramp_up": 10                    // Ramp up time in seconds (default: 10)
}

7. 🌐 get_supported_languages - Listar Opções de Idioma/Framework

Obtenha a lista de idiomas de programação e frameworks de teste suportados

// No parameters required
{}

8. 📦 generate_project_files - Gerar Projetos Completos

Gere estrutura completa de projetos com dependências e configuração

{
  "project_name": null,            // Project folder name (optional, auto-generated if null)
  "include_examples": true         // Include example test files (default: true)
}

9. 📁 get_workspace_info - Informações do Workspace

Obtenha informações sobre o diretório do workspace e locais de geração de arquivos

// No parameters required
{}

10. 🔍 debug_file_system - Diagnóstico do Sistema de Arquivos

Obtenha informações abrangentes do workspace e diagnóstico do sistema de arquivos

// No parameters required
{}

11. 📊 get_session_status - Status da Sessão e Progresso

Recupere informações atuais da sessão com detalhes de progresso

// No parameters required
{}

📚 Recursos MCP

  • file://reports - Liste todos os relatórios de teste disponíveis
  • file://reports/{report_id} - Acesse relatórios de teste HTML individuais

💡 Prompts MCP

  • create_api_test_plan - Gere planos abrangentes de teste de API
  • analyze_test_failures - Analise falhas de teste e forneça recomendações

🔍 Análise Inteligente de Variáveis de Ambiente

O MCP API Tester agora analisa automaticamente suas especificações de API para detectar variáveis de ambiente necessárias e fornece orientação útil de configuração:

🎯 Detecção Automática

  • 🔐 Esquemas de Autenticação: Tokens Bearer, chaves de API, autenticação básica, OAuth2
  • 🌐 URLs Base: Extraídas de servidores/hosts da especificação
  • 🔗 Variáveis de Template: Variáveis de coleção do Postman como {{baseUrl}}, {{authToken}}
  • 📍 Parâmetros de Caminho: Valores dinâmicos em caminhos como /users/{userId}

💡 Sugestões Inteligentes

// 1. Ingest specification - automatic analysis included
const result = await mcp.call("ingest_spec", {
  spec_type: "openapi",
  file_path: "./api-specification.json"
});

// Check the setup message for immediate guidance
console.log(result.setup_message);
// "⚠️ 2 required environment variable(s) detected..."

// 2. Get detailed setup instructions
const suggestions = await mcp.call("get_env_var_suggestions");
console.log(suggestions.setup_instructions);
// Provides copy-paste ready configuration examples

🎯 Chaves de Parâmetros Padrão

Todas as ferramentas MCP agora fornecem chaves de parâmetros padrão úteis para orientar os usuários sobre quais valores podem definir:

🔧 Variáveis de Ambiente (set_env_vars)

🔑 TODOS OS PARÂMETROS SÃO OPCIONAIS - Forneça apenas o que precisar:

// Option 1: Just the base URL
await mcp.call("set_env_vars", {
  baseUrl: "https://api.example.com/v1"
});

// Option 2: Just authentication
await mcp.call("set_env_vars", {
  auth_bearer: "your-jwt-token-here"
});

// Option 3: Multiple parameters
await mcp.call("set_env_vars", {
  baseUrl: "https://api.example.com/v1",
  auth_bearer: "your-jwt-token",
  auth_apikey: "your-api-key"
});

// Option 4: Using variables dict for custom values
await mcp.call("set_env_vars", {
  variables: {
    "baseUrl": "https://api.example.com/v1",
    "custom_header": "custom-value"
  }
});

🌐 Seleção de Idioma e Framework

Valores padrão ajudam você a entender as opções disponíveis:

// Ingest with defaults shown
await mcp.call("ingest_spec", {
  spec_type: "openapi",        // openapi, swagger, postman
  file_path: "./api-spec.json", // Path to JSON or YAML specification file
  preferred_language: "python", // python, typescript, javascript
  preferred_framework: "requests" // pytest, requests, playwright, jest, cypress, supertest
});

// Project generation with defaults
await mcp.call("generate_project_files", {
  language: "python",          // python, typescript, javascript
  framework: "requests",       // Framework matching the language
  project_name: "api-tests",   // Project folder name
  include_examples: true       // Include example test files
});

⚡ Parâmetros de Execução de Testes

Padrões claros para ajuste de desempenho:

// API tests with concurrency control
await mcp.call("run_api_tests", {
  test_case_ids: null,        // ["test_1", "test_2"] or null for all
  max_concurrent: 10          // Number of concurrent requests (1-50)
});

// Load tests with performance parameters  
await mcp.call("run_load_tests", {
  test_case_ids: null,        // ["test_1", "test_2"] or null for all
  duration: 60,               // Test duration in seconds
  users: 10,                  // Number of concurrent virtual users
  ramp_up: 10                 // Ramp up time in seconds
});

🔧 Exemplo de Configuração

// NEW: Check supported languages and frameworks
const languages = await mcp.call("get_supported_languages");
console.log(languages.supported_combinations);

// Ingest specification with language preferences
await mcp.call("ingest_spec", {
  spec_type: "openapi",
  file_path: "./openapi-specification.json",
  preferred_language: "typescript",
  preferred_framework: "playwright"
});

// Set environment variables for authentication
await mcp.call("set_env_vars", {
  variables: {
    "baseUrl": "https://api.example.com",
    "auth_bearer": "your-bearer-token",
    "auth_apikey": "your-api-key"
  }
});

// Generate test scenarios
await mcp.call("generate_scenarios", {
  include_negative_tests: true,
  include_edge_cases: true
});

// Generate test cases in TypeScript/Playwright
await mcp.call("generate_test_cases", {
  language: "typescript",
  framework: "playwright"
});

// Generate complete project files
await mcp.call("generate_project_files", {
  language: "typescript",
  framework: "playwright",
  project_name: "my-api-tests",
  include_examples: true
});

// Run API tests (still works with existing execution engine)
await mcp.call("run_api_tests", {
  max_concurrent: 5
});

🚀 Exemplo Completo de Fluxo de Trabalho

Aqui está um exemplo completo de teste da API Petstore:

# 1. Start the MCP server
npx @kirti676/api-tester-mcp@latest

Depois, no seu cliente MCP (como Claude Desktop):

// 1. Load the Petstore OpenAPI spec
await mcp.call("ingest_spec", {
  spec_type: "openapi",
  file_path: "./examples/petstore_openapi.json"
});

// 2. Set environment variables
await mcp.call("set_env_vars", {
  pairs: {
    "baseUrl": "https://petstore.swagger.io/v2",
    "auth_apikey": "special-key"
  }
});

// 3. Generate test cases
const tests = await mcp.call("get_generated_tests");

// 4. Run API tests
const result = await mcp.call("run_api_tests");

// 5. View results in HTML report
const reports = await mcp.call("list_resources", {
  uri: "file://reports"
});

📖 Exemplos de Uso

🔄 Fluxo de Trabalho Básico de Teste de API

  1. 📥 Ingerir Especificação de API

    {
      "tool": "ingest_spec",
      "params": {
        "spec_type": "openapi",
        "content": "{ ... your OpenAPI spec ... }"
      }
    }
    
  2. 🔐 Configurar Autenticação

    {
      "tool": "set_env_vars", 
      "params": {
        "variables": {
          "auth_bearer": "your-token",
          "baseUrl": "https://api.example.com"
        }
      }
    }
    
  3. 🚀 Gerar e Executar Testes

    {
      "tool": "generate_scenarios",
      "params": {
        "include_negative_tests": true
      }
    }
    
  4. 📊 Visualizar Resultados

    • 📄 Acesse relatórios HTML via recursos MCP
    • 📈 Obtenha status da sessão e estatísticas

🚀 Fluxo de Trabalho de Teste de API GraphQL

  1. 📥 Ingerir Esquema GraphQL

    {
      "tool": "ingest_spec",
      "params": {
        "spec_type": "graphql",
        "file_path": "./schema.graphql"
      }
    }
    
  2. 🔐 Configurar Endpoint GraphQL

    {
      "tool": "set_env_vars", 
      "params": {
        "graphqlEndpoint": "https://api.example.com/graphql",
        "auth_bearer": "your-jwt-token"
      }
    }
    
  3. 🧪 Gerar Testes GraphQL

    {
      "tool": "generate_test_cases",
      "params": {
        "preferred_language": "python",
        "preferred_framework": "pytest"
      }
    }
    
  4. 📊 Executar Testes GraphQL

    {
      "tool": "run_api_tests",
      "params": {
        "max_concurrent": 5
      }
    }
    

⚡ Teste de Carga

{
  "tool": "run_load_tests",
  "params": {
    "users": 10,
    "duration": 60,
    "ramp_up": 10
  }
}

🔍 Recursos de Geração de Testes

  • ✅ Testes Positivos: Requisições válidas com respostas 2xx esperadas
  • ❌ Testes Negativos: Autenticação inválida (401), métodos errados (405)
  • 🎯 Casos de Borda: Payloads grandes, condições de limite
  • 🏗️ Corpos Baseados em Esquema: Geração automática de corpo de requisição a partir de esquemas OpenAPI
  • 🔍 Asserções Abrangentes: Códigos de status, tempos de resposta, validação de conteúdo

📊 Relatórios HTML

Os relatórios gerados incluem:

  • 📈 Resumo de execução de testes com estatísticas de aprovação/reprovação
  • ⏱️ Resultados detalhados de testes com informações de tempo
  • 🔍 Detalhamento de asserções e detalhes de erros
  • 👁️ Pré-visualizações de resposta e informações de depuração
  • 📱 Design responsivo compatível com dispositivos móveis

🔒 Suporte a Autenticação

  • 🎫 Tokens Bearer: Variável de ambiente auth_bearer
  • 🔑 Chaves de API: Variável de ambiente auth_apikey (enviada como cabeçalho X-API-Key)
  • 👤 Autenticação Básica: Variável de ambiente auth_basic

🔧 Requisitos

  • 🐍 Python: 3.8 ou superior
  • 🟢 Node.js: 14 ou superior (para instalação via npm)

📦 Dependências

🐍 Dependências Python

  • 🚀 fastmcp>=0.2.0
  • 📊 pydantic>=2.0.0
  • 🌐 requests>=2.28.0
  • ✅ jsonschema>=4.0.0
  • 📝 pyyaml>=6.0
  • 🎨 jinja2>=3.1.0
  • ⚡ aiohttp>=3.8.0
  • 🎭 faker>=19.0.0

🟢 Dependências Node.js

  • ✨ Nenhuma (pacote autocontido)

🔧 Solução de Problemas

❗ Problemas Comuns

📦 Comando NPX Não Funcionando

# If npx command fails, try:
npm install -g @kirti676/api-tester-mcp@latest

# Or run directly:
node ./node_modules/@kirti676/api-tester-mcp/cli.js

🐍 Python Não Encontrado

# Make sure Python 3.8+ is installed and in PATH
python --version

# Install Python dependencies manually if needed:
pip install fastmcp>=0.2.0 pydantic>=2.0.0 requests>=2.28.0

🔗 Problemas de Conexão com Cliente MCP

  • ✅ Certifique-se de que o servidor MCP está rodando no transporte stdio (padrão)
  • 🔄 Verifique se o seu cliente MCP suporta a versão mais recente do protocolo MCP
  • 📝 Verifique se a sintaxe JSON da configuração está correta

🆘 Obtendo Ajuda

  1. 📖 Verifique o diretório de Exemplos para configurações funcionais
  2. 🔍 Execute com o sinalizador --verbose para registro detalhado
  3. 🐛 Reporte problemas em GitHub Issues

🤝 Contribuindo

  1. Faça um fork do repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

🐛 Problemas e Suporte

📈 Roadmap

  • Geração de Testes Multi-Linguagem - Suporte a TypeScript/Playwright, JavaScript/Jest, Python/pytest ✨ NOVO!
  • Geração Completa de Projetos - Estrutura completa de projeto com dependências e configuração ✨ NOVO!
  • Suporte a API GraphQL - Suporta Schemas GraphQL ✨ NOVO!
  • Métodos adicionais de autenticação (OAuth2, JWT)
  • Geração de testes em Go/Golang (com testify/ginkgo)
  • Geração de testes em C#/.NET (com NUnit/xUnit)
  • Monitoramento de desempenho e alertas
  • Integração com pipelines de CI/CD (GitHub Actions, Jenkins)
  • Geração avançada de dados de teste a partir de exemplos e schemas
  • Testes de contrato de API com suporte a Pact
  • Geração de servidor mock para desenvolvimento

📄 Direitos Autorais e Uso

© 2025 kirti676. Todos os direitos reservados.

Este repositório e seu conteúdo são protegidos por leis de direitos autorais. Para permissão de reutilização, referência ou redistribuição de qualquer parte deste projeto, entre em contato com o proprietário em kirti676@outlook.com.

✅ Permitido sem permissão:

  • Aprendizado pessoal e experimentação
  • Contribuição de volta a este repositório via Pull Requests

❓ Requer permissão:

  • Uso comercial ou integração
  • Redistribuição em forma modificada
  • Publicação de trabalhos derivados

Para consultas de licenciamento, oportunidades de colaboração ou solicitações de permissão, entre em contato com kirti676@outlook.com.


⭐ Star this repo 🍴 Fork this repo

🚀 Construído com ❤️ para engenheiros de QA/SDET em todo o mundo 🌍