br-docs-mcp
MCP server for validating and generating Brazilian documents (CPF, CNPJ, and bank boletos) with 6 tools, a resource, and a prompt.
README
br-docs-mcp
Servidor MCP (Model Context Protocol) para validação e geração de documentos brasileiros: CPF, CNPJ e boleto bancário.
O que é
Uma implementação de servidor MCP que expõe 6 ferramentas para validar e gerar documentos brasileiros. Implementa os algoritmos de validação (módulo 11 para CPF e CNPJ, módulo 10 e 11 para boleto) e permite que clientes MCP (Claude, Cursor, etc.) utilizem essas funcionalidades via chamadas de ferramentas.
Funcionalidades e Tecnologias
| Funcionalidade | Descrição | Tecnologia |
|---|---|---|
| Validação de CPF | Valida CPF com algoritmo mod11, aceita formatado e bruto | TypeScript |
| Geração de CPF | Gera CPF válido e aleatório | Pure logic |
| Validação de CNPJ | Valida CNPJ com pesos mod11 específicos | TypeScript |
| Geração de CNPJ | Gera CNPJ válido e aleatório | Pure logic |
| Validação de Boleto | Valida linha digitável (47 dígitos, layout FEBRABAN): mod10 nos 3 campos + DV geral mod11 na posição 33 | TypeScript |
| Parse de Boleto | Extrai banco, valor e vencimento via fator de vencimento (com rollover de 22/02/2025) | Pure logic |
| MCP Tools | Expõe 6 ferramentas via Model Context Protocol | @modelcontextprotocol/sdk |
| MCP Resource | docs://validation-rules com a documentação dos algoritmos |
Markdown |
| MCP Prompt | audit_customer_record para auditar cadastros usando as tools |
Template |
| Testes | 40 testes, incluindo E2E MCP real (Client ↔ Server via InMemoryTransport) | Vitest |
| Clean Architecture | Lógica pura separada da camada MCP | src/domain |
Arquitetura
graph TB
subgraph Client["Cliente MCP (Claude, Cursor)"]
A["Chamada de Tool<br/>ou Leitura de Resource"]
end
subgraph Transport["Transporte"]
B["Stdio Transport<br/>JSON-RPC 2.0"]
end
subgraph Server["br-docs-mcp Server"]
C1["Tool: validate_cpf"]
C2["Tool: generate_cpf"]
C3["Tool: validate_cnpj"]
C4["Tool: generate_cnpj"]
C5["Tool: validate_boleto"]
C6["Tool: parse_boleto"]
C7["Resource: docs://validation-rules"]
C8["Prompt: audit_customer_record"]
end
subgraph Domain["Lógica Pura"]
D1["src/domain/cpf.ts"]
D2["src/domain/cnpj.ts"]
D3["src/domain/boleto.ts"]
end
A --> B --> C1
C1 --> D1
C2 --> D1
C3 --> D2
C4 --> D2
C5 --> D3
C6 --> D3
style Domain fill:#e1f5ff
style Server fill:#f3e5f5
style Transport fill:#fff3e0
Como rodar
Pré-requisitos
- Node.js >= 20
Instalação
npm install
Desenvolvimento
npm run dev
Build
npm run build
Saída em dist/index.js com shebang, pronto para uso via npx br-docs-mcp.
Como testar
Rodar testes
npm test
Modo watch
npm run test:watch
Type check
npm run type-check
Todos os 40 testes rodam 100% offline e cobrem:
- Validação de CPF/CNPJ formatado e bruto
- Rejeição de dígito verificador errado, comprimento inválido, dígitos repetidos
- Roundtrip gerar → validar (20 iterações para CPF e CNPJ)
- Boleto: linha válida construída nos testes (com mod10/mod11 independentes), campos corrompidos, DV geral errado
- Parse de boleto: banco, valor e vencimento — incluindo o rollover do fator (1000 = 22/02/2025) e fator 0000 (sem vencimento)
- E2E MCP real:
ClienteMcpServerconectados porInMemoryTransport.createLinkedPair(), listando as 6 tools, chamandovalidate_cpf, lendo o resource e obtendo o prompt
Uso com clientes MCP
Configuração no Claude Desktop / Cursor
Adicione a entrada no mcp.json:
{
"mcpServers": {
"br-docs-mcp": {
"command": "npx",
"args": ["br-docs-mcp"]
}
}
}
Exemplo de chamada
{
"name": "validate_cpf",
"arguments": {
"cpf": "529.982.247-25"
}
}
Resposta:
{
"valid": true
}
Ferramentas disponíveis
validate_cpf- Valida CPF →{ "valid": true }ou{ "valid": false, "reason": "check digit mismatch" }generate_cpf- Gera CPF válido →{ "cpf": "..." }validate_cnpj- Valida CNPJgenerate_cnpj- Gera CNPJ válidovalidate_boleto- Valida linha digitável de boletoparse_boleto- Extrai dados do boleto →{ "bankCode": "001", "amount": 1500, "dueDate": "2025-02-22" }
Resource disponível
docs://validation-rules- Documentação dos algoritmos
Prompt disponível
audit_customer_record- Audita registros de clientes usando as tools
Estrutura do projeto
.
├── src/
│ ├── domain/
│ │ ├── cpf.ts # Lógica pura de CPF
│ │ ├── cnpj.ts # Lógica pura de CNPJ
│ │ └── boleto.ts # Lógica pura de boleto (layout FEBRABAN)
│ ├── server.ts # Servidor MCP (tools, resource, prompt)
│ ├── validation-rules.ts # Markdown servido pelo resource
│ └── index.ts # Entrypoint stdio (#!/usr/bin/env node)
├── tests/
│ ├── domain/
│ │ ├── cpf.test.ts
│ │ ├── cnpj.test.ts
│ │ └── boleto.test.ts
│ └── e2e/
│ └── server.test.ts
├── package.json # bin: br-docs-mcp → dist/index.js
├── tsconfig.json
├── vitest.config.ts
├── README.md # Este arquivo
├── LICENSE # MIT
└── .gitignore
Publicação no npm
Build e teste
npm run type-check
npm test
npm run build
Publicar
npm publish
O script prepublishOnly garante que testes e build passam antes de publicar.
Origem
Inspirado em conceitos do curso de pós-graduação em Engenharia de Software com IA Aplicada — implementação própria do zero, usando TypeScript e clean architecture para demonstrar:
- Design domain-driven
- Separação de responsabilidades (domain vs. transport)
- Algoritmos de validação (mod11, mod10)
- Model Context Protocol (MCP)
- Test-driven development com Vitest
- Empacotamento npm com tipos
Licença
MIT - Copyright (c) 2026 Vicente Moura
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.