licinexus-mcp
Official<p align="right">
đ§đ· PortuguĂȘs · đșđž <a href="README.en.md"><b>English version</b></a>
</p>
<p align="center">
<a href="https://licinexus.com.br">
<img src=".github/assets/logo.png" alt="Licinexus" width="380">
</a>
</p>
<h1 align="center">@licinexusbr/mcp</h1>
<p align="center">
Acesso conversacional aos dados de licitaçÔes pĂșblicas brasileiras â direto do Claude Desktop, Cursor, Continue ou qualquer cliente compatĂvel com MCP.
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/licença-MIT-blue.svg" alt="MIT"></a>
<a href="https://developercertificate.org/"><img src="https://img.shields.io/badge/DCO-obrigatĂłrio-green.svg" alt="DCO"></a>
<a href="https://pncp.gov.br"><img src="https://img.shields.io/badge/dados-PNCP%20%2B%20Receita%20Federal-yellow.svg" alt="PNCP + Receita"></a>
<a href="https://www.npmjs.com/package/@licinexusbr/mcp"><img src="https://img.shields.io/npm/v/@licinexusbr/mcp.svg?label=npm" alt="npm"></a>
</p>
<p align="center">
Mantido pela <a href="https://licinexus.com.br"><b>Licinexus</b></a> como contribuição open source ao ecossistema brasileiro de govtech.
</p>
<p align="center">
đ <b>Quer notificaçÔes de novas versĂ”es?</b> Clica em <b>Watch â Custom â Releases</b> no topo do repositĂłrio â toda nova release cai na sua caixa de notificaçÔes sem encher o feed.
</p>
<!-- BEGIN: hero demo -->
<p align="center">
<img src=".github/assets/demo.gif" alt="Demo: Licinexus MCP em ação contra PNCP + Receita Federal" width="900">
</p>
<!-- END: hero demo -->
> đș **A demonstração acima** Ă© um script CLI chamando os mesmos adaptadores que o LLM usa, contra PNCP e BrasilAPI ao vivo. A experiĂȘncia no Claude Desktop / Cursor Ă© idĂȘntica â mesmas ferramentas, mesmos dados, com o LLM fazendo a interpretação em linguagem natural.
---
## O que faz
Encapsula os endpoints mais Ășteis do **Portal Nacional de ContrataçÔes PĂșblicas (PNCP)** e dos dados de CNPJ da **Receita Federal**, para que um LLM consiga responder perguntas reais sobre contrataçÔes pĂșblicas brasileiras:
- _"Quais editais de TI no Sudeste publicados nos Ășltimos 7 dias com valor acima de R$ 500 mil?"_
- _"Existe ata de registro de preço vigente com saldo para `notebook` no estado de SP?"_
- _"Qual o histĂłrico de contratos do CNPJ X com ĂłrgĂŁos pĂșblicos federais nos Ășltimos 2 anos?"_
- _"O que a Prefeitura de Y planeja comprar este ano segundo o PCA?"_
- _"Resuma este edital e me dĂȘ uma lista de verificação de viabilidade."_
## đ Como usar
### Pré-requisitos
- **Node.js 18 ou superior** instalado ([nodejs.org](https://nodejs.org))
- Qualquer cliente compatĂvel com MCP (lista abaixo)
Nenhuma chave de API, nenhum cadastro, nenhum banco local â o servidor consulta endpoints pĂșblicos diretamente.
> â ïž **Importante:** Este Ă© um servidor MCP **stdio-based**. VocĂȘ **nĂŁo** roda ele diretamente no terminal â Ă© o **cliente MCP** (Claude Desktop, Cursor, etc.) que invoca o servidor quando precisa, e a comunicação acontece por JSON-RPC via stdin/stdout. Se vocĂȘ executar `npx @licinexusbr/mcp` direto no terminal, vai parecer que "travou" â Ă© normal, o servidor estĂĄ esperando o cliente conectar.
>
> Da mesma forma, `npx -y @licinexusbr/mcp` **nĂŁo Ă© uma instalação global** â apenas baixa o pacote pra um cache local (`~/.npm/_npx/`) e executa. O cliente MCP invoca `npx` toda vez que precisa do servidor; execuçÔes subsequentes usam o cache e sĂŁo instantĂąneas. (VocĂȘ tambĂ©m pode usar `npm exec` em vez de `npx` â sĂŁo equivalentes.)
---
### 1. Claude Desktop â (recomendado)
#### Caminho A â Via UI (Claude Desktop â„ 4.x)
1. Abra o **Claude Desktop**
2. `Cmd + ,` (macOS) ou `Ctrl + ,` (Windows) â **ConfiguraçÔes**
3. Barra lateral â **Conectores**
4. Clica em **"Editar Configuração"** (Aplicativo desktop â Desenvolvedor)
5. Abre o arquivo `claude_desktop_config.json` no seu editor
Substitua (ou adicione dentro de `mcpServers`):
```json
{
"mcpServers": {
"licinexus": {
"command": "npx",
"args": ["-y", "@licinexusbr/mcp"]
}
}
}
```
6. Salve o arquivo (`Cmd+S`)
7. **Encerre o Claude completamente** (`Cmd+Q` â nĂŁo basta fechar a janela) e reabra
#### Caminho B â Editando o arquivo direto
| SO | Caminho |
| ----------- | ----------------------------------------------------------------- |
| **macOS** | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| **Windows** | `%APPDATA%\Claude\claude_desktop_config.json` |
| **Linux** | _NĂŁo oficialmente suportado pelo Claude Desktop ainda_ |
#### Como verificar que funcionou
ApĂłs reabrir, na conversa nova:
- Em **ConfiguraçÔes â Conectores â licinexus**, vocĂȘ deve ver **18 ferramentas** listadas (`search_licitacoes`, `get_cnpj_data`, etc.)
- No campo de prompt, digite:
```
Quais ferramentas do licinexus vocĂȘ tem disponĂveis?
```
O Claude deve listar as 18 ferramentas. Pode prosseguir.
#### Primeiros prompts para testar
```
Me mostra os dados do CNPJ 00000000000191 (Banco do Brasil)
```
```
Tem ata de registro de preço vigente para notebook em SĂŁo Paulo com saldo disponĂvel?
```
```
O que a Prefeitura de Juiz de Fora planeja comprar este ano segundo o PCA?
```
```
Quais editais de tecnologia da informação foram publicados nos Ășltimos 7 dias acima de R$ 200 mil?
```
---
### 2. Cursor
Cursor suporta MCP servers nativamente. Crie/edite o arquivo `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"licinexus": {
"command": "npx",
"args": ["-y", "@licinexusbr/mcp"]
}
}
}
```
Ou via UI: **Cursor â Settings â MCP â Add new MCP server**.
Reinicie o Cursor. As ferramentas aparecem no chat do Composer.
---
### 3. Continue.dev (VS Code / JetBrains)
Edite o arquivo `~/.continue/config.json` (ou `config.yaml`):
```json
{
"mcpServers": [
{
"name": "licinexus",
"command": "npx",
"args": ["-y", "@licinexusbr/mcp"]
}
]
}
```
Recarregue o Continue (`Cmd+Shift+P` â "Continue: Reload"). As ferramentas ficam disponĂveis no chat.
---
### 4. Cline / Roo Code (extensĂŁo VS Code)
Pela UI do Cline:
1. Abra a extensĂŁo Cline na sidebar do VS Code
2. Ăcone de configuraçÔes â **MCP Servers** â **Edit MCP Settings**
3. Adicione:
```json
{
"mcpServers": {
"licinexus": {
"command": "npx",
"args": ["-y", "@licinexusbr/mcp"]
}
}
}
```
---
### 5. Zed editor
Edite `~/.config/zed/settings.json` (macOS/Linux) e adicione:
```json
{
"context_servers": {
"licinexus": {
"command": {
"path": "npx",
"args": ["-y", "@licinexusbr/mcp"]
}
}
}
}
```
Reinicie o Zed.
---
### 6. ChatGPT
O **ChatGPT consumer (web)** não suporta MCP stdio nativamente até o momento. Mas då pra usar via:
#### Via OpenAI Agents SDK (Python)
```python
from openai import OpenAI
from openai.agents import Agent, MCPServerStdio
server = MCPServerStdio(
command="npx",
args=["-y", "@licinexusbr/mcp"]
)
agent = Agent(
name="Licinexus Assistant",
instructions="VocĂȘ Ă© um analista de licitaçÔes pĂșblicas brasileiras.",
mcp_servers=[server]
)
```
#### ChatGPT Desktop
VersĂ”es recentes tĂȘm suporte limitado a MCP â verifique a documentação oficial da OpenAI para o estado atual.
---
### 7. Programaticamente (qualquer LLM via stdio)
VocĂȘ pode chamar o servidor diretamente via stdio em qualquer linguagem que suporte o protocolo JSON-RPC do MCP. Exemplo Node:
```typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', '@licinexusbr/mcp'],
});
const client = new Client({ name: 'meu-app', version: '1.0.0' }, { capabilities: {} });
await client.connect(transport);
const tools = await client.listTools();
console.log(tools);
const result = await client.callTool({
name: 'search_atas_rp',
arguments: { palavraChave: 'notebook', somenteVigentes: true },
});
```
---
## đ§ Troubleshooting
### "Server failed to start" ou "command not found: npx"
**Causa:** Claude Desktop / outro cliente nĂŁo acha o `npx` no `PATH`.
**Solução:** use o caminho absoluto. Descubra com:
```bash
which npx
```
E substitua no config:
```json
{
"mcpServers": {
"licinexus": {
"command": "/opt/homebrew/bin/npx",
"args": ["-y", "@licinexusbr/mcp"]
}
}
}
```
### "Ferramentas nĂŁo aparecem apĂłs salvar config"
**Solução:** reinicie o cliente **completamente**. No Mac, `Cmd+Q` (não basta fechar a janela). MCP servers só são carregados na inicialização.
### "EACCES" ou erro de permissĂŁo
**Causa:** cache do `npx` corrompido ou permissĂŁo de escrita.
**Solução:**
```bash
npm cache clean --force
npx -y @licinexusbr/mcp
```
### VersĂŁo antiga sendo executada
**Causa:** `npx` mantém cache. Para forçar a versão mais recente:
```bash
npx -y @licinexusbr/mcp@latest
```
E no config:
```json
"args": ["-y", "@licinexusbr/mcp@latest"]
```
### Timeout em consultas grandes
Algumas consultas (busca por palavra-chave ampla, datas longas) podem demorar â o PNCP Ă s vezes leva 15-30s para responder. O servidor jĂĄ implementa retry budget. Se persistir, refine a consulta com filtros mais especĂficos.
### Logs e debug
Para inspecionar requisiçÔes/respostas, rode manualmente no terminal:
```bash
LICINEXUS_LOG_LEVEL=debug npx -y @licinexusbr/mcp
```
E em outra janela, observe os logs enquanto o cliente faz chamadas.
### Idioma das mensagens de erro
Por padrĂŁo, as mensagens de erro retornadas pelas tools estĂŁo em portuguĂȘs. Para recebĂȘ-las em inglĂȘs:
```bash
LICINEXUS_LANG=en npx -y @licinexusbr/mcp
```
Valores aceitos: `pt` (padrĂŁo) ou `en`.
## Ferramentas (18)
### Compras / LicitaçÔes
| Ferramenta | O que faz |
| --------------------------- | --------------------------------------------------------------------------- |
| `search_licitacoes` | Busca editais por data, modalidade, UF, CNPJ do ĂłrgĂŁo, valor, palavra-chave |
| `get_licitacao` | Detalhes completos de um edital pelo nĂșmero de controle PNCP |
| `list_licitacao_itens` | Itens (lotes) de um edital: descriçÔes, quantidades, valores |
| `list_licitacao_resultados` | Resultados da disputa por item: vencedores, preços, fornecedores |
| `list_licitacao_arquivos` | Documentos do edital (PDFs, anexos, termos de referĂȘncia) |
### Contratos
| Ferramenta | O que faz |
| ---------------------------- | --------------------------------------------------------- |
| `search_contratos` | Busca contratos por data, ĂłrgĂŁo, fornecedor, valor |
| `get_contrato` | Detalhes completos de um contrato |
| `list_contrato_termos` | Termos aditivos (prorrogaçÔes, alteraçÔes de valor/prazo) |
| `list_contrato_instrumentos` | Instrumentos de cobrança (NFes, faturas) |
### Atas de Registro de Preço
| Ferramenta | O que faz |
| ---------------- | ------------------------------------------------------------------------------ |
| `search_atas_rp` | Busca atas de RP â apenas vigentes por padrĂŁo. Encontra contratos utilizĂĄveis. |
| `get_ata_rp` | Detalhes completos da ata + itens (com saldo disponĂvel) + arquivos |
### ĂrgĂŁos / Fornecedores / PCA
| Ferramenta | O que faz |
| -------------------------- | ------------------------------------------------------------------ |
| `get_orgao` | Perfil de ĂłrgĂŁo pĂșblico (poder, esfera, natureza jurĂdica) |
| `get_fornecedor_contratos` | Contratos pĂșblicos de um CNPJ como fornecedor |
| `search_pca` | Plano de Contratação Anual â sinal antecipado do que serĂĄ comprado |
| `list_pca_itens` | Itens planejados de um PCA especĂfico |
### Enriquecimento de CNPJ
| Ferramenta | O que faz |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_cnpj_data` | Cadastro da Receita Federal (CNAEs, sócios, capital, situação) via [BrasilAPI](https://brasilapi.com.br) (padrão) ou MinhaReceita (`CNPJ_PROVIDER=minhareceita`) |
### AnĂĄlise agregada (v0.2.0)
| Ferramenta | O que faz |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `aggregate_licitacoes_por_periodo` | SĂ©rie temporal de contagem (e opcional valor) sobre janela de atĂ© 5 anos, com bucketing dia/semana/mĂȘs/ano. Filtros por modalidade, UF, municĂpio, CNPJ, **esfera de governo** |
| `compare_periodos` | Compara dois perĂodos lado-a-lado retornando totais + delta absoluto e percentual. Ătil pra perguntas tipo "houve antecipação em ano eleitoral?" |
## Prompts prontos (4)
Fluxos prĂ©-construĂdos que seu assistente pode invocar diretamente:
| Prompt | O que faz |
| ------------------------ | ------------------------------------------------------------------ |
| `analyze_edital` | Lista de verificação de viabilidade de um edital |
| `analyze_orgao` | Perfil 360° de um ĂłrgĂŁo pĂșblico |
| `find_arp_opportunities` | Encontra atas vigentes com saldo disponĂvel para uma palavra-chave |
| `check_supplier` | Verificação bĂĄsica de dado pĂșblico sobre um CNPJ fornecedor |
## Recursos (2)
| URI | ConteĂșdo |
| ------------------------- | ----------------------------------------------------- |
| `licitacao://modalidades` | Tabela de referĂȘncia de modalidades PNCP (Lei 14.133) |
| `licinexus://scope` | O que este MCP faz e o que nĂŁo faz |
## Exemplo de sessĂŁo
```
VocĂȘ: Tem alguma ata de registro de preço vigente para notebooks?
Claude: [chama search_atas_rp com palavraChave="notebook", somenteVigentes=true]
Encontrei 12 atas vigentes mencionando notebooks. As 3 mais relevantes:
1. MinistĂ©rio da Justiça â vigĂȘncia atĂ© 2026-12-31, valor estimado R$ 2,4M
2. Prefeitura de SĂŁo Paulo â vigĂȘncia atĂ© 2026-09-30...
VocĂȘ: Detalhes da primeira, com saldos por item?
Claude: [chama get_ata_rp includeItens=true]
- Item 1: Notebook tipo I (16GB RAM, 512GB SSD) â saldo 1.200 unid, R$ 4.800/un
- Item 2: Notebook tipo II ...
```
## Roteiro de evolução
- [x] Fase 0 â Estrutura, governança, CI
- [x] Fase 1 â LicitaçÔes (5 ferramentas)
- [x] Fase 2 â Contratos + Aditivos + NFes (4 ferramentas)
- [x] Fase 3 â Atas RP (2 ferramentas)
- [x] Fase 4 â ĂrgĂŁos + Fornecedores + PCA (4 ferramentas)
- [x] Fase 5 â CNPJ + 4 prompts + 2 recursos (1 ferramenta)
- [x] Teste de fumaça contra APIs reais (15/15 endpoints)
- [x] **Fase 6 â Lançamento pĂșblico** (11/05/2026 · v0.1.0 no [npm](https://www.npmjs.com/package/@licinexusbr/mcp))
- [ ] Fase 7 â Adapters comunitĂĄrios (TCE/TCM estaduais, ComprasNet legado)
## Escopo
### O que este MCP faz
- Encapsula APIs **pĂșblicas** do governo brasileiro (PNCP, BrasilAPI).
- Devolve dado bruto estruturado â o LLM faz a anĂĄlise.
- Mantém cache local de respostas pesadas (LRU em memória, TTL curto).
### O que este MCP **nĂŁo** faz
- **NĂŁo** consulta nenhuma infraestrutura nem banco de dados privado da Licinexus.
- **NĂŁo** inclui o motor de correspondĂȘncia (matchmaking), pontuação de fornecedores, agregação de preços, artefatos gerados por IA ou qualquer dado proprietĂĄrio da Licinexus.
- **NĂŁo** substitui o produto [Licinexus](https://licinexus.com.br) â Ă© uma ferramenta open source complementar para a camada pĂșblica dos mesmos dados.
Veja [docs/architecture.md](docs/architecture.md) para o modelo completo de separação em trĂȘs paredes.
## Precisa de matchmaking automĂĄtico, alertas ou gestĂŁo de propostas?
O produto Licinexus Ă© construĂdo sobre essas mesmas fontes pĂșblicas, com motor de correspondĂȘncia proprietĂĄrio, pontuação inteligente e artefatos gerados por IA. **Este MCP intencionalmente nĂŁo replica esses recursos.**
â <https://licinexus.com.br>
## Como contribuir
PRs sĂŁo bem-vindos sob o [DCO](https://developercertificate.org/) (Developer Certificate of Origin) â assine seus commits com `git commit --signoff`.
Por favor, **abra uma issue antes** para discutir qualquer mudança não trivial. Veja [CONTRIBUTING.md](CONTRIBUTING.md).
## Suporte
Projeto comunitĂĄrio. **Melhor esforço, sem SLA.** Issues sĂŁo triadas em atĂ© 7 dias quando possĂvel.
Para suporte pago e funcionalidades do produto, veja [licinexus.com.br](https://licinexus.com.br).
## Segurança
Encontrou uma vulnerabilidade? Veja [SECURITY.md](SECURITY.md) para divulgação responsĂĄvel (nĂŁo abra issues pĂșblicas).
## Licença
MIT © Licinexus. Veja [LICENSE](LICENSE).
TDQS
Scored across 18 tools
Every tool targets a distinct entity or operation: search, get, list, aggregate. Tools like search_licitacoes, search_contratos, search_atas_rp, search_pca are clearly differentiated by entity. List tools are scoped to parent entities (e.g., list_licitacao_itens). No overlapping purposes.
All tools follow a consistent verb_noun pattern in snake_case, e.g., get_licitacao, search_contratos, aggregate_licitacoes_por_periodo, list_licitacao_itens. No mixing of styles or awkward abbreviations.
18 tools cover the domain of Brazilian public procurement well: search, detail, and list operations for licitaçÔes, contratos, atas, PCA, CNPJ, and órgãos. This is a reasonable scope without redundancy or missing core operations.
Core lifecycles (licitaçÔes, contratos, atas, PCA) are well-covered with search, get, and list tools. Gaps include inability to search bids by supplier CNPJ (only contracts) and lack of a tool to download files directly (URLs provided). Minor but notable.