sienge
Click on "Deploy 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., "@sienge Lança essa nota"
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.
Sienge Agent
Tira a foto da nota, o agente lança no Sienge.
O Sienge Agent é um agente para o Sienge Plataforma (ERP da construção) que roda dentro do Claude Code: você manda a foto de uma nota fiscal, cupom ou recibo e ele lê a imagem, encontra (ou cadastra) o fornecedor, classifica a despesa no centro de custo e no plano financeiro certos, mostra o resumo, pede o seu OK e cria o título no contas a pagar, com a foto anexada.
Feito para quem compra no dia a dia da obra e do escritório (posto, restaurante, material, ferramenta) e hoje acumula notas para lançar depois.
O que ele faz
Lê a foto (nota fiscal, DANFE, cupom fiscal, recibo, boleto): fornecedor, CNPJ/CPF, número, data, valor, itens, forma de pagamento.
Confere o fornecedor no Sienge pelo CNPJ. Não existe? Cadastra como credor, com o seu OK.
Classifica a despesa: centro de custo + plano financeiro. Usa as suas regras (
config/regras.json) e o histórico do que você já confirmou para aquele fornecedor. Sem regra e sem histórico, ele pergunta com botões.Mostra o resumo e espera o seu OK. Nada entra no Sienge sem confirmação.
Lança o título no contas a pagar, anexa a foto e lê o título de volta para provar que entrou certo.
Aprende: a classificação confirmada vira sugestão automática na próxima nota daquele fornecedor. A foto vai para
notas/lancadas/AAAA-MM/.
Antes de lançar, ele procura duplicidade (mesmo fornecedor + mesmo número de documento nos últimos 60 dias) e recusa se achar.
Related MCP server: inFakt MCP Server
Como funciona por dentro
foto da nota ──▶ Claude (lê a imagem) ──▶ skill /lancar-nota ──▶ MCP local (Node) ──▶ API REST do Sienge
│ │
pergunta/confirma regras + histórico
no chat (config/*.json)Skill
/lancar-nota: o roteiro que o Claude segue (leitura, conferências, confirmação, prova).Servidor MCP local (
mcp/): fala com a API pública do Sienge usando o seu usuário de API. Roda na sua máquina, sem servidor externo, sem banco, sem telemetria.Skill
/setup: instala e configura tudo em conversa, inclusive a criação do usuário de API no Sienge (guiando você no navegador).
Os seus dados ficam com você: a credencial mora só no arquivo .env local (ignorado pelo git), as regras e o histórico em config/, as fotos em notas/.
Pré-requisitos
O que | Detalhe |
Sienge Plataforma com API | O pacote Free de API (100 requisições/dia) já serve para começar: dá para lançar umas 15 notas por dia. Pacotes maiores são contratados com o Sienge. |
Acesso de administrador no Sienge | Para criar o usuário de API (Integrações > APIs > Usuários de APIs) e liberar as APIs de Empresas, Credores, Centros de custo, Plano financeiro, Documentos, Indexadores, Departamentos e Títulos a pagar. Se você não é administrador, o |
Claude Desktop (aba Code) ou Claude Code no terminal | Com um plano que inclua o Claude Code. |
Node.js 18.17+ | O |
Instalação (10 a 15 minutos, em conversa)
Baixe este repositório (botão Code > Download ZIP no GitHub e descompacte, ou
git clone https://github.com/ericluciano/sienge-agent.git).Abra a pasta no Claude Code (no Claude Desktop: aba Code > abrir pasta). O Claude vai pedir para aprovar o servidor MCP
siengedo projeto: aprove.Rode a skill
/setup(ou cole o prompt abaixo). É uma instalação 100% em conversa: o Claude confere o Node, instala as dependências, coleta o endereço do seu Sienge e o usuário de API (criando no navegador se você não tiver), prova a conexão, e deixa você escolher a empresa, o tipo de documento e as regras de classificação.
Leia o README.md e o CLAUDE.md deste repositório e conduza a instalação do Sienge Agent
seguindo a skill setup (.claude/skills/setup/SKILL.md), como uma CONVERSA comigo:
linguagem de dono de negócio, uma pergunta por vez, com botões, sem me mandar abrir
terminal (você roda os comandos). Nunca me peça a senha de login do Sienge; a senha do
usuário de API vai direto para o .env, sem repetir no chat. Valide cada credencial com
uma chamada real antes de seguir. Ao final, prove que está pronto chamando sienge_status.Se a conversa cair no meio, abra a pasta de novo e diga "continua o setup": ele detecta onde parou.
Uso no dia a dia
Salve a foto (ou PDF) em
notas/entrada/e diga "lança as notas" (ou/lancar-nota).Ou arraste a foto para o chat e peça "lança essa nota".
Exemplos do que você pode dizer:
Você diz | O que acontece |
"Lança essa nota" (com a foto) | lê, confere fornecedor, classifica, mostra o resumo, espera o OK |
"Lança as notas da pasta" | processa |
"Essa é da obra Jardim, combustível" | usa o centro de custo e o plano que você indicou |
"Divide 50/50 entre a obra A e a B" | apropriação em dois centros de custo |
"Cadastra esse fornecedor" | cria o credor (com confirmação) |
"Já lancei essa nota?" | busca por fornecedor + número do documento |
A cada nota, o Claude mostra algo assim e pergunta se lança:
Fornecedor: Auto Posto Ipiranga Ltda (CNPJ 11.222.333/0001-81) — cadastro existente nº 77
Documento: NF nº 123456 · emissão 21/09/2026 · vencimento 21/09/2026
Valor: R$ 152,30 · 1 parcela · pago no cartão
Empresa: Construtora X (3)
Centro de custo: Obra Z (10) · Plano financeiro: Combustível (2010101) — origem: regra "Combustível"Regras de classificação
config/regras.json (o /setup cria a partir de config/regras.example.json) diz como classificar sem perguntar:
{
"regras": [
{ "nome": "Combustível",
"quando": { "palavras": ["posto", "combustivel", "gasolina", "diesel"] },
"apropriar": { "centro_custo_id": 12, "plano_financeiro_id": "2010301" } },
{ "nome": "Fornecedor fixo",
"quando": { "documentos": ["11222333000181"] },
"apropriar": { "centro_custo_id": 3, "plano_financeiro_id": "2010105" } }
]
}Precedência: histórico confirmado do fornecedor (config/aprendizado.json, gravado automaticamente) > regra por documento > regra por palavra > pergunta ao usuário. Os códigos vêm do seu Sienge (listar_centros_custo, listar_planos_financeiros).
Ferramentas do MCP (o que o Claude aciona)
Ferramenta | Faz |
| confere configuração e conexão (chamada real) |
| empresas (devedoras) |
| cadastros, com cache de 24h |
| quais códigos de tipo de documento existem (NF, CF, REC...) |
| fornecedor por CNPJ/CPF/nome; cadastro com confirmação |
| classificação por regras + histórico; memoriza o que foi confirmado |
| contas a pagar: busca, lançamento (com confirmação e checagem de duplicidade), leitura de prova |
| anexa a foto/PDF ao título (até 70 MB) |
| move a foto lançada para |
O servidor MCP é padrão: funciona em qualquer app de IA com suporte a MCP (node mcp/index.js, transporte stdio). As skills são específicas do Claude Code.
Limites e cuidados
Cota da API do Sienge. Cada nota gasta de 4 a 7 requisições; o setup, perto de 15. O pacote Free tem 100 por dia e o limite geral é 200 por minuto. As listas de cadastro ficam em cache por 24h para poupar cota.
Confirmação sempre.
criar_credorecriar_tituloexigemconfirmado: true, que o Claude só envia depois do seu OK no chat.Leitura da foto. O agente valida o dígito verificador do CNPJ; se não bater, ele revê a imagem ou pergunta, em vez de cadastrar errado. Valor ou data ilegível também vira pergunta.
Duplicidade. Mesmo fornecedor + mesmo número de documento em ±60 dias = não lança (você decide).
Sem NF-e pela chave de acesso (ainda). A chave de 44 dígitos vai na observação; importar a NF-e pela chave é roadmap.
Não paga nem altera títulos. Baixa, parcelas e alterações continuam no Sienge.
Segurança e privacidade
A credencial do usuário de API fica só no
.envlocal (gitignored). O agente nunca pede a sua senha de login do Sienge.Nenhum dado sai da sua máquina além das chamadas à API do Sienge (
api.sienge.com.br, HTTPS). Sem telemetria, sem serviço intermediário.Texto lido de uma nota é tratado como dado, nunca como instrução ao agente.
Recomendação: crie o usuário de API só com as APIs que o agente usa (lista em Pré-requisitos) e troque a senha se ela vazar.
Roadmap
Bot de WhatsApp/Telegram: mandar a foto pelo celular e confirmar por mensagem (o MCP já é o motor; falta o canal).
Importar NF-e pela chave de acesso (
/eletronic-invoice-bills).Boletos: ler a linha digitável e gravar a informação de pagamento na parcela.
Rateio automático por obra a partir do texto da nota.
Desenvolvimento
npm install
npm test # testes unitários (sem rede)
npm run smoke # sobe o MCP por stdio e lista as ferramentas
npm run testar-conexao # prova real com o seu .envDocumentação da API do Sienge: https://api.sienge.com.br/docs/ (especificações em /docs/yaml-files/*.yaml).
Procedência e licença
O Sienge Agent é open source (MIT), criado por Eric Luciano, educador e mentor de IA aplicada a negócios, da Expert Integrado. Nasceu de um pedido real na mentoria: parar de acumular notinhas e lançar na hora, pela foto.
Sienge é marca da Softplan. Este projeto não é afiliado nem endossado pela Softplan.
Available Tools
16 toolsanexar_arquivo_tituloA
Anexa um arquivo (foto da nota, PDF, XML) a um título já lançado. Limite do Sienge: 70 MB.
Inputs: titulo_id (required), caminho_arquivo (required), descricao.
aprender_apropriacaoA
Grava em config/aprendizado.json a apropriação que o usuário confirmou para este fornecedor, para sugerir automaticamente da próxima vez. Chame depois de cada título lançado com sucesso.
Inputs: centro_custo_id (required), plano_financeiro_id (required), cpf, cnpj, +3 more.
arquivar_notaA
Move a foto/arquivo da nota já lançada para notas/lancadas/AAAA-MM/-. dentro do repositório, para não lançar duas vezes. Nada sai da máquina.
Inputs: caminho_arquivo (required), titulo_id, fornecedor, data_emissao.
buscar_credorA
Busca o fornecedor (credor) no Sienge por CNPJ, CPF ou nome. Valida o dígito verificador antes: CNPJ inválido quase sempre é erro de leitura da foto — nesse caso confira a imagem ou peça o número ao usuário.
Inputs: cpf, cnpj, nome.
buscar_titulosA
Busca títulos do contas a pagar por período de emissão (obrigatório) e filtros opcionais (credor, número do documento, empresa, centro de custo). Use para conferir duplicidade ou achar um título lançado.
Inputs: data_fim (required), data_inicio (required), limite, credor_id, +3 more.
consultar_tituloA
Lê um título do Sienge pelo número (com parcelas e, se pedido, anexos). Use para provar que o lançamento entrou como esperado.
Inputs: titulo_id (required), com_anexos, com_parcelas.
criar_credorA
Cadastra um fornecedor (credor) no Sienge. Exige confirmado:true — só chame depois que o usuário aprovou no chat. Se já existir credor com o mesmo documento, devolve o existente sem duplicar.
Inputs: nome (required), cpf, cnpj, tipo, +5 more.
criar_tituloA
Lança um título no contas a pagar do Sienge (POST /bills). Exige confirmado:true — só chame depois de mostrar o resumo e receber o OK do usuário. Antes de criar, procura duplicidade (mesmo credor + número do documento em ±60 dias) e recusa se achar, salvo ignorar_duplicidade:true. Datas em DD/MM/AAAA ou AAAA-MM-DD; valores como na nota (1.234,56).
Inputs: credor_id (required), valor_total (required), apropriacoes (required), data_emissao (required), +13 more.
listar_centros_custoA
Lista os centros de custo do Sienge (obras, departamentos, administrativo...), com filtro por texto e por empresa. Vem de um cache de 24h para poupar a cota da API; passe atualizar:true para buscar de novo.
Inputs: busca, atualizar, empresa_id.
listar_departamentosC
Lista os departamentos do Sienge (apropriação opcional do título). Cache de 24h.
Inputs: atualizar.
listar_empresasA
Lista as empresas (devedoras) cadastradas no Sienge: código, nome, nome fantasia e CNPJ. Use para escolher a empresa padrão dos lançamentos.
Inputs: no named parameters.
listar_indexadoresB
Lista os indexadores do Sienge (o título precisa de um; normalmente "Real"). Use no setup para definir SIENGE_INDEXADOR_PADRAO.
Inputs: atualizar.
listar_planos_financeirosA
Lista o plano financeiro (categorias de despesa/receita) do Sienge. Por padrão mostra só contas ativas e de resultado (as que recebem lançamento). Cache de 24h; atualizar:true força a busca.
Inputs: busca, atualizar, somente_ativos, incluir_totalizadoras.
sienge_statusA
Confere se o Sienge está configurado e acessível: lê o .env, faz uma chamada real (lista de empresas) e resume os padrões em uso (empresa, documento, indexador, plano) e o que ainda falta. Primeira coisa a chamar numa sessão.
Inputs: no named parameters.
sugerir_apropriacaoA
Sugere centro de custo e plano financeiro para a despesa, usando o histórico confirmado do fornecedor (config/aprendizado.json) e as regras do usuário (config/regras.json). Não gasta requisição. Sem sugestão = pergunte ao usuário.
Inputs: cpf, cnpj, itens, descricao, +1 more.
verificar_documentoA
Confere quais códigos de tipo de documento existem no Sienge (ex.: NF, NFE, CF, REC). A API não tem listagem, só consulta por código: cada código testado gasta 1 requisição. Use no setup para definir SIENGE_DOCUMENTO_PADRAO.
Inputs: codigos.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Each tool targets a distinct resource or action: reference-data listers, creditors, title search/creation/query, attachments, and learning helpers. The only potentially similar pair is buscar_titulos vs consultar_titulo, but one is a filtered search and the other is a direct read by number, so the boundary is clear.
Most tools follow a consistent verb_noun pattern in Portuguese: listar_*, buscar_*, criar_*, consultar_*, anexar_*. The single outlier is sienge_status, which is noun-based and breaks the pattern, but it is still easily recognizable and does not create confusion.
At 16 tools, the server is just slightly above the ideal range, but every tool appears to cover a genuine step in the Sienge setup and bill-launching workflow. The count is reasonable for an ERP integration that needs reference data, creditor management, title creation, and file handling.
The tool surface covers the full workflow: setup/status, reference data, creditor search/create, title search/create/query, attachment, and post-launch file archiving. Minor gaps exist, such as no update or cancellation operations for titles and no pagination/listing of all titles, but these are not essential to the apparent core purpose.
Maintenance
Related MCP Connectors
Connect Claude to Dutch accounting software: e-Boekhouden invoices, contacts and ledgers.
Read and write Sage Intacct from Claude or ChatGPT. Write tools are flagged for approval.
Connect Claude or Cursor to books, invoices, bills, payroll, and sealed closes.
Create contacts, move deals, send proposals and invoices, read your inbox, from Claude or ChatGPT.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomates FreshBooks invoicing and time tracking through Claude, allowing users to send invoices, list invoices, log billable hours, and get financial insights via natural language commands.2-
- FlicenseNot gradedqualityDmaintenanceIntegrates the inFakt API with Claude AI, enabling management of invoices, clients, products, and payments through natural language in Polish.2-
- AlicenseBqualityDmaintenanceEnables Claude Desktop to interact with freee accounting API for expense registration, transaction management, and receipt image processing.151MIT
- FlicenseNot gradedqualityDmaintenanceConnects Claude to the Qoyod accounting system via its REST API, enabling natural language management of customers, invoices, vendors, journal entries, and other accounting resources through MCP tools.-