Orchestrate Hinova SGA and Atomos chat integrations for financial workflows.
MCP Financeiro - API Multi-Empresas
API em Node.js + TypeScript + Hono para orquestrar integrações SGA (Hinova) e Chat Atomos em modelo SaaS multi-empresas. Consulta boletos por placa, envia PIX/PDF ou mensagem de regularização (revistoria) conforme configuração por cliente.
Base URL
| Ambiente | URL |
|---|---|
| Produção | https://mcpfinanceiro-production.up.railway.app |
| Local | http://localhost:3000 |
Use a base URL desejada nos exemplos de cURL abaixo.
Pré-requisitos
- Node.js 18+
- Conta Supabase
- Tokens por cliente: token_erp (Hinova SGA), token_chat e token_canal (Atomos)
Setup
1. Instalar dependências
npm install
2. Variáveis de ambiente
Copie .env.example para .env e preencha:
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_SERVICE_ROLE_KEY=sua-service-role-key
3. Migrations no Supabase
No Supabase Dashboard > SQL Editor, execute em ordem:
supabase/migrations/001_initial_schema.sqlsupabase/migrations/002_rename_base_url_sga_to_base_url.sql(se existir)supabase/migrations/003_situacoes_envio_direto_e_checagem.sqlsupabase/migrations/004_intervalo_max_50.sql
4. Iniciar o servidor
npm run dev
Endpoints e cURL
Health check
GET / — Verifica se a API está no ar.
curl -s https://mcpfinanceiro-production.up.railway.app/
Resposta (200):
{"status":"ok","service":"mcpfinanceiro"}
Cadastrar cliente
POST /api/v1/clientes — Cadastra um cliente com todas as configurações (boleto, respostas, revistoria).
Body (JSON):
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
nome |
string | sim | Nome do cliente |
ativo |
boolean | não | Default true |
token_erp |
string | sim | Token Hinova SGA |
token_chat |
string | sim | Token Chat Atomos |
token_canal |
string | sim | Token do canal Atomos |
perfil_sistema |
"SGA" | "SOUTH" | não | Default "SGA" |
base_url |
string (URL) | não | Default https://api.hinova.com.br/api/sga/v2 |
configuracoes_boleto |
object | sim | Ver tabela abaixo |
configuracoes_respostas |
object | sim | Ver tabela abaixo |
configuracoes_revistoria |
object | sim | Ver tabela abaixo |
configuracoes_boleto:
| Campo | Tipo | Descrição |
|---|---|---|
dias_antes_vencimento |
number | Dias antes do vencimento para buscar boleto (0–60) |
dias_depois_vencimento |
number | Dias depois do vencimento (0–60). Soma com dias_antes ≤ 50 |
situacoes_envio_direto |
string[] | Ex.: ["ATIVO"] — envia PIX/PDF direto |
situacoes_com_checagem_vencimento |
string[] | Ex.: ["INADIMPLENTE"] — checa dias após vencimento |
dias_checagem_vencimento |
number | Se passar desse número de dias após vencimento, retorna regularização |
configuracoes_respostas:
| Campo | Tipo | Descrição |
|---|---|---|
response_sucesso |
string | Mensagem quando boleto/PIX enviados. Use {{data_vencimento}} e {{valor_boleto}} |
response_regularizacao_moto |
string | Mensagem de regularização para moto |
response_regularizacao_veiculo |
string | Mensagem de regularização para carro |
response_boleto_baixado |
string | Mensagem quando boleto já está baixado |
configuracoes_revistoria:
| Campo | Tipo | Descrição |
|---|---|---|
enviar_midia |
boolean | Se true, envia vídeo de regularização (quando houver URL) |
video_moto |
string (URL) ou null | URL do vídeo para moto |
video_carro |
string (URL) ou null | URL do vídeo para carro |
cURL — Cadastrar cliente:
curl -X POST https://mcpfinanceiro-production.up.railway.app/api/v1/clientes \
-H "Content-Type: application/json" \
-d '{
"nome": "Meu Cliente",
"ativo": true,
"token_erp": "SEU_TOKEN_ERP",
"token_chat": "SEU_TOKEN_CHAT",
"token_canal": "SEU_TOKEN_CANAL",
"perfil_sistema": "SGA",
"base_url": "https://api.hinova.com.br/api/sga/v2",
"configuracoes_boleto": {
"dias_antes_vencimento": 30,
"dias_depois_vencimento": 20,
"situacoes_envio_direto": ["ATIVO"],
"situacoes_com_checagem_vencimento": ["INADIMPLENTE"],
"dias_checagem_vencimento": 5
},
"configuracoes_respostas": {
"response_sucesso": "Boleto e pix enviados! Data: {{data_vencimento}}, Valor: {{valor_boleto}}",
"response_regularizacao_moto": "Estamos enviando o vídeo modelo para regularização.",
"response_regularizacao_veiculo": "Estamos enviando o vídeo modelo para regularização.",
"response_boleto_baixado": "Boleto já foi baixado."
},
"configuracoes_revistoria": {
"enviar_midia": false,
"video_moto": null,
"video_carro": null
}
}'
Resposta (201):
{"id":"uuid-do-cliente","message":"Cliente criado com sucesso"}
Tools (1)
create_clientRegisters a new client with specific configurations for billing, responses, and revistoria.Environment Variables
SUPABASE_URLrequiredThe URL of your Supabase projectSUPABASE_SERVICE_ROLE_KEYrequiredThe service role key for Supabase database accessConfiguration
{"mcpServers":{"mcp-financeiro":{"command":"node","args":["/path/to/mcpfinanceiro/index.js"],"env":{"SUPABASE_URL":"your-supabase-url","SUPABASE_SERVICE_ROLE_KEY":"your-service-key"}}}}