Skip to main content

MCP server for Brazilian electronic invoicing (NF-e / NFC-e)

Project description

mcp-nfe-br 🇧🇷

PyPI version Python License


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

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.md para 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 de InvoiceDocument — 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_nfe_br-0.1.0.tar.gz (98.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_nfe_br-0.1.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

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

Hashes for mcp_nfe_br-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fa10934f9e7f67fde90de843791c22949c294dc585d7aa9d8af07dedad306b69
MD5 91180919970a77c64e2d3c1906f462ab
BLAKE2b-256 5874ade6d617bf240afbd26a0602a78e7a65c87f7758703f86191e0653493b8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_nfe_br-0.1.0.tar.gz:

Publisher: publish.yml on cmendezs/mcp-nfe-br

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for mcp_nfe_br-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9383df3a6983804b3bd511bbf3b2cc04c8817e985b3b49fe1294bff0d39b1ab9
MD5 b295aa9cc3acf02819ac480c3bea8c06
BLAKE2b-256 24b922db6cb98be38e44b42bed3032da72234039c40c0175594d5ae817e4ed8a

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page