Documentação

Servidor MCP

Conecte um agente de IA ao Minha CNH pelo Servidor MCP: consulta de habilitação, cálculo de pontos e relatórios, sem escrever integração.

A segunda porta da plataforma: expõe os mesmos dados de CNH via Model Context Protocol, para que agentes de IA e chatbots consumam relatórios como tools nativas — sem escrever um cliente HTTP manual.

Escolha o MCP quando um agente de IA (ou um cliente desktop como o Claude Desktop) precisa descobrir e chamar as ferramentas sozinho. Para backends, ETLs e filas, a API REST é o caminho.

A chave que você já tem serve

Autenticação, cobrança e rate limits vêm da Plataforma e são os mesmos da API REST. Se sua organização já tem acesso habilitado e uma API key, você já pode conectar — ver Conectar.

Endpoint

POST https://minhacnh.doutormultas.com.br/api/mcp

Transporte Streamable HTTP, stateless: cada requisição é uma mensagem JSON-RPC 2.0 completa, com o Bearer token no header Authorization. Não há mcp-session-id, SSE ou estado entre chamadas.

Como conectar

Há duas formas de conectar, detalhadas em Conectar:

  • API key da organização (server-to-server) — o backend/agente da sua organização usa a mesma chave cnh_live_ da API REST.
  • OAuth por usuário — para clientes de IA desktop (Claude Desktop, Claude Cowork, ChatGPT) que esperam o fluxo moderno de conector MCP.

Lá estão os blocos prontos para colar em Claude Code, Cursor e VS Code. Antes de qualquer credencial, tools/list já responde: o catálogo de ferramentas é público, dá para inspecioná-lo com um curl.

As dez ferramentas disponíveis (paridade total com a API REST) estão catalogadas em Ferramentas.

Modelo assíncrono

A geração do relatório leva alguns minutos. request_report não bloqueia esperando o resultado — escolha uma das três formas de recebê-lo:

  • Polling — chame get_report periodicamente com o reportId até status virar DELIVERED ou ERROR.
  • Espera bounded — chame wait_for_report com o reportId; ela faz o polling internamente e retorna assim que o relatório terminar (ou uma resposta PROCESSING se o timeoutSeconds acabar antes), poupando o loop manual de polling num agente síncrono.
  • Webhook — configure a URL de webhook em Configurações → API e receba o evento report.delivered (ou report.failed) assim que o pipeline terminar. Ver Webhooks.

Para integrações fire-and-forget, o webhook é a forma recomendada — evita polling desnecessário.

Próximos passos