docs · base agosto/2026Atualizado em

Servidor MCP do cnpj.ia.br

Conecte Claude, Cursor, Windsurf ou um agente OpenAI à base de empresas do Brasil. Quatro ferramentas, a mesma chave da API, o mesmo custo em créditos e a chave sempre no cliente do agente.

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 a mesma chave e o mesmo custo em créditos da API REST. A chave 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

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"
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
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_cnpj em basic.
  • “Me dá o telefone e os sócios do Banco do Brasil, CNPJ 00.000.000/0001-91.” → consultar_cnpj em full.
  • “Quantas empresas de software ativas existem em Florianópolis?” → gerar_filtro e depois buscar_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_limited rápido; o servidor devolve o erro com Retry-After e o agente deve esperar.
  • Free: 60 créditos por mês, sem buscar_empresas. A ferramenta aparece em tools/list, mas responde insufficient_plan com 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 não a guarda, não abre sessão sem ela 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

Perguntas frequentes

Preciso de OAuth para conectar o agente?

Não. O servidor aceita a chave da conta no header Authorization: Bearer, a mesma da API REST. Não há fluxo OAuth nem token separado para o MCP.

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.