mcp-server-currency-converter

Gustavo-Kuze/mcp-server-currency-converter

3.1

If you are the rightful owner of mcp-server-currency-converter 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.

Conversor de Moedas MCP is a Model Context Protocol server designed to provide currency conversion tools and exchange rate data using the Brasil API, facilitating integration with Claude AI and other compatible assistants.

Tools
2
Resources
0
Prompts
0

Conversor de Moedas MCP

Um servidor MCP (Model Context Protocol) que fornece ferramentas de conversão de moedas e cotações usando a Brasil API, desenvolvido para integração com Claude AI e outros assistentes compatíveis.

🎯 Objetivo

Este projeto permite que assistentes de IA consultem cotações históricas e realizem conversões de moedas em tempo real usando dados da Brasil API. O projeto oferece duas interfaces:

  • MCP Server: Para integração direta com Claude AI e outros assistentes
  • API REST Express: Para desenvolvimento e testes rápidos

🚀 Funcionalidades

Tools MCP Disponíveis:

  1. get_exchange_rate_at_date

    • Obter cotação de uma moeda em data específica
    • Prioriza taxas PTAX quando disponíveis
    • Fornece taxas de compra e venda
  2. convert_currency_at_date

    • Converter valores entre BRL e moedas estrangeiras
    • Suporte para conversão bidirecional (BRL ↔ Moeda estrangeira)
    • Usa taxas apropriadas (compra/venda) conforme direção

Moedas Suportadas:

Consulte o endpoint da Brasil API para ver as moedas suportadas:

curl --location 'https://brasilapi.com.br/api/cambio/v1/moedas'

📋 Requisitos

  • Node.js 18+
  • pnpm (recomendado) ou npm
  • TypeScript

🛠️ Instalação

  1. Clone o repositório:
git clone <repository-url>
cd conversor-moeda-mcp
  1. Instale as dependências:
pnpm install
# ou
npm install
  1. Compile o projeto:
pnpm run build
# ou  
npm run build

🏃 Como Rodar Localmente

Opção 1: API Express (Recomendado para Desenvolvimento)

# Iniciar a API Express na porta 3000
pnpm run dev:api

# Ou em produção
pnpm run start:api

A API estará disponível em: http://localhost:3000

Endpoints disponíveis:

  • GET /health - Health check
  • POST /api/get-exchange-rate-at-date - Obter cotação
  • POST /api/convert-currency-at-date - Converter moeda
  • GET /api-docs - Documentação Swagger interativa
  • GET /swagger.json - Especificação OpenAPI JSON

Opção 2: MCP Server

# Iniciar o MCP Server
pnpm run dev:mcp

# Ou em produção  
pnpm run start:mcp

🔌 Como Conectar o MCP

No Claude Desktop App

  1. Localize o arquivo de configuração:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Adicione a configuração MCP:

{
  "mcpServers": {
    "conversor-moeda": {
      "command": "node",
      "args": [
        "C:\\caminho\\para\\conversor-moeda-mcp\\build\\index.js"
      ],
      "env": {}
    }
  }
}
  1. Substitua o caminho:

    • Altere C:\\caminho\\para\\conversor-moeda-mcp\\build\\index.js pelo caminho real do arquivo compilado
    • Use barras duplas \\ no Windows ou barras simples / no macOS/Linux
  2. Reinicie o Claude Desktop

Verificação da Conexão

Após reiniciar o Claude, você deve ver as ferramentas disponíveis:

  • 🔨 get_exchange_rate_at_date
  • 🔨 convert_currency_at_date

📖 Exemplos de Uso

API Express (HTTP)

Obter cotação do USD:

curl -X POST http://localhost:3000/api/get-exchange-rate-at-date \
  -H "Content-Type: application/json" \
  -d '{"currency":"USD","date":"2024-01-15"}'

Converter 100 USD para BRL:

curl -X POST http://localhost:3000/api/convert-currency-at-date \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 100,
    "currency": "USD", 
    "date": "2024-01-15",
    "direction": "to_brl"
  }'

📚 Documentação Swagger

A API inclui documentação Swagger completa e interativa:

  • Interface Web: http://localhost:3000/api-docs
  • JSON Spec: http://localhost:3000/swagger.json

Claude AI (MCP)

Após conectar o MCP, você pode fazer perguntas como:

  • "Qual era a cotação do dólar em 15 de janeiro de 2024?"
  • "Converta 500 dólares para reais usando a cotação de ontem"
  • "Quanto custava 1000 euros em reais no dia 10 de dezembro de 2023?"

🏗️ Estrutura do Projeto

├── src/
│   ├── services/
│   │   └── currency.ts      # Lógica de negócio
│   ├── index.ts             # MCP Server
│   └── server.ts            # API Express
├── docs/
│   ├── DEVELOPMENT.md       # Guia de desenvolvimento
│   └── REFACTORING_SUMMARY.md
├── build/                   # Código compilado
└── package.json

🚀 Scripts Disponíveis

# Desenvolvimento
pnpm run dev:api      # API Express + Swagger em http://localhost:3000/api-docs
pnpm run dev:mcp      # MCP Server + watch mode

# Produção  
pnpm run start:api    # API Express + Swagger
pnpm run start:mcp    # MCP Server

# Utilidades
pnpm run build        # Compilar TypeScript
pnpm run test         # Executar testes

📝 Formato das Datas

  • Use sempre o formato YYYY-MM-DD
  • Exemplo: 2024-01-15 para 15 de janeiro de 2024
  • A Brasil API fornece dados a partir de 2020

🔍 Troubleshooting

MCP não aparece no Claude:

  1. Verifique se o caminho no claude_desktop_config.json está correto
  2. Confirme que pnpm run build foi executado
  3. Reinicie completamente o Claude Desktop
  4. Verifique logs de erro no console do Claude

🚧 Roadmap

  • Adicionar ferramenta/endpoint para listar moedas suportadas

API não responde:

  1. Confirme que a porta 3000 não está em uso
  2. Verifique se pnpm run dev:api não mostrou erros
  3. Teste o health check: curl http://localhost:3000/health

Cotação não encontrada:

  1. Verifique o formato da data (YYYY-MM-DD)
  2. Confirme que a data não é fim de semana/feriado
  3. Teste com datas recentes (dados mais confiáveis)

🤝 Contribuições

Contribuições são bem-vindas! Por favor:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo para mais detalhes.

🔗 Links Úteis