MCP REST Server
Um servidor para interagir com APIs REST, com suporte a autenticação e documentação Swagger.
Documentação
MCP REST Server
Um servidor Model Context Protocol (MCP) que fornece funcionalidade de cliente REST API com suporte a autenticação e integração com documentação Swagger.
Recursos
- Múltiplos Métodos de Autenticação: Suporte para autenticação baseada em token e baseada em login
- Integração Swagger: Descoberta automática de endpoints e documentação a partir de especificações OpenAPI/Swagger
- Gerenciamento Automático de Token: Lida com renovação de token e reautenticação
- Métodos HTTP Abrangentes: Suporte para requisições GET, POST, PUT, DELETE e PATCH
- Tratamento de Erros: Tratamento robusto de erros com lógica de repetição
- Compatível com MCP: Totalmente compatível com o Model Context Protocol
Instalação
npm install
npm run build
Desenvolvimento
npm run dev
Configuração
O servidor suporta dois métodos de autenticação:
Autenticação por Token
{
"baseUrl": "https://api.example.com",
"swaggerUrl": "https://api.example.com/swagger.json",
"auth": {
"type": "token",
"token": "your-api-token-here"
},
"timeout": 30000,
"retries": 3
}
Autenticação por Login
{
"baseUrl": "https://api.example.com",
"swaggerUrl": "https://api.example.com/swagger.json",
"auth": {
"type": "login",
"username": "your-username",
"password": "your-password",
"loginEndpoint": "/auth/login",
"tokenField": "access_token"
},
"timeout": 30000,
"retries": 3
}
Ferramentas Disponíveis
1. configure_rest_client
Configure o cliente REST com autenticação e detalhes da API.
Parâmetros:
baseUrl(obrigatório): URL base para a API RESTauth(obrigatório): Configuração de autenticação (token ou login)swaggerUrl(opcional): URL para documentação Swagger/OpenAPItimeout(opcional): Tempo limite de requisição em milissegundos (padrão: 30000)retries(opcional): Número de tentativas para requisições com falha (padrão: 3)
2. http_request
Faça requisições HTTP para a API configurada.
Parâmetros:
method(obrigatório): Método HTTP (GET, POST, PUT, DELETE, PATCH)path(obrigatório): Caminho do endpoint da APIparams(opcional): Parâmetros de consulta ou parâmetros do corpo da requisiçãobody(opcional): Corpo da requisição para requisições POST, PUT, PATCHheaders(opcional): Cabeçalhos adicionais
3. get_swagger_documentation
Obtenha a lista completa de endpoints disponíveis na documentação Swagger.
4. search_endpoints
Pesquise endpoints na documentação Swagger.
Parâmetros:
query(obrigatório): Consulta de pesquisa para encontrar endpoints correspondentes
5. get_endpoint_info
Obtenha informações detalhadas sobre um endpoint específico.
Parâmetros:
path(obrigatório): Caminho do endpointmethod(obrigatório): Método HTTP
6. check_authentication
Verifique se o cliente está autenticado no momento.
7. logout
Faça logout e limpe o estado de autenticação.
Exemplos de Uso
Configuração Básica
- Configure o cliente:
{
"baseUrl": "https://jsonplaceholder.typicode.com",
"auth": {
"type": "token",
"token": "dummy-token"
}
}
- Faça uma requisição GET:
{
"method": "GET",
"path": "/posts/1"
}
- Faça uma requisição POST:
{
"method": "POST",
"path": "/posts",
"body": {
"title": "New Post",
"body": "Post content",
"userId": 1
}
}
Com Documentação Swagger
{
"baseUrl": "https://petstore.swagger.io/v2",
"swaggerUrl": "https://petstore.swagger.io/v2/swagger.json",
"auth": {
"type": "token",
"token": "your-api-key"
}
}
Então você pode:
- Pesquisar endpoints:
search_endpointscom a consulta "pet" - Obter informações do endpoint:
get_endpoint_infocom o caminho "/pet" e método "POST" - Visualizar toda a documentação:
get_swagger_documentation
Fluxo de Autenticação
Autenticação por Token
- O token é armazenado e usado imediatamente
- Adicionado às requisições como
Authorization: Bearer <token> - Se 401 for recebido, não há repetição automática (token considerado inválido)
Autenticação por Login
- Faz requisição de login para o endpoint especificado
- Extrai o token da resposta usando
tokenField - Armazena o token em memória
- Adiciona o token às requisições subsequentes
- Se 401 for recebido, reautentica automaticamente e tenta novamente
Tratamento de Erros
- Erros de rede: Repetição automática com backoff exponencial
- Erros de autenticação: Reautenticação automática para autenticação baseada em login
- Erros de validação: Mensagens de erro claras com detalhes
- Erros de API: Encaminhamento do status HTTP e mensagem de erro
Desenvolvimento
Estrutura do Projeto
src/
├── types.ts # TypeScript type definitions
├── auth.ts # Authentication manager
├── swagger.ts # Swagger documentation parser
├── rest-client.ts # REST client implementation
└── index.ts # MCP server implementation
Compilação
npm run build
Execução
npm start
Configuração do Cliente MCP
O servidor MCP REST agora suporta configuração automática através de múltiplos métodos, eliminando a necessidade de configurar APIs manualmente para cada projeto.
Métodos de Configuração (em ordem de prioridade)
- Argumentos de Linha de Comando (maior prioridade)
- Variáveis de Ambiente
- Arquivo de Configuração
- Configuração Manual (via ferramentas MCP - menor prioridade)
Configuração do Cursor
Opção 1: Auto-configuração com Variáveis de Ambiente (Recomendado)
{
"mcpServers": {
"mcp-rest-github": {
"command": "node",
"args": ["/path/to/your/mcp-rest/dist/index.js"],
"env": {
"MCP_REST_BASE_URL": "https://api.github.com",
"MCP_REST_AUTH_TYPE": "token",
"MCP_REST_TOKEN": "your-github-token-here",
"MCP_REST_SWAGGER_URL": "https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json"
}
},
"mcp-rest-petstore": {
"command": "node",
"args": ["/path/to/your/mcp-rest/dist/index.js"],
"env": {
"MCP_REST_BASE_URL": "https://petstore.swagger.io/v2",
"MCP_REST_AUTH_TYPE": "token",
"MCP_REST_TOKEN": "your-api-key",
"MCP_REST_SWAGGER_URL": "https://petstore.swagger.io/v2/swagger.json"
}
}
}
}
Opção 2: Auto-configuração com Arquivos de Configuração
{
"mcpServers": {
"mcp-rest-github": {
"command": "node",
"args": ["/path/to/your/mcp-rest/dist/index.js", "--config", "/path/to/your/mcp-rest/examples/github-api.json"]
},
"mcp-rest-petstore": {
"command": "node",
"args": ["/path/to/your/mcp-rest/dist/index.js", "--config", "/path/to/your/mcp-rest/examples/petstore.json"]
}
}
}
Opção 3: Auto-configuração com Argumentos de Linha de Comando
{
"mcpServers": {
"mcp-rest-github": {
"command": "node",
"args": [
"/path/to/your/mcp-rest/dist/index.js",
"--base-url", "https://api.github.com",
"--auth-type", "token",
"--token", "your-github-token-here",
"--swagger-url", "https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json"
]
}
}
}
Configuração do Claude Desktop
Localização:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Use as mesmas opções de configuração do Cursor acima.
Exemplos de Configuração
O projeto inclui vários exemplos de configuração no diretório examples/:
examples/github-api.json- Configuração da API do GitHubexamples/petstore.json- Configuração da API Swagger Petstoreexamples/jsonplaceholder.json- Configuração da API JSONPlaceholder
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
MCP_REST_BASE_URL | URL base para a API REST (obrigatório) |
MCP_REST_AUTH_TYPE | Tipo de autenticação: 'token' ou 'login' (obrigatório) |
MCP_REST_TOKEN | Token da API (obrigatório para autenticação por token) |
MCP_REST_USERNAME | Nome de usuário (obrigatório para autenticação por login) |
MCP_REST_PASSWORD | Senha (obrigatório para autenticação por login) |
MCP_REST_LOGIN_ENDPOINT | Caminho do endpoint de login (obrigatório para autenticação por login) |
MCP_REST_TOKEN_FIELD | Nome do campo do token na resposta de login (padrão: access_token) |
MCP_REST_SWAGGER_URL | URL para documentação Swagger/OpenAPI |
MCP_REST_TIMEOUT | Tempo limite de requisição em milissegundos (padrão: 30000) |
MCP_REST_RETRIES | Número de tentativas para requisições com falha (padrão: 3) |
MCP_REST_CONFIG_FILE | Caminho para o arquivo de configuração JSON |
Nota: Substitua /path/to/your/mcp-rest/ pelo caminho real do diretório do seu servidor MCP REST.
Uso no Claude/Cursor
Com Auto-configuração (Recomendado)
Se você configurou o servidor com auto-configuração (variáveis de ambiente, argumentos de CLI ou arquivo de configuração), o servidor estará pronto para uso imediato:
Make a GET request to /posts/1
Show me all available endpoints
Search for endpoints related to "user"
Com Configuração Manual
Se você não forneceu auto-configuração, ainda pode configurar o cliente manualmente:
- Configure o cliente primeiro:
Please configure the REST client with:
- Base URL: https://api.example.com
- Authentication: token
- Token: your-api-token-here
- Swagger URL: https://api.example.com/swagger.json
- Depois faça requisições à API:
Make a GET request to /users/123
Testando a Configuração
Você pode testar sua configuração antes de usá-la no Claude/Cursor:
# Test with config file
node dist/index.js --config examples/jsonplaceholder.json
# Test with CLI arguments
node dist/index.js --base-url https://api.github.com --auth-type token --token your-token
# Test with environment variables
MCP_REST_BASE_URL=https://httpbin.org MCP_REST_AUTH_TYPE=token MCP_REST_TOKEN=test node dist/index.js
Se você vir "✅ Auto-configured REST client for [URL]", a configuração está funcionando corretamente.
Licença
MIT