omie-finance-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@omie-finance-mcpShow me the accounts payable due this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
omie-finance-mcp
Um servidor MCP que expõe a API financeira do OMIE ERP como ferramentas para agentes de IA. Em vez de navegar pelo painel do OMIE ou montar chamadas HTTP manualmente, um assistente (Claude, ou qualquer outro cliente compatível com MCP) passa a conseguir consultar títulos, lançar pagamentos/recebimentos, gerar boletos e PIX, e ler o fluxo de caixa — tudo a partir de um pedido em linguagem natural.
Exemplos do tipo de pedido que o assistente consegue resolver sozinho:
"Quais contas a pagar vencem essa semana?" "Gera um boleto pro título 4821 com vencimento pro dia 10" "Qual o saldo da conta corrente principal hoje?" "Cadastra a Fulana Ltda como fornecedora, CNPJ 12.345.678/0001-99"
Como o projeto é organizado
client.py— cliente HTTP puro para a API do OMIE. Cada operação (listar_contas_pagar,gerar_pix, etc.) é um método nomeado, então dá pra usar essa classe fora do contexto do MCP também, se precisar.auth.py— só entra em jogo no modo servidor HTTP (ver abaixo): recusa requisição sem credencial e resolve, a cada chamada, qual credencial OMIE a atende.config.py— configuração lida do ambiente e dos.env.server.py— monta o servidor MCP (via FastMCP) e registra as ferramentas.tools/— um arquivo por área do OMIE (contas a pagar, PIX, cadastros...), cada um só traduzindo argumentos da ferramenta para uma chamada doclient.py.
Duas formas de rodar, dependendo do uso:
Modo local (stdio) | Modo servidor (HTTP) | |
Para quem | Uso pessoal, uma credencial OMIE | Vários usuários/clientes, cada um com a própria conta OMIE |
Como sobe |
| Container Docker de vida longa |
Credencial | Fixa, via variável de ambiente | Por requisição, no header da chamada |
Related MCP server: AlphaVantage MCP Server
Requisitos
Python 3.12 ou superior
Uma
app_key/app_secretdo OMIE (Configurações → API → Aplicações, dentro do OMIE)Para o modo local:
uvPara o modo servidor: Docker + Docker Compose
Modo local
Ideal quando é só você usando, com uma única conta OMIE.
Sem clonar nada, direto do GitHub:
OMIE_APP_KEY=sua_key OMIE_APP_SECRET=seu_secret \
uvx --from git+https://github.com/denilsonpy/omie-finance-mcp omie-finance-mcpSe preferir não repetir as credenciais toda vez, salve-as em
~/.config/omie-finance-mcp/.env:
mkdir -p ~/.config/omie-finance-mcp
printf 'OMIE_APP_KEY=sua_key\nOMIE_APP_SECRET=seu_secret\n' > ~/.config/omie-finance-mcp/.env
uvx --from git+https://github.com/denilsonpy/omie-finance-mcp omie-finance-mcpClonando o repositório (útil se for mexer no código):
git clone https://github.com/denilsonpy/omie-finance-mcp
cd omie-finance-mcp
cp .env.example .env # preencha OMIE_APP_KEY e OMIE_APP_SECRET
uv run omie-finance-mcpRegistrando no Claude Desktop
Edite o arquivo de configuração —
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json,
Linux: ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"omie-finance-mcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/denilsonpy/omie-finance-mcp", "omie-finance-mcp"],
"env": {
"OMIE_APP_KEY": "sua_app_key",
"OMIE_APP_SECRET": "seu_app_secret"
}
}
}
}No Windows via WSL, o Claude Desktop roda fora do Linux, então o jeito confiável é um script wrapper. Dentro do WSL:
mkdir -p ~/.config/omie-finance-mcp
printf 'OMIE_APP_KEY=sua_app_key\nOMIE_APP_SECRET=seu_app_secret\n' > ~/.config/omie-finance-mcp/.env
cat > ~/omie-finance-mcp-run.sh << 'EOF'
#!/bin/bash
set -e
export $(grep -v '^#' ~/.config/omie-finance-mcp/.env | xargs)
exec uvx --from git+https://github.com/denilsonpy/omie-finance-mcp omie-finance-mcp
EOF
chmod +x ~/omie-finance-mcp-run.shE em %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"omie-finance-mcp": {
"command": "wsl",
"args": ["/home/SEU_USUARIO/omie-finance-mcp-run.sh"]
}
}
}(troque SEU_USUARIO pelo valor de whoami dentro do WSL)
Modo servidor (Docker, multi-cliente)
Aqui a lógica muda: em vez de um processo por usuário com uma credencial fixa, sobe um único servidor HTTP que várias pessoas/clientes compartilham — e cada um usa a própria conta OMIE.
Isso só funciona porque a autenticação é por requisição: o servidor não
guarda app_key/app_secret nenhum. Cada chamada MCP chega com a credencial de
quem a fez, de uma destas duas formas:
Authorization: Basic base64("app_key:app_secret")X-Omie-App-Key: <app_key>
X-Omie-App-Secret: <app_secret>É essa credencial — validada pelo próprio OMIE, não por um cadastro paralelo —
que decide qual conta aquela chamada enxerga. Um cliente não tem como acessar
dados de outro porque literalmente não tem a chave dele. Requisição sem
credencial recebe 401 com um corpo JSON explicando o que faltou, e não chega
a entrar no servidor MCP.
A resolução acontece em cada chamada de ferramenta, a partir dos headers da
requisição que a originou — não uma vez por sessão. É o que garante que duas
chamadas na mesma sessão MCP, com credenciais diferentes, operem cada uma na
sua conta (ver tests/test_http_session_hijack.py).
git clone https://github.com/denilsonpy/omie-finance-mcp
cd omie-finance-mcp
cp .env.example .env # não preencha OMIE_APP_KEY/SECRET aqui, ver acima
docker compose up -d --buildPor padrão sobe em http://localhost:8020/mcp. docker compose down para;
restart: unless-stopped no compose já garante que volta sozinho depois de um
reboot.
Antes de expor isso na internet
Duas coisas que precisam estar certas:
TLS na frente. A credencial viaja em claro (o base64 do Basic só ofusca) — sem HTTPS, a chave de qualquer cliente pode ser capturada em trânsito. Coloque um reverse proxy (Caddy, nginx) com certificado válido antes de aceitar tráfego público; dá pra conseguir HTTPS sem nem ter domínio próprio usando sslip.io. Numa rede fechada (VPN, LAN), a credencial sozinha já resolve.
MCP_ALLOWED_HOSTS. O SDK do MCP tem proteção contra DNS rebinding, que depende de uma allowlist deHost. Vazio (o padrão) ela fica desligada — é o que um servidor acessado remotamente precisa, porque a allowlist que o SDK liga sozinho aceita sólocalhoste responde421a todo cliente externo. Quem controla acesso aqui é a credencial do OMIE, não o headerHost: uma página maliciosa que "rebindou" DNS não tem aapp_keyde ninguém. Se quiser a checagem ligada de todo modo, declare ali os hostnames pelos quais os clientes chegam (ver.env.example).
Cada cliente se conecta com a própria credencial
# gera o header a partir do app_key/app_secret do cliente
echo -n "APP_KEY_DO_CLIENTE:APP_SECRET_DO_CLIENTE" | base64claude mcp add --transport http omie-finance-mcp https://seu-servidor/mcp \
--header "Authorization: Basic <valor_gerado_acima>"ou equivalente em .mcp.json / claude_desktop_config.json:
{
"mcpServers": {
"omie-finance-mcp": {
"type": "http",
"url": "https://seu-servidor/mcp",
"headers": { "Authorization": "Basic <valor_gerado_acima>" }
}
}
}Se preferir não lidar com base64, os headers próprios são equivalentes:
{
"mcpServers": {
"omie-finance-mcp": {
"type": "http",
"url": "https://seu-servidor/mcp",
"headers": {
"X-Omie-App-Key": "app_key_do_cliente",
"X-Omie-App-Secret": "app_secret_do_cliente"
}
}
}
}Testes
uv sync --extra dev
uv run pytestNenhum teste fala com a API do OMIE: o OmieClient é substituído por um dublê,
e os testes de HTTP sobem o servidor de verdade em 127.0.0.1 numa porta livre.
Ferramentas disponíveis
54 ferramentas ao todo, agrupadas por área:
Cadastros
Ferramenta | O que faz |
| Fornecedores cadastrados, com filtro por nome/CNPJ |
| Detalhes de um fornecedor (código ou CNPJ) |
| Cadastra um fornecedor novo |
| Atualiza um fornecedor existente |
| Bancos/instituições financeiras conhecidas pelo OMIE |
| Um banco específico, pelo código |
| Tipos de conta aceitos ao cadastrar uma conta corrente |
| Categorias do DRE usadas para classificar lançamentos |
| Um tipo de documento fiscal, pelo código |
| Tipos de documento cadastrados |
| Finalidade de transferência (CNAB) de um banco |
| Finalidades de transferência (CNAB) disponíveis |
| Origens de lançamento financeiro |
| Bandeiras de cartão aceitas |
Contas a Pagar
Ferramenta | O que faz |
| Filtra por status, período, fornecedor |
| Detalhes de um título específico |
| Lança um novo título |
| Edita um título existente |
| Registra a baixa (pagamento) de um título |
| Estorna uma baixa já registrada |
| Remove um título em aberto |
Contas a Receber
Ferramenta | O que faz |
| Filtra por status, período, cliente |
| Detalhes de um título específico |
| Lança um novo título |
| Edita um título existente |
| Registra a baixa (recebimento) de um título |
| Estorna uma baixa já registrada |
| Remove um título em aberto |
Cobranças — Boleto e PIX
Ferramenta | O que faz |
| Emite o boleto de um título já lançado |
| Link de download de um boleto já emitido |
| Muda a data de vencimento de um boleto |
| Cancela o boleto de um título |
| Cria uma cobrança PIX, associada a um título ou avulsa |
| Detalhes de uma cobrança PIX |
| Cancela uma cobrança PIX |
| Cobranças PIX por período/status |
| Igual acima, versão enxuta (só status) |
| Status de uma cobrança específica |
| QR Code PIX sem valor fixo, pra uma conta corrente |
Movimento bancário
Ferramenta | O que faz |
| Contas correntes/bancárias cadastradas |
| Detalhes de uma conta específica |
| Cadastra uma conta corrente nova |
| Edita uma conta existente |
| Remove uma conta corrente |
| Extrato de uma conta num período |
| Transações manuais na conta corrente |
| Detalhes de um lançamento bancário |
| Registra um lançamento manual (débito/crédito) |
| Remove um lançamento bancário |
Visão financeira
Ferramenta | O que faz |
| Previsto vs. realizado por categoria, num mês |
| Totais consolidados numa data de referência |
| Títulos ainda não liquidados, a pagar ou a receber |
| Busca unificada entre pagar e receber |
| Títulos, baixas e lançamentos de conta corrente, numa visão só |
Estrutura
omie-finance-mcp/
├── src/omie_finance_mcp/
│ ├── client.py
│ ├── auth.py
│ ├── config.py
│ ├── server.py
│ └── tools/
│ ├── suppliers.py
│ ├── accounts_payable.py
│ ├── accounts_receivable.py
│ ├── bank_accounts.py
│ ├── bank_transactions.py
│ ├── receivable_boletos.py
│ ├── receivable_pix.py
│ ├── cash_flow.py
│ ├── financial_movements.py
│ └── finance_registries.py
├── tests/
│ ├── test_auth.py
│ ├── test_http_multitenant.py
│ └── test_http_session_hijack.py
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── pyproject.tomlLicença
MIT — veja LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-quality-maintenanceEnables AI assistants to interact with Conta Azul Financial APIs to manage accounts, balances, and transactions through natural language. It features specialized tools for tracking cash flow, processing payables and receivables, and generating comprehensive financial reports.
- Flicense-qualityDmaintenanceEnables AI agents to access financial data and perform analysis by exposing AlphaVantage API endpoints as MCP tools, including company overview, income statement, balance sheet, cash flow, and earnings reports.1
- AlicenseBqualityCmaintenanceEnables natural language control of OMIE ERP finances, including accounts payable/receivable, bank transactions, cash flow, and supplier management through 27 MCP tools.414MIT
- Flicense-qualityBmaintenanceEnables AI agents to manage personal finances for Brazilian users through MCP tools, including categorizing transactions, reconciling debts, checking cash-flow projections, and adjusting budgets, with integration to Open Finance Brasil via Pluggy.
Related MCP Connectors
Financial & accounting management on Omie (Brazil's leading cloud ERP), payables/receivables, financ
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/denilsonpy/omie-finance-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server