MCP na prática: como usar dados de empresas no Claude e no ChatGPT

Como conectar dados de empresas a assistentes de IA via MCP: configuração no Claude e no ChatGPT, fluxos úteis, servidor em Python e cuidados com custo e LGPD.

· 8 min de leitura

Durante muito tempo, levar dados de empresas para dentro de um assistente de IA significava exportar uma planilha, colar trechos na conversa e torcer para o modelo não inventar o resto. O MCP (Model Context Protocol) muda isso: o assistente passa a consultar a fonte de dados diretamente, com ferramentas bem definidas, e responde com base no que encontrou.

Este artigo explica o que é o MCP, como conectar um servidor de dados de empresas ao Claude e ao ChatGPT, quais fluxos de trabalho fazem sentido para times comerciais e de dados, e quais cuidados tomar com custo, segurança e LGPD. No fim, mostramos um servidor mínimo em Python para quem quer expor os próprios dados.

O que é o MCP

O MCP é um protocolo aberto, apresentado pela Anthropic no fim de 2024 e hoje adotado por vários assistentes e ferramentas de desenvolvimento. Ele padroniza a conversa entre um cliente (o aplicativo de IA) e um servidor (quem expõe dados e ações). Um servidor MCP pode oferecer três tipos de recurso:

  • ferramentas (tools): funções que o modelo pode chamar, como "buscar empresas" ou "contar empresas por CNAE";
  • recursos (resources): conteúdos de leitura, como um dicionário de campos ou a tabela de CNAEs;
  • prompts: modelos prontos de tarefas, como "montar um ICP a partir de uma lista de clientes".

Há dois transportes principais: stdio, para servidores que rodam na própria máquina, e Streamable HTTP, para servidores remotos. Servidores remotos costumam usar OAuth para autorização, ou uma chave de API enviada em cabeçalho.

Por que isso importa para dados de empresas

Perguntas comerciais raramente cabem num único filtro. "Quais distribuidoras de alimentos de Minas abriram filial este ano e ainda estão no Simples?" exige combinar filtros, contar, olhar exemplos e refinar. Com MCP, o assistente faz esse ciclo sozinho:

  1. interpreta a pergunta e escolhe os filtros (CNAE, UF, porte, datas);
  2. conta antes de listar, para saber se o resultado é viável;
  3. busca uma amostra e lê as fichas mais relevantes;
  4. resume, compara e sugere próximos passos, citando a fonte e a data de referência.

O ganho não é só de tempo: é de rastreabilidade. Cada número da resposta vem de uma chamada de ferramenta que pode ser auditada.

Como conectar

Os nomes dos menus mudam com frequência, então use os caminhos abaixo como referência e confira a documentação atual de cada produto. Nos exemplos, o servidor fictício fica em https://mcp.exemplo.com.br/mcp.

Claude (web e aplicativo)

Nos planos que oferecem conectores personalizados, adicione o servidor pela área de conectores das configurações, informando a URL. Se o servidor usar OAuth, o Claude abre a tela de login e consentimento do provedor; depois disso, as ferramentas aparecem disponíveis na conversa e você pode habilitar ou desabilitar cada uma.

Claude Code (terminal)

Para quem trabalha com código, o servidor pode ser adicionado por linha de comando:

Terminal
# servidor remoto via Streamable HTTP
claude mcp add --transport http dados-empresas https://mcp.exemplo.com.br/mcp

# com chave de API em cabeçalho, se o servidor aceitar esse modo
claude mcp add --transport http dados-empresas https://mcp.exemplo.com.br/mcp \
  --header "Authorization: Bearer $DADOS_EMPRESAS_API_KEY"

Clientes que só falam stdio

Alguns clientes ainda aceitam apenas servidores locais. Nesse caso, um adaptador como o mcp-remote faz a ponte entre stdio e o servidor remoto:

JSON
{
  "mcpServers": {
    "dados-empresas": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.exemplo.com.br/mcp"]
    }
  }
}

ChatGPT

O ChatGPT também aceita servidores MCP remotos como conectores, configurados na área de aplicativos e conectores. Dependendo do plano, a opção de adicionar servidores próprios exige ativar um modo para desenvolvedores. O fluxo é o mesmo: URL do servidor, autorização e escolha das ferramentas.

Fluxos de trabalho que funcionam bem

Alguns exemplos de pedidos e do que o assistente faz por trás:

Pedido O que o assistente faz
"Quantas clínicas odontológicas ativas existem em Campinas e região, por porte?" Converte texto em CNAE e municípios, chama a ferramenta de contagem e monta a tabela
"Monte uma lista de 30 empresas de software de BH com mais de 5 anos, priorizando quem tem filial" Conta, busca com filtros, ordena pelos critérios e devolve a lista com o motivo de cada escolha
"Prepare a reunião de amanhã com o CNPJ 11.222.333/0001-81" Lê a ficha, os sócios, as filiais e as mudanças recentes, e resume pontos de conversa
"Estas 200 linhas da planilha: quais CNPJs estão baixados ou inaptos?" Valida os CNPJs, consulta a situação em lote e devolve só os problemáticos
"Quais empresas da minha lista mudaram de endereço no último cadastro?" Consulta o histórico de mudanças e filtra pelo evento

O padrão comum é contar antes de listar e listar antes de detalhar. Um bom servidor induz esse comportamento com descrições claras nas ferramentas.

Cuidados que não são opcionais

Custo

Em muitos serviços de dados, chamadas de detalhe, exportação ou contatos consomem créditos. Um agente que decide sozinho pode gastar mais do que você imagina. Boas práticas:

  • prefira servidores que oferecem contagens sem custo e mostram o saldo restante;
  • peça ao assistente para estimar o consumo antes de ações em lote;
  • use chaves com limite de gasto quando o serviço permitir.

Ferramentas de escrita

Criar listas, exportar arquivos ou enviar dados para o CRM são ações com efeito fora da conversa. Mantenha a confirmação manual ativada para ferramentas de escrita e revise os parâmetros antes de aprovar.

Conteúdo externo é dado, não instrução

Campos como nome fantasia, descrição de site ou textos coletados da web podem conter frases que parecem comandos ("ignore as instruções anteriores..."). Um servidor bem feito devolve esses campos como dados estruturados, e um cliente bem configurado não os trata como ordens. Desconfie de qualquer resposta que mude de comportamento depois de ler um registro.

LGPD

Dados de pessoa física (sócios, empresários individuais, contatos nominais) continuam sujeitos à LGPD dentro do assistente. Prefira servidores que mascaram CPF, aplicam listas de remoção a pedido do titular e separam permissões para dados pessoais. E lembre que o conteúdo das conversas também é tratamento de dados: verifique as políticas de retenção do assistente que você usa.

Confiança nas respostas

Peça sempre a fonte e a data de referência dos números. Um assistente pode resumir mal ou extrapolar. A vantagem do MCP é que cada número vem de uma chamada verificável, então confira as chamadas quando a decisão for importante.

Um servidor mínimo em Python

Se você já tem dados de empresas num banco, expor uma ferramenta via MCP é simples. O exemplo abaixo usa o SDK oficial de Python (versão 2.x) e uma tabela no ClickHouse. Ele oferece uma única ferramenta, somente leitura, que conta empresas por CNAE e UF:

Python
from typing import Annotated

import clickhouse_connect
from pydantic import Field

from mcp.server.mcpserver import MCPServer
from mcp.types import ToolAnnotations

mcp = MCPServer(
    "dados-empresas",
    instructions="Dados cadastrais de empresas brasileiras (base pública da Receita Federal). "
    "Use contar_empresas antes de listar, para dimensionar o resultado.",
)
db = clickhouse_connect.get_client(host="localhost", username="leitura", password="...")


@mcp.tool(annotations=ToolAnnotations(read_only_hint=True))
def contar_empresas(
    cnae: Annotated[str, Field(description="Subclasse CNAE com 7 dígitos, ex.: 6201501")],
    uf: Annotated[str, Field(description="Sigla da UF, ex.: SP")],
) -> dict:
    """Conta estabelecimentos ativos e empresas distintas por CNAE principal e UF.
    Não consome créditos. Use para dimensionar mercado antes de listar empresas."""
    linha = db.query(
        "SELECT count(), uniqExact(cnpj_basico) FROM estabelecimentos "
        "WHERE situacao = '02' AND cnae_principal = {cnae:String} AND uf = {uf:String}",
        parameters={"cnae": cnae, "uf": uf.upper()},
    ).first_row
    return {"estabelecimentos": linha[0], "empresas": linha[1], "fonte": "Receita Federal"}


if __name__ == "__main__":
    mcp.run(transport="streamable-http")

Três detalhes merecem atenção:

  • Parâmetros vinculados ({cnae:String}) em vez de concatenar texto na consulta: o modelo controla os argumentos, então trate-os como entrada não confiável.
  • Descrições ricas: o modelo escolhe ferramentas pela descrição. Diga o que a ferramenta faz, quando usá-la e se ela tem custo.
  • Anotação de somente leitura: ajuda o cliente a decidir quando pedir confirmação.

Antes de publicar um servidor assim, acrescente autenticação, limite de requisições, paginação nas ferramentas de listagem e registro de auditoria das chamadas.

Dicas para desenhar boas ferramentas

  • Poucas ferramentas, bem nomeadas, valem mais que dezenas de variações.
  • Saída compacta e paginada: devolva só os campos necessários e um cursor para a próxima página.
  • Contagens e agregações separadas das listagens, de preferência sem custo.
  • Erros úteis: "CNAE inválido; use 7 dígitos, por exemplo 6201501" ajuda o modelo a se corrigir.
  • Fonte e data em toda resposta, para que o assistente possa citá-las.

Conclusão

Com MCP, dados de empresas deixam de ser uma planilha colada na conversa e passam a ser uma fonte consultável, com chamadas rastreáveis. Para tirar proveito disso com segurança, conecte servidores confiáveis, mantenha confirmação nas ações de escrita, controle o custo das chamadas, cuide dos dados pessoais e peça sempre a fonte dos números.

A CNPJpedia tem servidor MCP e API REST para dados de empresas brasileiras. Veja como conectar na página de desenvolvedores.

Experimente a busca na CNPJpedia

Filtre empresas por CNAE, região, porte e situação cadastral na base da Receita Federal. Comece pelo plano grátis.

Criar conta grátis