MCP server for Brazilian electronic invoicing (NF-e / NFC-e)
Project description
mcp-nfe-br 🇧🇷
Introdução
mcp-nfe-br é um servidor MCP (Model Context Protocol) que fornece ferramentas para a emissão e validação de documentos fiscais eletrônicos brasileiros: NF-e (modelo 55) e NFC-e (modelo 65), conforme o leiaute XML versão 4.00 da SEFAZ. Este servidor faz parte da família mcp-einvoicing-* / mcp-*-*, construída sobre mcp-einvoicing-core, que fornece o modelo de dados base, utilitários HTTP/OAuth2, e a infraestrutura comum de servidores MCP.
Status atual (v0.1.0): fase 1 do roadmap — ferramentas de validação de CPF/CNPJ. Geração e validação de XML NF-e/NFC-e, assinatura digital ICP-Brasil, e integração com os webservices da SEFAZ estão planejados para versões futuras. NFS-e (nota fiscal de serviços) e CT-e (conhecimento de transporte) são fases posteriores, fora do escopo desta versão.
English summary
mcp-nfe-br is an MCP (Model Context Protocol) server providing tools for Brazilian electronic fiscal documents: NF-e (modelo 55) and NFC-e (modelo 65), per SEFAZ XML schema 4.00. It is part of the mcp-*-* family built on mcp-einvoicing-core.
Current status (v0.1.0): Phase 1 of the roadmap — CPF/CNPJ tax-ID validation tools only. NF-e/NFC-e XML generation and validation, ICP-Brasil digital signing, and SEFAZ webservice integration are planned for future releases. NFS-e and CT-e are later phases, out of scope for this version.
Instalação
Requisitos
- Python ≥ 3.11
mcp-einvoicing-core(instalado automaticamente como dependência)
Usando uv (recomendado)
uv add mcp-nfe-br
Usando pip
pip install mcp-nfe-br
A partir do código-fonte
git clone https://github.com/cmendezs/mcp-nfe-br.git
cd mcp-nfe-br
uv sync --all-extras
Configuração
Adicione o servidor à configuração do seu cliente MCP. Para o Claude Desktop, edite claude_desktop_config.json:
{
"mcpServers": {
"nfe-br": {
"command": "uvx",
"args": ["mcp-nfe-br"]
}
}
}
Para uma instalação local de desenvolvimento:
{
"mcpServers": {
"nfe-br": {
"command": "uv",
"args": ["run", "mcp-nfe-br"],
"cwd": "/path/to/mcp-nfe-br"
}
}
}
Variáveis de ambiente
| Variável | Descrição | Padrão |
|---|---|---|
SEFAZ_ENV |
Ambiente SEFAZ: producao ou homologacao |
homologacao |
LOG_LEVEL |
Nível de log: DEBUG, INFO, WARNING, ERROR |
INFO |
Ferramentas disponíveis
br__validate_cpf
Valida um CPF (Cadastro de Pessoas Físicas) — número de identificação fiscal de pessoa física, conforme o algoritmo módulo 11 da Receita Federal.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cpf |
string |
sim | CPF com ou sem separadores ./- |
Retorna um TaxIdValidationResult com valid=True e o valor limpo (11 dígitos) em caso de sucesso, ou valid=False com mensagem de erro em português.
br__validate_cnpj
Valida um CNPJ (Cadastro Nacional da Pessoa Jurídica) — número de identificação fiscal de pessoa jurídica. Aceita tanto o formato numérico tradicional (14 dígitos) quanto o formato alfanumérico introduzido pela NT 2026.004 (PL_010d), com vigência em homologação a partir de 2026-06-01 e em produção a partir de 2026-07-01.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cnpj |
string |
sim | CNPJ com ou sem separadores .///- |
Retorna um TaxIdValidationResult com valid=True e o valor limpo (14 caracteres) em caso de sucesso, ou valid=False com mensagem de erro em português.
⚠️ [Unverified]: o algoritmo de dígito verificador para o formato alfanumérico do CNPJ foi implementado com base em fontes secundárias, pois a fonte primária ("NT Conjunta DFe 2025.001") ainda não está disponível localmente. Veja
context-library/countries/br.mdpara detalhes.
Arquitetura
mcp-nfe-br/
├── src/
│ └── mcp_nfe_br/
│ ├── __init__.py
│ ├── server.py # ponto de entrada MCP e registro de ferramentas
│ ├── models/
│ │ ├── __init__.py
│ │ └── invoice.py # BRInvoice, BRInvoiceLine, NFeModelo, TipoOperacao
│ ├── tools/
│ │ ├── __init__.py
│ │ └── validation.py # br__validate_cpf, br__validate_cnpj
│ └── utils/
│ ├── __init__.py
│ └── document_ids.py # validate_cpf, validate_cnpj
├── tests/
│ ├── conftest.py
│ ├── fixtures/
│ └── test_tools/
│ └── test_validation.py
├── specs/nfe/ # material normativo (XSDs, MOC, Notas Técnicas — não publicado)
├── audit/
│ ├── audit_vs_core.py
│ └── report.json
├── .github/workflows/publish.yml
├── pyproject.toml
├── RELEASE.md
└── LICENSE
Relação com mcp-einvoicing-core
mcp-einvoicing-core fornece:
- Modelos Pydantic base para faturas, partes, itens e resultados de validação (
InvoiceDocument,InvoiceLineItem,TaxIdValidationResult) - Infraestrutura comum de servidor MCP (
EInvoicingMCPServer) - Cliente HTTP/OAuth2, cache de tokens, logging estruturado, hierarquia de exceções
mcp-nfe-br adiciona a lógica específica do Brasil:
BRInvoice(extensão deInvoiceDocument— NF-e/NFC-e não tem ascendência EN 16931)- Campos de Grupo I (NCM, CFOP, ICMS/IPI/PIS/COFINS) em
BRInvoiceLine - Validação de CPF/CNPJ (incluindo o CNPJ alfanumérico da NT 2026.004)
Contribuindo
Contribuições são bem-vindas. Abra uma issue para discutir mudanças significativas antes de enviar um pull request.
git clone https://github.com/cmendezs/mcp-nfe-br.git
cd mcp-nfe-br
uv sync --all-extras
uv run pytest
uv run ruff check src/mcp_nfe_br tests audit
uv run mypy src/mcp_nfe_br
Outros servidores MCP de faturamento eletrônico
| País | Servidor |
|---|---|
| 🌍 Global | mcp-einvoicing-core |
| 🇧🇪 Bélgica | mcp-einvoicing-be |
| 🇧🇷 Brasil | mcp-nfe-br |
| 🇫🇷 França | mcp-facture-electronique-fr |
| 🇩🇪 Alemanha | mcp-einvoicing-de |
| 🇮🇹 Itália | mcp-fattura-elettronica-it |
| 🇵🇱 Polônia | mcp-ksef-pl |
| 🇪🇸 Espanha | mcp-facturacion-electronica-es |
Licença
Este projeto está licenciado sob Apache 2.0 — veja LICENSE para detalhes.
Changelog
Veja RELEASE.md para o histórico completo de versões.
Project details
Release history Release notifications | RSS feed
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_nfe_br-0.1.0.tar.gz.
File metadata
- Download URL: mcp_nfe_br-0.1.0.tar.gz
- Upload date:
- Size: 98.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa10934f9e7f67fde90de843791c22949c294dc585d7aa9d8af07dedad306b69
|
|
| MD5 |
91180919970a77c64e2d3c1906f462ab
|
|
| BLAKE2b-256 |
5874ade6d617bf240afbd26a0602a78e7a65c87f7758703f86191e0653493b8c
|
Provenance
The following attestation bundles were made for mcp_nfe_br-0.1.0.tar.gz:
Publisher:
publish.yml on cmendezs/mcp-nfe-br
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_nfe_br-0.1.0.tar.gz -
Subject digest:
fa10934f9e7f67fde90de843791c22949c294dc585d7aa9d8af07dedad306b69 - Sigstore transparency entry: 1808195863
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-nfe-br@a3e13abc91c4b65a674f3213196a7aff5123a57b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cmendezs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a3e13abc91c4b65a674f3213196a7aff5123a57b -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_nfe_br-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mcp_nfe_br-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.5 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 |
9383df3a6983804b3bd511bbf3b2cc04c8817e985b3b49fe1294bff0d39b1ab9
|
|
| MD5 |
b295aa9cc3acf02819ac480c3bea8c06
|
|
| BLAKE2b-256 |
24b922db6cb98be38e44b42bed3032da72234039c40c0175594d5ae817e4ed8a
|
Provenance
The following attestation bundles were made for mcp_nfe_br-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on cmendezs/mcp-nfe-br
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_nfe_br-0.1.0-py3-none-any.whl -
Subject digest:
9383df3a6983804b3bd511bbf3b2cc04c8817e985b3b49fe1294bff0d39b1ab9 - Sigstore transparency entry: 1808195887
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-nfe-br@a3e13abc91c4b65a674f3213196a7aff5123a57b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cmendezs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a3e13abc91c4b65a674f3213196a7aff5123a57b -
Trigger Event:
push
-
Statement type: