Servidor MCP para integrar IAs com o sistema fiscal brasileiro. Consulte CNPJ, NFe, NFSe, SPED, eSocial e mais via linguagem natural.
Project description
mcp-name: io.github.nikolasdehor/mcp-fiscal-brasil
O primeiro servidor MCP para o sistema fiscal brasileiro
📚 Documentação · Instalação · Ferramentas · Exemplos · Roadmap · Contribuindo
🌎 Demo ao vivo
Web UI demo hospedada (Render free tier, pode demorar 30s no primeiro acesso pra acordar):
Você pode clicar no botão acima pra hostear sua própria instância em 3 cliques no Render.com.
Veja docs/getting-started/deploy.md para outras opções (Fly.io, auto-host via Docker).
✨ Novidades v0.2.0
Versão de evolução com 4 frentes:
- 8 novas fontes de dados: CNAE, CPF, Simples Nacional, MEI, IBGE, CEP, Empresa consolidada, Certidões
- Tools agênticas (alto nível):
analyze_cnpj_compliance,compare_tax_regimes,risk_score_supplier,validate_nfe_full,summarize_sped - Múltiplas interfaces: além do servidor MCP, agora CLI (
mcp-fiscal), REST API (mcp-fiscal-api) com Web UI demo, e pacote npm (mcp-fiscal-brasil) - Production-grade: HTTP client com retry exponencial, cache pluggável, rate-limit por host, logs JSON estruturados
# CLI standalone
mcp-fiscal cnpj 12345678000190
mcp-fiscal compliance 12345678000190
mcp-fiscal regimes --faturamento 500000 --setor serviços --folha 180000
# REST API + Web UI demo
mcp-fiscal-api # http://localhost:8000
# Node.js
import { analyzeCompliance } from "mcp-fiscal-brasil";
Veja CHANGELOG.md para detalhes.
Por que este projeto existe?
O Brasil tem o sistema fiscal mais complexo do mundo. São 27 SEFAZs estaduais, NFe + NFSe + SPED + eSocial, cada município com seu próprio portal de serviços, e mais de 500 mil PMEs tentando manter conformidade fiscal todos os dias.
Antes deste projeto, integrar IA com qualquer dado fiscal brasileiro exigia desenvolvimento customizado, autenticação em múltiplos portais, e conhecimento profundo de cada API governamental. Cada consulta era um projeto.
MCP Fiscal Brasil resolve isso em uma linha: instale o servidor, conecte ao seu assistente de IA, e comece a fazer perguntas em linguagem natural. O servidor cuida de tudo, consultando diretamente Receita Federal, BrasilAPI e SEFAZs estaduais.
🎬 Demonstração
Você: "Consulte o CNPJ 00.000.000/0001-91 e liste os sócios"
IA: Empresa: Banco do Brasil S.A.
Fundada em: 12/10/1808
Situação: ATIVA
CNAE principal: 6422100 - Bancos múltiplos com carteira comercial
Sócios (QSA):
- União Federal - Sócio-Administrador (60,82%)
- BNDESPar - Sócio (10,32%)
Você: "A chave NFe 35240300623904000197550010000012341234567890 é válida?"
IA: Chave válida!
Estado de origem: SP (São Paulo)
Data de emissão: março/2024
CNPJ emitente: 00.623.904/0001-97
Número da nota: 000001234
Dígito verificador: correto (módulo 11)
Você: "A empresa 12.345.678/0001-90 é do Simples Nacional?"
IA: Sim! Empresa optante do Simples Nacional.
Data de opção: 01/01/2020
Modalidade: MEI - Microempreendedor Individual
Você: "O SEFAZ de São Paulo está online agora?"
IA: Status SEFAZ SP: OPERACIONAL
Serviço de autorização de NFe funcionando normalmente.
Última verificação: agora.
🛠 Ferramentas Disponíveis
14 ferramentas cobrindo os principais módulos do sistema fiscal brasileiro.
✅ Ferramentas Funcionais (usáveis agora)
Funcionam 100% sem chaves de API. Instale e use imediatamente.
| Módulo | Ferramenta | Descrição | API |
|---|---|---|---|
| CNPJ | consultar_cnpj |
Dados completos: razão social, sócios, CNAE, endereço | BrasilAPI (grátis) |
| CNPJ | consultar_simples_nacional |
Optante Simples/MEI com datas de entrada e exclusão | BrasilAPI (grátis) |
| NFe | validar_chave_nfe |
Valida dígito + extrai UF, CNPJ, data, número | Offline |
| NFe | consultar_status_sefaz |
Status do webservice SEFAZ por estado | BrasilAPI (grátis) |
| NFe | consultar_nfe |
Consulta NFe completa pela chave de 44 dígitos | BrasilAPI (grátis) |
| CPF | validar_cpf |
Validação de dígito verificador | Offline |
| SPED | analisar_sped |
Analisa arquivo EFD/ECD/ECF: período, empresa, erros | Offline |
| SPED | listar_registros_sped |
Filtra registros por tipo (C100, E110, etc.) | Offline |
| eSocial | listar_eventos_esocial |
Catálogo de eventos filtrável por grupo | Offline |
| eSocial | validar_evento_esocial |
Validação básica de estrutura XML | Offline |
🧭 Ferramentas de Orientação
Retornam URLs e instruções - exigem ação manual nos portais governamentais.
| Módulo | Ferramenta | O que retorna |
|---|---|---|
| NFSe | consultar_nfse |
URL do portal NFSe do município + sistema utilizado |
| Certidões | consultar_certidao_federal |
URL do e-CAC para emissão de CND federal |
| Certidões | consultar_certidao_fgts |
URL do portal Caixa para consulta do CRF |
🧪 Ferramentas Experimentais
Requerem APIs pagas ou têm cobertura limitada.
| Módulo | Ferramenta | Limitação |
|---|---|---|
| CNPJ | listar_cnpjs_por_nome |
Receita Federal não disponibiliza busca por nome em API pública |
🚀 Instalação
Três linhas para começar:
pip install mcp-fiscal-brasil
claude mcp add fiscal-brasil -- mcp-fiscal-brasil
# Pronto! Pergunte ao Claude sobre qualquer empresa brasileira.
# Ou use como biblioteca Python:
from mcp_fiscal_brasil import FiscalBrasil
Via uv (recomendado)
uv add mcp-fiscal-brasil
A partir do código-fonte
git clone https://github.com/nikolasdehor/mcp-fiscal-brasil.git
cd mcp-fiscal-brasil
pip install -e .
⚙️ Configuração Detalhada
Claude Desktop
Edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fiscal-brasil": {
"command": "mcp-fiscal-brasil"
}
}
}
Reinicie o Claude Desktop. As 14 ferramentas fiscais aparecem automaticamente.
Claude Code (CLI)
claude mcp add fiscal-brasil -- mcp-fiscal-brasil
Cursor
Adicione ao .cursor/mcp.json do projeto:
{
"mcpServers": {
"fiscal-brasil": {
"command": "mcp-fiscal-brasil"
}
}
}
VS Code + Continue
Adicione ao settings.json:
{
"continue.mcpServers": {
"fiscal-brasil": {
"command": "mcp-fiscal-brasil"
}
}
}
Docker
docker run --rm -i \
-e MCP_FISCAL_LOG_LEVEL=INFO \
ghcr.io/nikolasdehor/mcp-fiscal-brasil:latest
🔑 Variáveis de Ambiente
Todas as variáveis são opcionais. O servidor funciona sem nenhuma configuração.
| Variável | Descrição | Padrão |
|---|---|---|
MCP_FISCAL_LOG_LEVEL |
Nível de log: DEBUG, INFO, WARNING |
INFO |
BRASILAPI_BASE_URL |
URL base da BrasilAPI (para ambientes customizados) | https://brasilapi.com.br/api |
HTTP_TIMEOUT |
Timeout em segundos para chamadas HTTP | 30 |
Dois Modos de Uso
O mcp-fiscal-brasil funciona de duas formas:
| Modo | Para quem | Como |
|---|---|---|
| MCP Server | Usuários de IA (Claude, Cursor, GPT) | Instala e configura no assistente |
| SDK Python | Desenvolvedores de apps fiscais/contábeis | Importa e usa no código |
🐍 Uso como Biblioteca Python (SDK)
Além de funcionar como servidor MCP, você pode importar e usar diretamente no seu código Python - sem servidor, sem configuração extra.
Início Rápido
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
async def main():
async with FiscalBrasil() as fiscal:
empresa = await fiscal.consultar_cnpj("00.000.000/0001-91")
print(empresa["razao_social"]) # Banco do Brasil S.A.
print(empresa["situacao_cadastral"]) # ATIVA
asyncio.run(main())
Validações Offline (sem API, instantâneo)
from mcp_fiscal_brasil import FiscalBrasil
fiscal = FiscalBrasil()
# Validações locais - sem chamada de rede
print(fiscal.validate_cpf("529.982.247-25")) # True
print(fiscal.validate_cnpj("11.222.333/0001-81")) # True / False
print(fiscal.validate_chave_nfe("3524...44 digitos...")) # dict com detalhes
Integração com FastAPI
from fastapi import FastAPI
from mcp_fiscal_brasil import FiscalBrasil
app = FastAPI()
fiscal = FiscalBrasil()
@app.get("/cnpj/{cnpj}")
async def consultar(cnpj: str):
async with fiscal:
return await fiscal.consultar_cnpj(cnpj)
Integração com Django
# views.py
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
from django.http import JsonResponse
def consulta_cnpj(request, cnpj):
async def buscar():
async with FiscalBrasil() as fiscal:
return await fiscal.consultar_cnpj(cnpj)
dados = asyncio.run(buscar())
return JsonResponse(dados)
Cadastro Automático de Fornecedor (exemplo ERP)
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
async def cadastrar_fornecedor(cnpj: str, db_session):
async with FiscalBrasil() as fiscal:
if not fiscal.validate_cnpj(cnpj):
raise ValueError("CNPJ inválido")
dados = await fiscal.consultar_cnpj(cnpj)
simples = await fiscal.consultar_simples_nacional(cnpj)
await db_session.execute(
"INSERT INTO fornecedores (cnpj, razao_social, simples) VALUES (?, ?, ?)",
[cnpj, dados["razao_social"], simples["optante"]]
)
Validação em Lote
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
fiscal = FiscalBrasil()
documentos = ["529.982.247-25", "000.000.000-00", "11.222.333/0001-81"]
resultados = [
{"doc": doc, "válido": fiscal.validate_cpf(doc) or fiscal.validate_cnpj(doc)}
for doc in documentos
]
# [{'doc': '529.982.247-25', 'válido': True}, ...]
🏗 Arquitetura
Claude / GPT / Cursor / qualquer cliente MCP
|
| Model Context Protocol (stdio)
v
mcp-fiscal-brasil
|
+------+-------+--------+--------+--------+-------+--------+
| | | | | | | |
CNPJ CPF NFe NFSe Simples SPED eSocial Certidões
| | | | | | | |
v v v v v v v v
BrasilAPI -- SEFAZ Portais Receita Parser Catálogo URLs
ReceitaWS estaduais municipais Federal local local governamentais
Fontes de dados:
- BrasilAPI - CNPJ, CEP, bancos (open source, sem autenticação)
- ReceitaWS - CNPJ (fallback)
- SEFAZs estaduais - Status de serviço e consulta de NFe
- Receita Federal - Simples Nacional e certidões (orientação de acesso)
📍 Roadmap
- v0.1.0 - Consultas CNPJ, CPF, NFe, Simples, SPED (atual)
- v0.2.0 - NFSe 50+ municípios, eSocial catálogo completo
- v0.3.0 - Emissão NFe/NFSe (requer certificado digital A1)
- v1.0.0 - eSocial completo, LGPD audit, compliance suite
🤝 Contribuindo
Contribuições são bem-vindas!
# 1. Fork e clone
git clone https://github.com/SEU_USUARIO/mcp-fiscal-brasil.git
cd mcp-fiscal-brasil
# 2. Instale dependências de desenvolvimento
pip install -e ".[dev]"
pré-commit install
# 3. Crie sua branch
git checkout -b feature/meu-recurso
# 4. Implemente, teste e verifique
pytest
ruff check src/
mypy src/
# 5. Abra um Pull Request
Veja as issues abertas - especialmente as marcadas com good first issue.
Cada módulo segue o padrão client.py + schemas.py + tools.py, o que torna simples adicionar novos módulos fiscais.
📄 Licença
MIT - veja LICENSE para detalhes.
Feito com 💚💛 para o Brasil
Conectando inteligência artificial ao sistema fiscal mais complexo do mundo
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_fiscal_brasil-0.2.1.tar.gz.
File metadata
- Download URL: mcp_fiscal_brasil-0.2.1.tar.gz
- Upload date:
- Size: 296.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78a78f95662f7e3f8e94b27be6c036dd9b3b1efde174caf4c84a036f90d28fa7
|
|
| MD5 |
3f91b7227bc495be588c75a576060cab
|
|
| BLAKE2b-256 |
28d129b04b0d8c1d0a19e8c165ea2442f355ab028bad77a382670854fcfb2d76
|
Provenance
The following attestation bundles were made for mcp_fiscal_brasil-0.2.1.tar.gz:
Publisher:
publish.yml on nikolasdehor/mcp-fiscal-brasil
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_fiscal_brasil-0.2.1.tar.gz -
Subject digest:
78a78f95662f7e3f8e94b27be6c036dd9b3b1efde174caf4c84a036f90d28fa7 - Sigstore transparency entry: 1672790210
- Sigstore integration time:
-
Permalink:
nikolasdehor/mcp-fiscal-brasil@40ef07056500907cbd0d1e0a029298bfd5168bd2 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/nikolasdehor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@40ef07056500907cbd0d1e0a029298bfd5168bd2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mcp_fiscal_brasil-0.2.1-py3-none-any.whl.
File metadata
- Download URL: mcp_fiscal_brasil-0.2.1-py3-none-any.whl
- Upload date:
- Size: 96.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc3273f9d2590f77c975eb8abb661f84620d31544c88f398dd53df4e749ec12c
|
|
| MD5 |
13da5278655b0eeb4a4d4a5840446326
|
|
| BLAKE2b-256 |
e9d08346191a03bdca69996f2dfcdf92b6afb6b8b2f4f98de5750f1dd9239336
|
Provenance
The following attestation bundles were made for mcp_fiscal_brasil-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on nikolasdehor/mcp-fiscal-brasil
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_fiscal_brasil-0.2.1-py3-none-any.whl -
Subject digest:
dc3273f9d2590f77c975eb8abb661f84620d31544c88f398dd53df4e749ec12c - Sigstore transparency entry: 1672790275
- Sigstore integration time:
-
Permalink:
nikolasdehor/mcp-fiscal-brasil@40ef07056500907cbd0d1e0a029298bfd5168bd2 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/nikolasdehor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@40ef07056500907cbd0d1e0a029298bfd5168bd2 -
Trigger Event:
release
-
Statement type: