Wazza Test Server
БесплатноНе проверенA simple HTTP server to validate MCP infrastructure for the Wazza MCP client, exposing endpoints for tool discovery and calling.
Описание
A simple HTTP server to validate MCP infrastructure for the Wazza MCP client, exposing endpoints for tool discovery and calling.
README
Servidor HTTP simples para validar a infraestrutura MCP do Wazza como cliente MCP. Ele expõe endpoints HTTP simples para descoberta e chamada de ferramentas e também aceita MCP JSON-RPC 2.0 via POST /, permitindo testar o fluxo de cadastro, tools/list, persistência, exibição, tools/call, retorno ao IA Agent e observabilidade/replay no Wazza.
Stack
- Python 3.11+
- FastAPI
- Uvicorn
- Pydantic
- Docker
Ferramentas disponíveis
echo: repete o texto enviado.get_business_hours: retorna o horário de atendimento.calculate: calcula expressões aritméticas simples com+,-,*,/e parênteses, sem uso deeval.calendar_list_events: lista eventos simulados do calendário.calendar_create_event: cria um evento simulado no calendário em memória.calendar_check_availability: verifica horários disponíveis simulados.calendar_delete_event: remove um evento simulado peloevent_id.
Instalação local
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Execução local
PORT=8080 uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload
A aplicação ficará disponível em http://localhost:8080.
Deploy no Railway
- Crie um novo projeto no Railway apontando para este repositório.
- Confirme que o Railway detectou o
Dockerfile. - Defina a variável de ambiente
PORTse necessário. O servidor usaPORTe faz fallback para8080. - Faça o deploy.
- Cadastre a URL pública gerada pelo Railway na tela de Integrações de IA do Wazza.
Interfaces suportadas
O servidor mantém duas formas de integração:
- Endpoints HTTP simples:
GET /para health check.POST /tools/listpara listar ferramentas.POST /tools/callpara chamar uma ferramenta.
- MCP JSON-RPC 2.0 via
POST /para clientes que enviam os métodos MCP diretamente para a raiz do servidor.
Exemplos curl
GET /
curl http://localhost:8080/
Resposta esperada:
{
"status": "ok",
"server": "wazza-mcp-test-server"
}
POST /tools/list
curl -X POST http://localhost:8080/tools/list
POST /tools/call echo
curl -X POST http://localhost:8080/tools/call \
-H 'Content-Type: application/json' \
-d '{"name":"echo","arguments":{"text":"Olá mundo"}}'
POST /tools/call get_business_hours
curl -X POST http://localhost:8080/tools/call \
-H 'Content-Type: application/json' \
-d '{"name":"get_business_hours","arguments":{}}'
POST /tools/call calculate
curl -X POST http://localhost:8080/tools/call \
-H 'Content-Type: application/json' \
-d '{"name":"calculate","arguments":{"expression":"5 * (3 + 2)"}}'
Resposta esperada:
{
"content": [
{
"type": "text",
"text": "25"
}
]
}
POST /tools/call calendar_list_events
curl -X POST http://localhost:8080/tools/call \
-H 'Content-Type: application/json' \
-d '{"name":"calendar_list_events","arguments":{"date":"amanhã"}}'
Resposta esperada:
{
"content": [
{
"type": "text",
"text": "Nenhum evento simulado encontrado em amanhã."
}
]
}
POST /tools/call calendar_create_event
curl -X POST http://localhost:8080/tools/call \
-H 'Content-Type: application/json' \
-d '{"name":"calendar_create_event","arguments":{"title":"Reunião com João","date":"amanhã","time":"14:00","duration_minutes":60}}'
Resposta esperada:
{
"content": [
{
"type": "text",
"text": "Evento criado: Reunião com João em amanhã às 14:00 por 60 minutos."
}
]
}
POST /tools/call calendar_check_availability
curl -X POST http://localhost:8080/tools/call \
-H 'Content-Type: application/json' \
-d '{"name":"calendar_check_availability","arguments":{"date":"amanhã","duration_minutes":60}}'
Resposta esperada:
{
"content": [
{
"type": "text",
"text": "Horários disponíveis em amanhã: 09:00, 10:30, 14:00 e 16:00."
}
]
}
POST /tools/call calendar_delete_event
curl -X POST http://localhost:8080/tools/call \
-H 'Content-Type: application/json' \
-d '{"name":"calendar_delete_event","arguments":{"event_id":"evt_1"}}'
Resposta esperada:
{
"content": [
{
"type": "text",
"text": "Evento evt_1 removido com sucesso."
}
]
}
POST / MCP JSON-RPC initialize
curl -X POST http://localhost:8080/ \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
Resposta esperada:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {}
},
"serverInfo": {
"name": "wazza-mcp-test-server",
"version": "1.0.0"
}
}
}
POST / MCP JSON-RPC tools/list
curl -X POST http://localhost:8080/ \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
POST / MCP JSON-RPC tools/call
curl -X POST http://localhost:8080/ \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"echo","arguments":{"text":"Olá"}}}'
Resposta esperada:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "Olá"
}
]
}
}
Erros
Erros de métodos JSON-RPC não relacionados à execução de ferramenta continuam retornando error no envelope JSON-RPC. Erros de tools/call retornam content e structuredContent.ok=false, conforme o exemplo na seção de respostas estruturadas.
Respostas estruturadas MCP
Todas as ferramentas mantêm compatibilidade com o formato MCP textual em content[].text e também retornam structuredContent para facilitar respostas naturais do IA Agent.
Exemplo calculate
{
"content": [
{
"type": "text",
"text": "O resultado é 699678."
}
],
"structuredContent": {
"ok": true,
"tool": "calculate",
"result": {
"expression": "1234 * 567",
"value": 699678
}
}
}
Exemplo get_business_hours
{
"content": [
{
"type": "text",
"text": "Atendemos de segunda a sexta, das 08h às 18h."
}
],
"structuredContent": {
"ok": true,
"tool": "get_business_hours",
"result": {
"days": "segunda a sexta",
"opens": "08:00",
"closes": "18:00",
"timezone": "America/Sao_Paulo"
}
}
}
Exemplo calendar_create_event
{
"content": [
{
"type": "text",
"text": "Evento criado: Reunião com João em amanhã às 14:00 por 60 minutos."
}
],
"structuredContent": {
"ok": true,
"tool": "calendar_create_event",
"result": {
"event_id": "evt_1",
"title": "Reunião com João",
"date": "amanhã",
"time": "14:00",
"duration_minutes": 60,
"attendees": [],
"description": ""
}
}
}
Exemplo calendar_list_events
{
"content": [
{
"type": "text",
"text": "Eventos simulados:\n- evt_1: Reunião com João em amanhã às 14:00 por 60 minutos."
}
],
"structuredContent": {
"ok": true,
"tool": "calendar_list_events",
"result": {
"date": "amanhã",
"events": [
{
"event_id": "evt_1",
"title": "Reunião com João",
"date": "amanhã",
"time": "14:00",
"duration_minutes": 60
}
]
}
}
}
Exemplo calendar_check_availability
{
"content": [
{
"type": "text",
"text": "Horários disponíveis em amanhã: 09:00, 10:30, 14:00 e 16:00."
}
],
"structuredContent": {
"ok": true,
"tool": "calendar_check_availability",
"result": {
"date": "amanhã",
"duration_minutes": 60,
"available_slots": ["09:00", "10:30", "14:00", "16:00"]
}
}
}
Exemplo calendar_delete_event
{
"content": [
{
"type": "text",
"text": "Evento evt_1 removido com sucesso."
}
],
"structuredContent": {
"ok": true,
"tool": "calendar_delete_event",
"result": {
"event_id": "evt_1",
"deleted": true
}
}
}
Exemplo de erro de ferramenta
{
"content": [
{
"type": "text",
"text": "Não foi possível executar a ferramenta: Expressão inválida: divisão por zero não é permitida."
}
],
"structuredContent": {
"ok": false,
"tool": "calculate",
"error": {
"code": "tool_error",
"message": "Expressão inválida: divisão por zero não é permitida."
}
}
}
from github.com/gabrielribeirogpx-arch/wazza-mcp-test-server
Установка Wazza Test Server
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/gabrielribeirogpx-arch/wazza-mcp-test-serverFAQ
Wazza Test Server MCP бесплатный?
Да, Wazza Test Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Wazza Test Server?
Нет, Wazza Test Server работает без API-ключей и переменных окружения.
Wazza Test Server — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Wazza Test Server в Claude Desktop, Claude Code или Cursor?
Открой Wazza Test Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Wazza Test Server with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
