Servidor MCP do cnpj.ia.br
Conecte Claude, Cursor, Windsurf, Codex ou um agente OpenAI à base de empresas do Brasil. Quatro ferramentas, login no claude.ai ou a mesma chave da API, e o mesmo custo em créditos.
O servidor MCP em https://mcp.cnpj.ia.br expõe a API como ferramentas para agentes: o agente consulta uma empresa, busca empresas por filtro, transforma uma descrição em filtros e consulta o uso, com o mesmo custo em créditos da API REST, por login no claude.ai ou pela mesma chave. Na conexão por chave, ela fica guardada no cliente do agente e vai ao servidor só no header de cada chamada, para validação; o agente não compra créditos nem muda de plano.
Conectar
claude.ai (conector personalizado)
Use a URL https://mcp.cnpj.ia.br (a raiz, sem /mcp):
- Adicione o conector com a URL.
- Clique em Conectar.
- Aprove o acesso na tela de autorização do servidor MCP do cnpj.ia.br e entre com a sua conta do portal (app.cnpj.ia.br).
- O navegador volta ao claude.ai com o conector ativo.
Em planos Team e Enterprise, só Owner ou Primary Owner adiciona o conector, em Organization settings › Connectors. Depois cada membro abre Customize › Connectors, encontra o conector (rótulo “Custom”) e clica em Connect para autenticar com a própria conta. Em planos individuais, o próprio usuário adiciona em Customize › Connectors › Add custom connector.
Outros clientes (chave no header)
Transporte HTTP, autenticação pela chave da conta no header Authorization. Crie a chave em app.cnpj.ia.br e cole no cliente:
Claude Desktop
{
"mcpServers": {
"cnpjia": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.cnpj.ia.br",
"--header", "Authorization: Bearer ${CNPJIA_KEY}"],
"env": { "CNPJIA_KEY": "cnpj_live_..." }
}
}
}
Claude Code
claude mcp add --transport http cnpjia https://mcp.cnpj.ia.br \
--header "Authorization: Bearer $CNPJIA_KEY"
Codex CLI
# Codex lê a chave da variável de ambiente a cada início; ela não fica no config.toml
export CNPJIA_KEY="cnpj_live_..."
codex mcp add cnpjia --url https://mcp.cnpj.ia.br --bearer-token-env-var CNPJIA_KEY
Cursor
{
"mcpServers": {
"cnpjia": {
"url": "https://mcp.cnpj.ia.br",
"headers": { "Authorization": "Bearer cnpj_live_..." }
}
}
}
Windsurf
{
"mcpServers": {
"cnpjia": {
"serverUrl": "https://mcp.cnpj.ia.br",
"headers": { "Authorization": "Bearer cnpj_live_..." }
}
}
}
OpenAI
import os
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-5",
tools=[{
"type": "mcp",
"server_label": "cnpjia",
"server_url": "https://mcp.cnpj.ia.br",
"headers": {"Authorization": f"Bearer {os.environ['CNPJIA_KEY']}"},
"require_approval": "never",
}],
input="Qual é a situação cadastral do CNPJ 00.000.000/0001-91?",
)
print(resp.output_text)
Os caminhos de arquivo variam por cliente (Claude Desktop: claude_desktop_config.json, que só aceita servidores locais e por isso usa a ponte mcp-remote; Cursor: .cursor/mcp.json; Windsurf: mcp_config.json). Com a conexão feita, tools/list devolve as quatro ferramentas abaixo e nada mais.
As quatro ferramentas
| Ferramenta | Operação da API | Créditos | Planos |
|---|---|---|---|
consultar_cnpj |
GET /v1/cnpjs/{cnpj} |
1 em basic, 6 em full |
todos |
buscar_empresas |
GET /v1/cnpjs |
1 por empresa retornada, até 20 por página | pagos; no Free responde insufficient_plan, e filtro acima do plano, filter_not_in_plan |
gerar_filtro |
POST /v1/filters/generate |
1 por chamada | todos |
ver_uso |
GET /v1/usage |
0 | todos |
gerar_filtro recebe uma descrição em linguagem natural (“padarias ativas em Curitiba optantes do Simples”) e devolve os filtros estruturados que buscar_empresas aceita. É a ponte entre a pergunta do usuário e a busca, e custa 1 crédito por chamada, independentemente do resultado.
Exemplos de perguntas
- “Qual é a situação cadastral e o CNAE principal do CNPJ 00.000.000/0001-91?” →
consultar_cnpjembasic. - “Me dá o telefone e os sócios do Banco do Brasil, CNPJ 00.000.000/0001-91.” →
consultar_cnpjemfull. - “Quantas empresas de software ativas existem em Florianópolis?” →
gerar_filtroe depoisbuscar_empresas; a primeira página já traz a contagem com teto. - “Quantos créditos ainda tenho este mês?” →
ver_uso.
O agente decide o perfil a partir do pedido; oriente-o no prompt do sistema se quiser forçar basic para economizar.
Limites
- Requisições por minuto: as do plano da conta, contadas junto com as chamadas da API REST. Um agente em loop atinge
rate_limitedrápido; o servidor devolve o erro comRetry-Aftere o agente deve esperar. - Free: 60 créditos por mês, sem
buscar_empresas. A ferramenta aparece emtools/list, mas respondeinsufficient_plancom um link para/precos. - Chave revogada: o servidor valida a chave com um cache de até 60 segundos; depois disso recusa a conexão.
Segurança
A chave fica no cliente do agente, em arquivo de configuração local ou em variável de ambiente, e chega ao servidor MCP no header de cada chamada, onde é validada contra a API. O servidor exige autenticação por login (OAuth) ou por chave, não guarda a chave e não tem operação de compra: crédito e plano se gerenciam no portal, por uma pessoa. Se um agente com acesso à chave sair do controle, revogue a chave no portal; a API recusa na próxima chamada e o MCP em até 60 segundos.
Relacionados
- Autenticação e Créditos, franquia e rate limit.
- Busca de empresas: os filtros que
gerar_filtroproduz ebuscar_empresasaceita. - Referência gerada do OpenAPI: cada operação com o campo
x-mcp-tool.
Perguntas frequentes
Preciso de OAuth para conectar o agente?
Não é obrigatório. No claude.ai, o conector personalizado conecta por login (OAuth), sem chave. Clientes configurados com a chave da conta a enviam no header Authorization: Bearer, a mesma da API REST.
Funciona no ChatGPT e em agentes OpenAI?
Em agentes construídos com a API da OpenAI, sim: a ferramenta mcp da Responses API aceita server_url e headers, como no exemplo da página. No app ChatGPT a conexão depende do que a OpenAI habilita para conectores MCP com autenticação por header na sua conta.
O agente pode comprar créditos ou mudar meu plano?
Não. O servidor MCP só expõe consulta, busca, geração de filtro e leitura de uso. Compra de pacote e troca de plano acontecem no portal, por uma pessoa autenticada.
O custo pelo MCP é o mesmo da API?
Sim. Cada ferramenta chama a operação correspondente da API e debita os mesmos créditos: uma consulta full pelo agente custa o que custaria por curl. O agente vê o saldo com ver_uso.
Por que a busca aparece na lista de ferramentas se meu plano é Free?
Porque a lista é a mesma para toda conta, e o agente precisa saber que a ferramenta existe para explicar ao usuário por que não pode usá-la. No Free ela responde insufficient_plan com um link para os planos, sem consumir crédito.