zaratine/conta-azul-mcp-server
If you are the rightful owner of conta-azul-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This is a Model Context Protocol (MCP) server that integrates with the Conta Azul API using OAuth2.
MCP Server para Conta Azul ā
Este Ć© um servidor Model Context Protocol (MCP) que integra com a API da Conta Azul usando OAuth2.
ā Status do Projeto
O servidor estĆ” funcionando corretamente!
š Testes Realizados:
- ā Inicialização MCP com capabilities OAuth2
- ā Detecção correta de requisiƧƵes nĆ£o autenticadas
- ā Resposta adequada no formato JSON-RPC MCP
- ā Headers de OAuth configurados corretamente
š§ Configuração
1. VariƔveis de Ambiente
Configure o arquivo .env
com suas credenciais da Conta Azul:
# URL base do seu servidor MCP
BASE_URL=http://localhost:3000
# ConfiguraƧƵes OAuth da Conta Azul (substitua pelos seus valores reais)
CONTAAZUL_CLIENT_ID=seu_client_id_da_conta_azul
CONTAAZUL_CLIENT_SECRET=seu_client_secret_da_conta_azul
CONTAAZUL_REDIRECT_URI=http://localhost:3000/oauth/callback
# Porta do servidor
PORT=3000
# Tokens de autenticação
CONTA_AZUL_ACCESS_TOKEN=your_initial_access_token
CONTA_AZUL_REFRESH_TOKEN=your_initial_refresh_token
2. Instalação e Execução
# Instalar dependĆŖncias
npm install
# Compilar o projeto
npm run build
# Executar o servidor
npm start
3. Testando o Servidor
# Testar o fluxo completo
node test-full-flow.js
Resultado esperado:
ā
OAuth requerido corretamente detectado
ā
OAuth requerido corretamente detectado para ferramenta
š Configuração no Cursor
Para Cursor/Claude Desktop
Adicione esta configuração ao seu claude_desktop_config.json
:
{
"mcpServers": {
"conta-azul": {
"url": "http://localhost:3000/mcp"
}
}
}
Localização do arquivo de configuração:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
š Fluxo de Autenticação
- Inicialização: O servidor MCP inicia com capabilities OAuth2
- Primeiro acesso: Cursor detecta que precisa de autenticação
- Login OAuth: Cursor deve mostrar "needs login" ao invƩs de "loading tools"
- Autorização: UsuÔrio completa o fluxo OAuth com a Conta Azul
- Uso das ferramentas: Após autenticação, ferramentas ficam disponĆveis
š ļø Ferramentas DisponĆveis
list_customers
Lista clientes da Conta Azul (requer autenticação)
{
"name": "list_customers",
"description": "Lista clientes da Conta Azul",
"inputSchema": {}
}
š Solução de Problemas
Problema: Cursor fica "loading tools"
Solução verificada:
- ā Servidor configurado corretamente - Responde adequadamente Ć s requisiƧƵes OAuth
- ā Formato JSON-RPC correto - Retorna erros no formato esperado pelo MCP
- ā Capabilities OAuth - Servidor anuncia corretamente suporte a OAuth2
Se ainda não funcionar:
- Reinicie o Cursor/Claude Desktop completamente
- Verifique se o arquivo de configuração estÔ na localização correta
- Confirme que o servidor estĆ” rodando em
http://localhost:3000
- Teste usando
node test-full-flow.js
para validar o comportamento
Verificando Logs do Servidor
O servidor produz logs detalhados:
š Requisição de inicialização - pulando autenticação
ā
Sessão MCP inicializada: [session-id]
š Aplicando middleware de autenticação
ā Token de autorização nĆ£o encontrado - retornando erro MCP
Testando Manualmente
# Teste de inicialização
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0.0"}}}'
š Estrutura do Projeto
.
āāā src/
ā āāā index.ts # Servidor principal MCP
ā āāā auth/
ā āāā provider.ts # Provider OAuth para Conta Azul
āāā test-full-flow.js # Script de teste completo
āāā package.json # DependĆŖncias do projeto
āāā .env # ConfiguraƧƵes (nĆ£o commitado)
āāā README.md # Este arquivo
š§ Desenvolvimento
Para desenvolvimento, vocĆŖ pode modificar as ferramentas em src/index.ts
na função createMcpServer()
.
Adicionando Novas Ferramentas
mcpServer.tool(
"nova_ferramenta",
{ /* schema de entrada */ },
async (input, context) => {
// Verificar autenticação
if (!context.authorization) {
return {
isError: true,
content: [{ type: "text", text: "Erro: Autenticação necessÔria." }],
};
}
// Lógica da ferramenta aqui
return {
content: [{ type: "text", text: "Resultado da ferramenta" }],
};
}
);
šÆ Próximos Passos
- Implementar validação real de tokens (atualmente aceita qualquer token para testes)
- Adicionar mais ferramentas da API Conta Azul
- Implementar cache de tokens
- Adicionar testes unitƔrios
Status: ā Funcionando - Servidor MCP com OAuth2 implementado corretamente
Authentication
The system uses OAuth 2.0 with access tokens and refresh tokens. Tokens are automatically managed and refreshed when they expire.
When Authentication Fails
If your refresh token expires, you'll see an error like:
Authentication required: Refresh token expired. Please obtain new tokens through OAuth flow.
To fix this:
- Get OAuth URL: Run
npm run auth-url
to get the authorization URL - Authorize: Open the URL in your browser and authorize the application
- Exchange Code: Copy the authorization code from the callback URL and run:
npm run auth-code <authorization_code>
Manual Token Update
Alternatively, you can manually update tokens in your .env
file and delete the token-storage.json
file to force reloading.
Available Tools
list_customers
- Lists customers from Conta Azullistar-contas-pagar
- Lists accounts payable with filters
Usage
npm start
Error Handling
The system automatically:
- Refreshes access tokens when they expire
- Clears invalid tokens from storage
- Provides OAuth instructions when re-authentication is needed
- Handles specific API errors gracefully