mcp-nfe-br
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.2.0): fase 1 do roadmap — validação de CPF/CNPJ, geração de XML NF-e/NFC-e (não assinado) e validação contra o XSD oficial (PL_010d, variante sem assinatura). Assinatura digital ICP-Brasil e integração com os webservices da SEFAZ estão planejadas para versões futuras — os documentos gerados são não assinados e não são transmitidos à SEFAZ por este servidor. NFS-e (nota fiscal de serviços) e CT-e (conhecimento de transporte) são fases posteriores, fora do escopo desta versão.
Related MCP server: mcp-einvoicing-de
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.2.0): Phase 1 of the roadmap — CPF/CNPJ tax-ID validation, unsigned NF-e/NFC-e XML generation, and XSD validation against the official PL_010d schema (unsigned variant). ICP-Brasil digital signing and SEFAZ webservice submission are planned for future releases — generated documents are unsigned and are not transmitted to SEFAZ by this server. 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-brUsando pip
pip install mcp-nfe-brA partir do cĂłdigo-fonte
git clone https://github.com/cmendezs/mcp-nfe-br.git
cd mcp-nfe-br
uv sync --all-extrasConfiguraçã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 |
| Ambiente SEFAZ: |
|
| NĂvel de log: |
|
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 |
|
| 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 |
|
| 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.
br__generate_nfe
Gera um documento NF-e/NFC-e 4.00 não assinado (<NFe><infNFe>…</infNFe></NFe>) a partir de um objeto BRInvoice.
Parâmetro | Tipo | Obrigatório | Descrição |
|
| sim | Documento |
Retorna {"xml": ..., "chave_acesso": ..., "warnings": [...]}. Os avisos em português lembram que o documento não está assinado (ICP-Brasil) e não foi transmitido à SEFAZ — ambas as etapas ficam a cargo de um processo separado.
Cobertura da fase 1 para os grupos de tributos por item:
Tributo | CĂłdigos suportados | Comportamento |
ICMS | CST | outros cĂłdigos geram |
PIS/COFINS | CST | grupo omitido se |
IPI | CST | grupo omitido se |
[NEED: IBS/CBS/Imposto Seletivo — Grupo UB/W03 (NT 2025.002-RTC) ainda não modelado, ver context-library/countries/br.md "Known gaps"].
br__validate_nfe_xml
Valida um XML NF-e/NFC-e 4.00 contra o XSD oficial PL_010d (variante local "sem assinatura" — veja nota abaixo).
Parâmetro | Tipo | Obrigatório | Descrição |
|
| nĂŁo* | XML como string |
|
| nĂŁo* | XML codificado em base64 |
* Exatamente um de xml_content/xml_base64 deve ser informado.
Retorna {"valid": bool, "errors": [...], "metadata": {"schema_version": ...}}.
[Inference]: o XSD oficial (
nfe_v4.00.xsd/leiauteNFe_v4.00.xsd, PL_010d) exige<ds:Signature>como filho obrigatório de<NFe>. Como a fase 1 gera documentos não assinados, esta ferramenta valida contra uma cópia derivada local (nfe_v4.00_unsigned.xsd) onde<ds:Signature>passou a ser opcional (minOccurs="0"). A validação de documentos assinados (fase futura) deve usar o XSD oficial sem modificações.
br__build_access_key
Monta uma chave de acesso (chNFe, 44 caracteres) com dĂgito verificador mĂłdulo 11, a partir dos componentes cUF, dhEmi, CNPJ do emitente, modelo, sĂ©rie e nĂşmero do documento.
Parâmetro | Tipo | Obrigatório | Descrição |
|
| sim | CĂłdigo IBGE da UF (2 dĂgitos) |
|
| sim | Data/hora de emissĂŁo (ISO 8601) |
|
| sim | CNPJ do emitente (numérico ou alfanumérico PL_010d) |
|
| sim |
|
|
| sim | Série do documento |
|
| sim | NĂşmero do documento |
|
| nĂŁo | Forma de emissĂŁo (padrĂŁo |
|
| nĂŁo | CĂłdigo numĂ©rico aleatĂłrio (cNF, 8 dĂgitos); gerado automaticamente se omitido |
Retorna {"chave_acesso": ..., "cnf": ...}.
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
│ ├── standards/
│ │ ├── __init__.py
│ │ └── nfe_generator.py # NFeGenerator — gera NF-e/NFC-e 4.00 não assinada
│ ├── validators/
│ │ ├── __init__.py
│ │ └── nfe_xsd.py # NFeXSDValidator — valida contra XSD PL_010d (variante sem assinatura)
│ ├── schemas/nfe/ # XSDs bundled (oficiais + variantes "_unsigned")
│ ├── tools/
│ │ ├── __init__.py
│ │ ├── validation.py # br__validate_cpf, br__validate_cnpj
│ │ └── generation.py # br__generate_nfe, br__validate_nfe_xml, br__build_access_key
│ └── utils/
│ ├── __init__.py
│ ├── document_ids.py # validate_cpf, validate_cnpj
│ └── access_key.py # build_access_key, access_key_check_digit
├── tests/
│ ├── conftest.py
│ ├── fixtures/
│ ├── test_tools/
│ │ ├── test_validation.py
│ │ └── test_generation.py
│ ├── test_standards/
│ │ └── test_nfe_generator.py
│ ├── test_validators/
│ │ └── test_nfe_xsd.py
│ └── test_utils/
│ └── test_access_key.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
└── LICENSERelaçã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
BRInvoiceLineValidaçã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_brOutros servidores MCP de faturamento eletrĂ´nico
PaĂs | Servidor |
🌍 Global | |
🇧🇪 Bélgica | |
🇧🇷 Brasil | |
🇫🇷 França | |
🇩🇪 Alemanha | |
🇮🇹 Itália | |
🇵🇱 Polônia | |
🇪🇸 Espanha |
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.
This server cannot be installed
Maintenance
Latest Blog Posts
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/cmendezs/mcp-nfe-br'
If you have feedback or need assistance with the MCP directory API, please join our Discord server