MCP Server Test Suite
O servidor MCP deve ser robusto, rápido, confiável e 100% conforme à especificação JSON-RPC 2.0, suportando requisições concorrentes, grandes payloads e recuperação graceful de erros. Esta suite valida a implementação completa do protocolo MCP. Cobertura: 80+ testes | Prioridade: ALTA
Test Segments
Segmentos de Testes
1. JSON-RPC 2.0 Compliance (20 testes)
Test: Valid Request Format
Given: Request com formato correto:
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {...},
"id": 1
}
When: Enviado ao servidor
Then:
- Parseado corretamente
- Response com id correspondente
- Sem erros de parsingTest: Invalid Request Rejection
Given: Request malformado:
- Faltando "jsonrpc": "2.0"
- ID inválido
- Method não string
When: Enviado
Then:
- Error response retornado
- Code: -32600 (Invalid Request)
- Mensagem claraTest: Notification Handling
Given: Notification (sem id):
{
"jsonrpc": "2.0",
"method": "initialized",
"params": {}
}
When: Enviado
Then:
- Processado
- Sem response esperada
- Operação completaTest: Batch Requests
Given: Multiple requests no mesmo payload:
[req1, req2, req3]
When: Enviado
Then:
- Todos processados
- Array de responses
- Ordem preservada (por id)2. Tool Operations (25 testes)
Test: Tool Discovery
Given: Server ativo
When: tools/list enviado
Then:
- Lista de tools retornada
- Schema para cada tool
- Nomes, descrições
- Parâmetros documentadosTest: Tool Invocation
Given: Tool "search_context" disponível
When: tools/call executado com:
{
"name": "search_context",
"arguments": {"query": "auth", "top_k": 5}
}
Then:
- Ferramenta invocada
- Resultado retornado
- Content no formato corretoTest: Parameter Validation
Given: Tool espera top_k: integer
When: Enviado top_k: "string"
Then:
- Error retornado
- Code: -32602 (Invalid params)
- Mensagem sobre tipo esperadoTest: Missing Required Parameters
Given: Tool requer "query" obrigatório
When: Enviado sem "query"
Then:
- Error de parâmetro obrigatório
- Descrição clara
- Sugestão de correção3. Performance (15 testes)
Test: Low Latency Response
Given: Simple request
When: Enviado
Then:
- Response em < 100ms
- Sem overhead desnecessário
- Rápido parsing e serializaçãoTest: Concurrent Requests
Given: 10 requests simultâneos
When: Todos enviados
Then:
- Todos processados
- Response para cada um
- Latência p95 < 200msTest: Large Payload Handling
Given: Request com payload de 10MB
When: Enviado
Then:
- Aceito (se sob limite)
- Processado corretamente
- Sem memory leak4. Reliability (20 testes)
Test: Connection Resilience
Given: Connection ativa
When: Network intermittent
Then:
- Detecta desconexão
- Reconnect automático
- Estado preservado (se possível)Test: Error Recovery
Given: Tool falha durante execução
When: Exception lançada
Then:
- Error response gerado
- Cliente avisado
- Server continua operacionalTest: Graceful Degradation
Given: Tool indisponível
When: Chamado
Then:
- Error específico retornado
- Server não crashes
- Outras tools funcionamPerformance SLAs
| Métrica | Alvo |
|---|---|
| Latência p50 | < 50ms |
| Latência p95 | < 200ms |
| Latência p99 | < 500ms |
| Concurrent requests | 100+ |
| Success rate | 99.9% |
Como Executar
# Testes MCP
go test -v ./tests/mcp-server/...
# Com JSON-RPC conformance
go test -v -run JSONRPCCompliance ./tests/mcp-server/...
# Load test
go test -v -bench=. ./tests/mcp-server/bench_test.go
# Com race detection
go test -v -race ./tests/mcp-server/...External Linking
| Conceito | Recurso | Link |
|---|---|---|
| MCP Specification | Official Spec | modelcontextprotocol.io/specification/2025-11-25 |
| JSON-RPC 2.0 | Spec Document | www.jsonrpc.org/specification |
| MCP Development Guide | Server Dev | github.com/cyanheads/model-context-protocol-resources |
| MCP Message Types | Deep Dive | portkey.ai/blog/mcp-message-types |
| MCP Implementation | Hands-on Guide | abvijaykumar.medium.com/model-context-protocol-deep-dive |
| MCP Transports | Reference | modelcontextprotocol.info/docs/concepts/transports |
| MCP Introduction | Overview | stytch.com/blog/model-context-protocol-introduction |
| Why MCP Uses JSON-RPC | Article | medium.com/@dan.avila7/why-model-context-protocol-uses-json-rpc |