RDW MCP Server

Consulte dados de registro de veículos da RDW holandesa para obter informações sobre veículos, combustível e emissões usando a API oficial de dados abertos da RDW.

Documentação

RDW MCP Server

npm version License: MIT

Um servidor Model Context Protocol (MCP) para consultar dados de registro de veículos da RDW holandesa (Rijksdienst voor het Wegverkeer). Dada uma placa de licença (kenteken), ele retorna especificações do veículo, dados de combustível/emissões, histórico de APK/inspeção, histórico de registro/propriedade, especificações de eixo e carroceria, códigos de defeito e status de recall aberto - tudo a partir da API oficial de dados abertos da RDW. Execute-o localmente via stdio/npx, ou implante-o como um servidor MCP remoto no Cloudflare Workers e conecte-o diretamente ao claude.ai.

Início Rápido

Escolha o seu método preferido:

  • Instalação Global (recomendado): npm install -g rdw-mcp-server → rdw-mcp
  • NPX (sem instalação): npx rdw-mcp-server
  • Desenvolvimento Local: Clone o repositório → npm install → npm run build → node build/index.js
  • Remoto (Cloudflare Workers): Nenhum processo local - implante uma vez, conecte-se do claude.ai como um conector personalizado. Veja Implantar como um servidor MCP remoto.

Teste a instalação:

rdw-mcp        # if globally installed
# OR
npx rdw-mcp-server  # if using npx

(Pressione Ctrl+C para parar)

Adicione ao Claude Desktop (veja a seção de Configuração abaixo)

Comece a fazer perguntas como:

  • "Consulte a placa 12-ABC-3"
  • "Mostre-me o histórico de APK e quaisquer defeitos técnicos para o kenteken 1-ABC-23"

Recursos

  • Consulta Completa de Placa: Obtenha informações disponíveis do veículo nos bancos de dados da RDW pela placa holandesa (kenteken)
  • Dados Abrangentes do Veículo: Especificações básicas, detalhes técnicos, pesos, dimensões e informações de registro
  • Combustível e Emissões Integrados: Tipo de combustível detalhado, emissões, especificações ambientais e níveis de som
  • Histórico de Inspeção APK: Histórico de relatórios de inspeção periódica e datas de expiração do APK resultantes
  • Histórico de Registro: Histórico de mudanças de propriedade/registro
  • Especificações Técnicas: Cargas por eixo, tipos de carroceria e dados técnicos detalhados
  • Registros de Defeitos: Códigos de defeito encontrados durante inspeções
  • Status de Recall Aberto: Se o veículo atualmente possui um recall aberto do fabricante
  • Dados em Tempo Real: Acesse informações atualizadas dos bancos de dados oficiais da RDW
  • Remoto ou Local: Execute localmente via stdio/npx, ou implante como um servidor MCP remoto sem servidor no Cloudflare Workers - veja Implantar como um servidor MCP remoto

Instalação

Instalação Global (Recomendado para uso via CLI)

npm install -g rdw-mcp-server

Após a instalação global, você pode executar o servidor diretamente:

rdw-mcp

Usando NPX (Execute sem instalar)

npx rdw-mcp-server

Isso executa o pacote diretamente sem instalá-lo globalmente.

A partir do Código Fonte (Desenvolvimento Local)

git clone https://github.com/yourusername/rdw-mcp-server.git
cd rdw-mcp-server
npm install
npm run build
node build/index.js

Uso

Como um Comando Global

Após a instalação global, inicie o servidor MCP:

Modo Stdio (Padrão):

rdw-mcp

Modo HTTP:

rdw-mcp --http          # Runs on port 3000
rdw-mcp --http --port=8080  # Custom port

O servidor suporta ambos os transportes stdio e HTTP:

  • Stdio: Para integração direta com linha de comando e Claude Desktop
  • HTTP: Para acesso remoto, integrações web e implantações escaláveis

Recursos do Transporte HTTP

Quando executado em modo HTTP (--http), o servidor fornece:

  • Endpoint MCP: POST /mcp - Endpoint principal do protocolo MCP
  • Verificação de Saúde: GET /health - Status do servidor e informações de versão
  • Suporte a CORS: Solicitações entre origens habilitadas para integrações web
  • Design sem Estado: Sem gerenciamento de sessão, perfeito para escalar
  • Tratamento de Erros: Códigos de status HTTP adequados e respostas de erro JSON-RPC

Exemplo de Uso HTTP:

# Start HTTP server
rdw-mcp --http --port=3000

# Health check
curl http://localhost:3000/health

# MCP requests (requires proper JSON-RPC format)
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Na Configuração do Cliente MCP (VS Code)

O suporte MCP do VS Code (.vscode/mcp.json) usa uma chave servers com um type explícito:

Usando instalação global (recomendado):

{
  "servers": {
    "rdw": {
      "type": "stdio",
      "command": "rdw-mcp"
    }
  }
}

Usando npx (alternativa):

{
  "servers": {
    "rdw": {
      "type": "stdio",
      "command": "npx",
      "args": ["rdw-mcp-server"]
    }
  }
}

Para o Claude Desktop, use a chave mcpServers mostrada em Configuração para Claude Desktop abaixo.

Modo de Desenvolvimento Local

Para desenvolvimento local a partir do código fonte:

git clone https://github.com/yourusername/rdw-mcp-server.git
cd rdw-mcp-server
npm install
npm run build
node build/index.js

Modo de Desenvolvimento

Para desenvolvimento com reconstrução automática:

npm run dev

Implante como um Servidor MCP Remoto (Cloudflare Workers)

Este repositório também inclui um ponto de entrada do Cloudflare Worker (src/worker.ts) que expõe a mesma ferramenta rdw-license-plate-lookup como um servidor MCP remoto - sem processo local, sem túnel, sem contêiner. Como esta ferramenta apenas faz proxy de dados abertos públicos da RDW (sem segredos, sem dados do usuário), ela pode ser adicionada ao claude.ai sem OAuth.

Isso é totalmente aditivo: a configuração existente de npx rdw-mcp-server / Claude Desktop stdio descrita acima não é afetada.

Opção A: Implante via painel do Cloudflare (sem CLI local necessário)

  1. Faça um fork ou envie este repositório para sua própria conta do GitHub.
  2. No painel do Cloudflare: Workers & Pages → Create → Import a Git repository.
  3. Autorize o aplicativo GitHub do Cloudflare (um clique OAuth único) e selecione seu repositório.
  4. O Cloudflare detecta automaticamente wrangler.jsonc e preenche o comando de build/deploy. Clique em Salvar e Implantar.
  5. O Cloudflare executa npm install + wrangler deploy na nuvem e fornece uma URL ativa, por exemplo, https://rdw-mcp-worker.<your-subdomain>.workers.dev.
  6. Todo push futuro para o branch conectado reconstrói e reimplanta automaticamente.

Opção B: Implante localmente com Wrangler

npm install
npm run cf:dev          # local Worker at http://localhost:8787

Verifique localmente com o Inspetor MCP:

npx @modelcontextprotocol/inspector
# connect to http://localhost:8787/mcp (Streamable HTTP) or http://localhost:8787/sse (SSE)

Então implante:

npx wrangler login   # first time only
npm run deploy

Adicione ao claude.ai

  1. claude.ai → Configurações → Conectores → Adicionar conector personalizado.
  2. Cole sua URL implantada com o caminho /mcp, por exemplo, https://rdw-mcp-worker.<your-subdomain>.workers.dev/mcp.
  3. Deixe os campos de ID do Cliente OAuth/Secreto em branco - este servidor não requer autenticação.
  4. Clique em Adicionar e depois habilite via + → Conectores em uma conversa.
  5. Experimente: "Consulte a placa 12-ABC-3".

Notas

O Worker é público após a implantação - qualquer pessoa com a URL pode chamar a consulta RDW através dele. Isso é aceitável, pois ele apenas faz proxy de dados RDW já públicos, sem autenticação também no lado da RDW, mas tenha isso em mente antes de adicionar ações de escrita ou dados privados no futuro (nesse ponto, adicione um provedor OAuth).

O Worker usa McpAgent (do pacote agents), que é suportado por Durable Objects e expõe tanto /mcp (HTTP Streamable) quanto /sse (SSE legado) para ampla compatibilidade com clientes.

Ferramenta Disponível

rdw-license-plate-lookup

Consulte informações do veículo nos bancos de dados da RDW pela placa holandesa.

Parâmetros:

  • kenteken (string): Placa holandesa a ser consultada

Retorna:

  • Informações do veículo dos bancos de dados da RDW, incluindo:
    • Detalhes Básicos: Marca, modelo, cor, tipo, variante, versão
    • Especificações Técnicas: Motor, potência, dimensões, cilindros, cilindrada
    • Peso e Capacidade: Peso vazio, peso em ordem de marcha, capacidade de reboque, cargas por eixo
    • Dados de Registro: Primeiro registro, histórico de mudanças de registro/propriedade, aprovação de tipo
    • Registros de Inspeção: Data de expiração do APK, histórico de relatórios de inspeção periódica, códigos de defeito encontrados
    • Combustível e Emissões: Tipo de combustível, níveis de emissões, classe de CO2, níveis de som
    • Informações de Segurança: Status de recall aberto (os dados abertos da RDW não expõem histórico de recall por veículo, apenas se um recall está atualmente aberto)
    • Especificações da Carroceria: Tipo de carroceria, classificações europeias
    • Dados Financeiros: Preço de catálogo, informações de imposto BPM
    • Indicadores de Status: Status de exportação, indicador de táxi, status de seguro

Exemplo: Consulte a placa "12-ABC-3" para obter informações completas do banco de dados da RDW

Requisitos

  • Node.js: Versão 18.0.0 ou superior
  • npm: Versão 8.0.0 ou superior (vem com Node.js)
  • Conexão com a internet: Necessária para acessar a API da RDW

Configuração para Claude Desktop

Para usar este servidor MCP com o Claude Desktop, adicione o seguinte ao seu claude_desktop_config.json:

Usando Instalação Global (Recomendado)

Se você instalou globalmente com npm install -g rdw-mcp-server:

{
  "mcpServers": {
    "rdw": {
      "command": "rdw-mcp"
    }
  }
}

Usando NPX (Alternativa)

Se você preferir não instalar globalmente:

{
  "mcpServers": {
    "rdw": {
      "command": "npx",
      "args": ["rdw-mcp-server"]
    }
  }
}

Somente Modo de Desenvolvimento

Para desenvolvimento com código fonte local:

Windows

{
  "mcpServers": {
    "rdw": {
      "command": "node",
      "args": ["C:\\ABSOLUTE\\PATH\\TO\\rdw-mcp\\build\\index.js"]
    }
  }
}

macOS/Linux

{
  "mcpServers": {
    "rdw": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/rdw-mcp/build/index.js"]
    }
  }
}

Fontes de Dados

Este servidor usa APIs de dados abertos oficiais da RDW (autoridade de veículos holandesa), verificadas ao vivo contra opendata.rdw.nl:

  • API Base: https://opendata.rdw.nl/resource/
  • Registro de Veículos: Conjunto de dados m9d7-ebf2 - Informações básicas e especificações do veículo
  • Combustível e Emissões: Conjunto de dados 8ys7-d773 - Tipos de combustível, emissões e dados ambientais
  • Relatórios APK / Inspeção: Conjunto de dados sgfe-77wx ("Meldingen Keuringsinstantie") - Histórico de relatórios de inspeção periódica e datas de expiração do APK resultantes
  • Histórico de Registro: Conjunto de dados db8s-mw3u ("Kenteken-tenaamstelling") - Histórico de mudanças de registro/propriedade
  • Especificações de Eixo: Conjunto de dados 3huj-srit - Especificações técnicas de carga por eixo
  • Tipos de Carroceria: Conjunto de dados vezc-m2t6 - Classificações de carroceria e tipo de corpo
  • Defeitos Técnicos: Conjunto de dados a34c-vvps ("Geconstateerde Gebreken") - Códigos de defeito encontrados durante inspeções

Nota: Os dados abertos da RDW não expõem um conjunto de dados de recall por veículo (apenas um catálogo geral de campanhas de recall sem campo de placa) nem um conjunto de dados separado de histórico de cor por veículo - as cores já são cobertas pelo registro básico do veículo. O status de recall aberto vem de um sinalizador no registro básico do veículo.

Todos os dados são recuperados em tempo real de fontes oficiais do governo e estão disponíveis publicamente.

Privacidade e Uso de Dados

  • Sem Armazenamento de Dados: Este servidor não armazena nenhum dado de veículo localmente
  • Consultas em Tempo Real: Todas as solicitações são encaminhadas diretamente às APIs da RDW
  • Somente Dados Públicos: Apenas dados de registro disponíveis publicamente são acessados
  • Sem Autenticação: Nenhum dado pessoal ou sensível é necessário ou processado

Limitação de Taxa

A API da RDW pode impor limites de taxa. Se você encontrar limitação de taxa:

  • Aguarde alguns segundos entre solicitações
  • Evite fazer solicitações em massa em rápida sucessão
  • Considere implementar atrasos na lógica do seu aplicativo

Exemplos de Consultas

Depois de conectado a um cliente MCP como o Claude Desktop, você pode fazer perguntas como:

Informações Completas do Veículo:

  • "Consulte a placa 12-ABC-3"
  • "Quais informações estão disponíveis para o kenteken XYZ-123?"
  • "Fale-me sobre o veículo com a placa 1-ABC-23"
  • "Mostre-me todos os dados da placa ABC-12-D"
  • "Obtenha informações completas da RDW para o kenteken DEF-456"

Solicitações de Informações Específicas:

  • "Quais são os dados de emissões para o kenteken ABC-12-D?"
  • "Mostre-me o histórico de APK da placa XYZ-456"
  • "Há algum recall para o veículo 12-ABC-3?"
  • "Qual é o histórico de registro do kenteken DEF-456?"
  • "Mostre-me defeitos técnicos da placa GHI-789"

Detalhes Técnicos e de Segurança:

  • "Qual é a capacidade de reboque do veículo 12-ABC-3?"
  • "Mostre-me especificações de eixo para o kenteken XYZ-456"
  • "Há algum recall aberto para a placa ABC-12-D?"
  • "Quais defeitos foram encontrados durante as inspeções do kenteken DEF-456?"
  • "Mostre-me o histórico completo de inspeções da placa GHI-789"

Detalhes Técnicos

  • Linguagem: TypeScript
  • Runtime: Node.js (stdio / HTTP) ou Cloudflare Workers (MCP remoto)
  • Protocolo: Model Context Protocol (MCP)
  • Transporte: I/O padrão (stdio), HTTP Streamable ou SSE (implantação no Cloudflare Workers)
  • Validação: Esquemas Zod para validação de entrada
  • API: Chamadas RESTful para endpoints de dados abertos da RDW

Tratamento de Erros

O servidor inclui tratamento abrangente de erros para:

  • Placas inválidas (formato incorreto ou inexistente)
  • Problemas de conectividade de rede
  • Limitação de taxa e tempos limite da API
  • Dados ausentes ou malformados da API da RDW
  • Parâmetros de pesquisa inválidos

Solução de Problemas

Problemas Comuns

Servidor não iniciando:

  • Certifique-se de que a versão do Node.js seja 18.0.0 ou superior: node --version
  • Tente reinstalar: npm uninstall -g rdw-mcp-server && npm install -g rdw-mcp-server Nenhum dado retornado:
  • Verifique sua conexão com a internet
  • Verifique o formato da placa de licença (placas holandesas: XX-XXX-X, XXX-XX-X, etc.)
  • Alguns veículos mais antigos podem não ter dados completos no banco de dados da RDW

Problemas de conexão com o Claude Desktop:

  • Verifique se sua configuração corresponde ao método de instalação (global vs npx)
  • Se estiver usando instalação global, garanta que o comando rdw-mcp funcione no terminal
  • Se estiver usando npx, garanta que npx rdw-mcp-server funcione no terminal
  • Reinicie o Claude Desktop após alterações na configuração
  • Para configurações de desenvolvimento, garanta que o caminho absoluto e o diretório de build estejam corretos

Obtendo Ajuda

Se você encontrar problemas:

  1. Verifique a saída do console para mensagens de erro
  2. Verifique se o formato da sua placa corresponde aos padrões holandeses
  3. Teste com placas de licença válidas conhecidas
  4. Garanta que você tenha uma conexão ativa com a internet

Licença

MIT

Contribuindo

Contribuições são bem-vindas! Este servidor MCP pode ser estendido com conjuntos de dados adicionais da RDW ou funcionalidades.

Configuração de Desenvolvimento

  1. Clone o repositório:

    git clone https://github.com/jodur/rdw-mcp-server.git
    cd rdw-mcp-server
    
  2. Instale as dependências:

    npm install
    
  3. Compile e teste:

    npm run build
    npm start
    

Conjuntos de Dados RDW Disponíveis

A RDW fornece muitos outros conjuntos de dados que poderiam ser integrados, além dos já usados acima:

  • Registros de táxis e ônibus
  • Variantes técnicas específicas de combustível
  • Histórico de importação/exportação de veículos

Estilo de Código

  • Use TypeScript com tipagem estrita
  • Siga os padrões de código existentes
  • Adicione comentários JSDoc para todas as funções
  • Use Zod para validação de entrada
  • Inclua tratamento de erros adequado

Changelog

Versão 2.3.0

  • NOVO: Servidor MCP remoto no Cloudflare Workers: Adicionado src/worker.ts, implantável via painel do Cloudflare (integração Git, sem necessidade de CLI) ou wrangler deploy. Expõe /mcp (Streamable HTTP) e /sse, sem autenticação - conecte-o diretamente do claude.ai como um conector personalizado.
  • Lógica de ferramenta compartilhada: Extraiu a ferramenta de consulta RDW para src/rdw-lib.ts, importada sem alterações tanto pelo ponto de entrada Node quanto pelo Worker - sem lógica duplicada, sem mudança de comportamento na distribuição stdio/HTTP existente.
  • Correção de lacuna de dados: A ferramenta anteriormente afirmava retornar histórico de APK, recalls, histórico de propriedade e defeitos, mas nunca realmente os buscava (suposições endpoint doesn't exist que se mostraram erradas). Verificado ao vivo contra opendata.rdw.nl e conectado os conjuntos de dados reais para histórico de APK/inspeção (sgfe-77wx), histórico de registro/propriedade (db8s-mw3u) e defeitos encontrados (a34c-vvps).
  • Afirmações corrigidas: A descrição da ferramenta e o README não afirmam mais histórico de recalls ou histórico de cores por veículo que a API aberta da RDW não expõe - o status de recall agora é descrito com precisão como um sinalizador aberto/fechado, não um histórico.

Versão 2.1.0

  • NOVO TRANSPORTE: Adicionado suporte ao transporte Streamable HTTP (sem estado)
  • Conformidade com SDK: Atualizado para padrões modernos do SDK TypeScript do MCP
  • Recursos HTTP: Servidor Express.js com endpoint /mcp e verificação /health
  • Linha de comando: Adicionados argumentos --http e --port=N para modo HTTP
  • Suporte CORS: Solicitações de origem cruzada habilitadas para integrações web
  • Design sem estado: Nova instância de servidor por solicitação, perfeito para escalabilidade
  • API moderna: Atualizado de server.tool() (obsoleto) para server.registerTool()
  • Estrutura aprimorada: Melhor organização do código com funções separadas
  • Transporte duplo: Suporta transportes stdio (padrão) e HTTP

Versão 2.0.0

  • GRANDE MELHORIA: Agora consulta TODOS os bancos de dados RDW disponíveis em uma única consulta
  • Adicionado histórico e registros de inspeção APK
  • Adicionadas informações de recall de veículos e ações de segurança
  • Adicionado histórico completo de registro/propriedade
  • Adicionadas especificações de carga por eixo e dados técnicos
  • Adicionadas classificações de tipo de carroceria e carrosserie
  • Adicionados registros de defeitos técnicos e achados de inspeção
  • Adicionadas informações adicionais de cor
  • Busca paralela de dados aprimorada para melhor desempenho
  • Dados abrangentes do veículo de mais de 8 conjuntos de dados RDW
  • Descrição da ferramenta e documentação atualizadas

Versão 1.1.0

  • MUDANÇA IMPORTANTE: Simplificado para uma única ferramenta de consulta abrangente
  • Integrados todos os dados de combustível e emissões na consulta principal de placa de licença
  • Removidas ferramentas separadas de combustível/emissões e busca de veículos
  • Exibição aprimorada de dados de combustível/emissões com códigos de emissão e emissões de fuligem
  • Completude de dados melhorada em consulta única

Versão 1.0.2

  • Melhorias abrangentes no README para usuários npm
  • Instruções aprimoradas de instalação e uso
  • Adicionadas seções de solução de problemas e privacidade
  • Exemplos de consultas e configuração de desenvolvimento melhorados
  • Corrigidas referências no package.json a arquivos de teste removidos

Versão 1.0.1

  • Saída de dados do veículo aprimorada
  • Normalização de placa de licença melhorada
  • Tratamento abrangente de erros adicionado
  • Documentação aprimorada

Versão 1.0.0

  • Lançamento inicial
  • Consulta básica de placa de licença
  • Dados de combustível e emissões
  • Busca de veículos por marca/modelo

Aviso Legal

Este servidor usa dados públicos da RDW e não é afiliado à organização oficial da RDW. Sempre verifique informações críticas do veículo por meio de canais oficiais.