RDW MCP Server

Consulta datos de registro de vehículos neerlandeses de la RDW para obtener información del vehículo, combustible y datos de emisiones utilizando la API oficial de datos abiertos de la RDW.

Documentación

Servidor MCP RDW

npm version License: MIT

Un servidor de Protocolo de Contexto de Modelo (MCP) para consultar datos de registro de vehículos de la RDW neerlandesa (Rijksdienst voor het Wegverkeer). Dada una matrícula (kenteken), devuelve especificaciones del vehículo, datos de combustible/emisiones, historial de inspección APK, historial de registro/propiedad, especificaciones de ejes y carrocería, códigos de defectos y estado de retiradas abiertas, todo desde la API oficial de datos abiertos de la RDW. Ejecútalo localmente mediante stdio/npx, o despliégalo como servidor MCP remoto en Cloudflare Workers y conéctalo directamente a claude.ai.

Inicio rápido

Elige tu método preferido:

  • Instalación global (recomendada): npm install -g rdw-mcp-server → rdw-mcp
  • NPX (sin instalación): npx rdw-mcp-server
  • Desarrollo local: Clonar repositorio → npm install → npm run build → node build/index.js
  • Remoto (Cloudflare Workers): Sin proceso local en absoluto: despliega una vez y conéctate desde claude.ai como conector personalizado. Consulta Desplegar como servidor MCP remoto.

Prueba la instalación:

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

(Pulsa Ctrl+C para detener)

Añadir a Claude Desktop (consulta la sección de Configuración a continuación)

Empieza a hacer preguntas como:

  • "Busca la matrícula 12-ABC-3"
  • "Muéstrame el historial de APK y cualquier defecto técnico del kenteken 1-ABC-23"

Características

  • Búsqueda completa de matrículas: Obtén información disponible del vehículo de las bases de datos de la RDW mediante la matrícula neerlandesa (kenteken)
  • Datos completos del vehículo: Especificaciones básicas, detalles técnicos, pesos, dimensiones e información de registro
  • Combustible y emisiones integrados: Tipo de combustible detallado, emisiones, especificaciones ambientales y niveles de sonido
  • Historial de inspección APK: Historial de informes de inspección periódica y fechas de caducidad de APK resultantes
  • Historial de registro: Historial de cambios de propiedad/registro
  • Especificaciones técnicas: Cargas por eje, tipos de carrocería y datos técnicos detallados
  • Registros de defectos: Códigos de defectos encontrados durante las inspecciones
  • Estado de retiradas abiertas: Si el vehículo tiene actualmente una retirada de fabricante abierta
  • Datos en tiempo real: Accede a información actualizada de las bases de datos oficiales de la RDW
  • Remoto o local: Ejecútalo localmente mediante stdio/npx, o despliégalo como servidor MCP remoto sin servidor en Cloudflare Workers: consulta Desplegar como servidor MCP remoto

Instalación

Instalación global (recomendada para uso CLI)

npm install -g rdw-mcp-server

Tras la instalación global, puedes ejecutar el servidor directamente:

rdw-mcp

Usar NPX (ejecutar sin instalar)

npx rdw-mcp-server

Esto ejecuta el paquete directamente sin instalarlo globalmente.

Desde el código fuente (desarrollo 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 comando global

Tras la instalación global, inicia el servidor MCP:

Modo Stdio (predeterminado):

rdw-mcp

Modo HTTP:

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

El servidor admite transportes stdio y HTTP:

  • Stdio: Para integración directa con línea de comandos y Claude Desktop
  • HTTP: Para acceso remoto, integraciones web y despliegues escalables

Características del transporte HTTP

Cuando se ejecuta en modo HTTP (--http), el servidor proporciona:

  • Endpoint MCP: POST /mcp - Endpoint principal del protocolo MCP
  • Comprobación de estado: GET /health - Estado del servidor e información de versión
  • Soporte CORS: Solicitudes de origen cruzado habilitadas para integraciones web
  • Diseño sin estado: Sin gestión de sesiones, perfecto para escalar
  • Gestión de errores: Códigos de estado HTTP adecuados y respuestas de error JSON-RPC

Ejemplo 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":{}}'

En la configuración del cliente MCP (VS Code)

El soporte MCP de VS Code (.vscode/mcp.json) usa una clave servers con un type explícito:

Usando instalación global (recomendada):

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

Usando npx (alternativa):

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

Para Claude Desktop, usa la clave mcpServers que se muestra en Configuración para Claude Desktop a continuación.

Modo de desarrollo local

Para desarrollo local desde el código fuente:

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 desarrollo

Para desarrollo con reconstrucción automática:

npm run dev

Desplegar como servidor MCP remoto (Cloudflare Workers)

Este repositorio también incluye un punto de entrada de Cloudflare Worker (src/worker.ts) que expone la misma herramienta rdw-license-plate-lookup como servidor MCP remoto: sin proceso local, sin túnel, sin contenedor. Dado que esta herramienta solo actúa como proxy de datos abiertos públicos de la RDW (sin secretos, sin datos de usuario), se puede añadir a claude.ai sin OAuth.

Esto es completamente aditivo: la configuración stdio existente de npx rdw-mcp-server / Claude Desktop descrita anteriormente no se ve afectada.

Opción A: Desplegar mediante el panel de Cloudflare (sin CLI local)

  1. Haz un fork o envía este repositorio a tu propia cuenta de GitHub.
  2. En el panel de Cloudflare: Workers & Pages → Crear → Importar un repositorio de Git.
  3. Autoriza la aplicación de GitHub de Cloudflare (un clic de OAuth único) y selecciona tu repositorio.
  4. Cloudflare detecta automáticamente wrangler.jsonc y rellena previamente el comando de compilación/despliegue. Haz clic en Guardar y desplegar.
  5. Cloudflare ejecuta npm install + wrangler deploy en la nube y te proporciona una URL en vivo, p. ej., https://rdw-mcp-worker.<your-subdomain>.workers.dev.
  6. Cada futuro push a la rama conectada reconstruye y redespliega automáticamente.

Opción B: Desplegar localmente con Wrangler

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

Verifica localmente con el Inspector MCP:

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

Luego despliega:

npx wrangler login   # first time only
npm run deploy

Añadirlo a claude.ai

  1. claude.ai → Configuración → Conectores → Añadir conector personalizado.
  2. Pega tu URL desplegada con la ruta /mcp, p. ej., https://rdw-mcp-worker.<your-subdomain>.workers.dev/mcp.
  3. Deja los campos de ID de cliente/Secreto de OAuth en blanco: este servidor no requiere autenticación.
  4. Haz clic en Añadir y luego actívalo mediante + → Conectores en una conversación.
  5. Prueba: "Busca la matrícula 12-ABC-3".

Notas

  • El Worker es público una vez desplegado: cualquiera con la URL puede llamar a la búsqueda de RDW a través de él. Esto está bien dado que solo actúa como proxy de datos de RDW ya públicos sin autenticación en el lado de RDW tampoco, pero tenlo en cuenta antes de añadir acciones de escritura o datos privados en el futuro (en ese punto, añade un proveedor de OAuth).
  • El Worker usa McpAgent (del paquete agents), que está respaldado por Durable Objects y expone tanto /mcp (HTTP transmisible) como /sse (SSE heredado) para una amplia compatibilidad con clientes.

Herramienta disponible

rdw-license-plate-lookup

Busca información del vehículo en las bases de datos de la RDW mediante la matrícula neerlandesa.

Parámetros:

  • kenteken (cadena): Matrícula neerlandesa a buscar

Devuelve:

  • Información del vehículo de las bases de datos de la RDW, incluida:
    • Detalles básicos: Marca, modelo, color, tipo, variante, versión
    • Especificaciones técnicas: Motor, potencia, dimensiones, cilindros, cilindrada
    • Peso y capacidad: Peso en vacío, peso en orden de marcha, capacidad de remolque, cargas por eje
    • Datos de registro: Primera matriculación, historial de cambios de registro/propiedad, homologación de tipo
    • Registros de inspección: Fecha de caducidad de APK, historial de informes de inspección periódica, códigos de defectos encontrados
    • Combustible y emisiones: Tipo de combustible, niveles de emisiones, clase de CO2, niveles de sonido
    • Información de seguridad: Estado de retiradas abiertas (los datos abiertos de la RDW no exponen el historial de retiradas por vehículo, solo si hay una retirada actualmente abierta)
    • Especificaciones de carrocería: Tipo de carrocería, clasificaciones europeas
    • Datos financieros: Precio de catálogo, información de impuesto BPM
    • Indicadores de estado: Estado de exportación, indicador de taxi, estado del seguro

Ejemplo: Busca la matrícula "12-ABC-3" para obtener información completa de la base de datos de la RDW

Requisitos

  • Node.js: Versión 18.0.0 o superior
  • npm: Versión 8.0.0 o superior (incluido con Node.js)
  • Conexión a internet: Necesaria para acceder a la API de la RDW

Configuración para Claude Desktop

Para usar este servidor MCP con Claude Desktop, añade lo siguiente a tu claude_desktop_config.json:

Usando instalación global (recomendada)

Si instalaste globalmente con npm install -g rdw-mcp-server:

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

Usando NPX (alternativa)

Si prefieres no instalar globalmente:

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

Solo modo de desarrollo

Para desarrollo con código fuente 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"]
    }
  }
}

Fuentes de datos

Este servidor usa las API oficiales de datos abiertos de la RDW (autoridad neerlandesa de vehículos), verificadas en vivo contra opendata.rdw.nl:

  • API base: https://opendata.rdw.nl/resource/
  • Registro de vehículos: Conjunto de datos m9d7-ebf2 - Información y especificaciones básicas del vehículo
  • Combustible y emisiones: Conjunto de datos 8ys7-d773 - Tipos de combustible, emisiones y datos ambientales
  • APK / Informes de inspección: Conjunto de datos sgfe-77wx ("Meldingen Keuringsinstantie") - Historial de informes de inspección periódica y fechas de caducidad de APK resultantes
  • Historial de registro: Conjunto de datos db8s-mw3u ("Kenteken-tenaamstelling") - Historial de cambios de registro/propiedad
  • Especificaciones de ejes: Conjunto de datos 3huj-srit - Especificaciones técnicas de carga por eje
  • Tipos de carrocería: Conjunto de datos vezc-m2t6 - Clasificaciones de carrocería y tipo de carrocería
  • Defectos técnicos: Conjunto de datos a34c-vvps ("Geconstateerde Gebreken") - Códigos de defectos encontrados durante las inspecciones

Nota: Los datos abiertos de la RDW no exponen un conjunto de datos de retiradas por vehículo (solo un catálogo general de campañas de retirada sin campo de matrícula) ni un conjunto de datos separado de historial de colores por vehículo: los colores ya están cubiertos por el registro base del vehículo. El estado de retiradas abiertas proviene de un indicador en el registro base del vehículo.

Todos los datos se recuperan en tiempo real de fuentes gubernamentales oficiales y están disponibles públicamente.

Privacidad y uso de datos

  • Sin almacenamiento de datos: Este servidor no almacena ningún dato de vehículos localmente
  • Consultas en tiempo real: Todas las solicitudes se reenvían directamente a las API de la RDW
  • Solo datos públicos: Solo se accede a datos de registro disponibles públicamente
  • Sin autenticación: No se requieren ni procesan datos personales o sensibles

Límites de velocidad

La API de la RDW puede imponer límites de velocidad. Si encuentras limitación de velocidad:

  • Espera unos segundos entre solicitudes
  • Evita hacer solicitudes masivas en sucesión rápida
  • Considera implementar retrasos en la lógica de tu aplicación

Consultas de ejemplo

Una vez conectado a un cliente MCP como Claude Desktop, puedes hacer preguntas como:

Información completa del vehículo:

  • "Busca la matrícula 12-ABC-3"
  • "¿Qué información está disponible para el kenteken XYZ-123?"
  • "Cuéntame sobre el vehículo con matrícula 1-ABC-23"
  • "Muéstrame todos los datos de la matrícula ABC-12-D"
  • "Obtén información completa de la RDW para el kenteken DEF-456"

Solicitudes de información específica:

  • "¿Cuáles son los datos de emisiones del kenteken ABC-12-D?"
  • "Muéstrame el historial de APK de la matrícula XYZ-456"
  • "¿Hay alguna retirada para el vehículo 12-ABC-3?"
  • "¿Cuál es el historial de registro del kenteken DEF-456?"
  • "Muéstrame los defectos técnicos de la matrícula GHI-789"

Detalles técnicos y de seguridad:

  • "¿Cuál es la capacidad de remolque del vehículo 12-ABC-3?"
  • "Muéstrame las especificaciones de ejes del kenteken XYZ-456"
  • "¿Hay retiradas abiertas para la matrícula ABC-12-D?"
  • "¿Qué defectos se encontraron durante las inspecciones del kenteken DEF-456?"
  • "Muéstrame el historial completo de inspecciones de la matrícula GHI-789"

Detalles técnicos

  • Lenguaje: TypeScript
  • Tiempo de ejecución: Node.js (stdio / HTTP) o Cloudflare Workers (MCP remoto)
  • Protocolo: Protocolo de Contexto de Modelo (MCP)
  • Transporte: Entrada/Salida estándar (stdio), HTTP transmisible o SSE (despliegue en Cloudflare Workers)
  • Validación: Esquemas Zod para validación de entrada
  • API: Llamadas RESTful a los endpoints de datos abiertos de la RDW

Gestión de errores

El servidor incluye gestión integral de errores para:

  • Matrículas no válidas (formato incorrecto o inexistentes)
  • Problemas de conectividad de red
  • Límites de velocidad y tiempos de espera de la API
  • Datos faltantes o malformados de la API de la RDW
  • Parámetros de búsqueda no válidos

Solución de problemas

Problemas comunes

El servidor no se inicia:

  • Asegúrate de que la versión de Node.js sea 18.0.0 o superior: node --version
  • Intenta reinstalar: npm uninstall -g rdw-mcp-server && npm install -g rdw-mcp-server Sin datos devueltos:
  • Comprueba tu conexión a internet
  • Verifica el formato de la matrícula (matrículas neerlandesas: XX-XXX-X, XXX-XX-X, etc.)
  • Algunos vehículos más antiguos pueden no tener datos completos en la base de datos de la RDW

Problemas de conexión con Claude Desktop:

  • Verifica que tu configuración coincida con el método de instalación (global vs npx)
  • Si usas instalación global, asegúrate de que el comando rdw-mcp funcione en la terminal
  • Si usas npx, asegúrate de que npx rdw-mcp-server funcione en la terminal
  • Reinicia Claude Desktop después de los cambios de configuración
  • Para configuraciones de desarrollo, asegúrate de que la ruta absoluta y el directorio de compilación sean correctos

Obtener Ayuda

Si encuentras problemas:

  1. Revisa la salida de la consola para ver mensajes de error
  2. Verifica que el formato de tu matrícula cumpla con los estándares neerlandeses
  3. Prueba con matrículas válidas conocidas
  4. Asegúrate de tener una conexión a internet activa

Licencia

MIT

Contribuciones

¡Las contribuciones son bienvenidas! Este servidor MCP puede ampliarse con conjuntos de datos o funcionalidades adicionales de la RDW.

Configuración de Desarrollo

  1. Clona el repositorio:

    git clone https://github.com/jodur/rdw-mcp-server.git
    cd rdw-mcp-server
    
  2. Instala las dependencias:

    npm install
    
  3. Compila y prueba:

    npm run build
    npm start
    

Conjuntos de Datos RDW Disponibles

La RDW proporciona muchos más conjuntos de datos que podrían integrarse, más allá de los ya utilizados anteriormente:

  • Registros de taxis y autobuses
  • Variantes técnicas específicas de combustible
  • Historial de importación/exportación de vehículos

Estilo de Código

  • Usa TypeScript con tipado estricto
  • Sigue los patrones de código existentes
  • Añade comentarios JSDoc para todas las funciones
  • Usa Zod para la validación de entradas
  • Incluye un manejo de errores adecuado

Registro de Cambios

Versión 2.3.0

  • NUEVO: Servidor MCP remoto en Cloudflare Workers: Se añadió src/worker.ts, desplegable a través del panel de Cloudflare (integración con Git, sin necesidad de CLI) o wrangler deploy. Expone /mcp (Streamable HTTP) y /sse, sin autenticación: conéctalo directamente desde claude.ai como conector personalizado.
  • Lógica de herramientas compartida: Se extrajo la herramienta de consulta RDW en src/rdw-lib.ts, importada sin cambios tanto por el punto de entrada de Node como por el Worker: sin lógica duplicada, sin cambios de comportamiento en la distribución existente de stdio/HTTP.
  • Brecha de datos corregida: La herramienta afirmaba anteriormente devolver el historial de APK, retiradas, historial de propiedad y defectos, pero nunca los obtenía realmente (suposiciones de endpoint doesn't exist que resultaron ser incorrectas). Verificado en vivo contra opendata.rdw.nl y se conectaron los conjuntos de datos reales para el historial de APK/inspección (sgfe-77wx), historial de registro/propiedad (db8s-mw3u) y defectos encontrados (a34c-vvps).
  • Afirmaciones corregidas: La descripción de la herramienta y el README ya no afirman tener historial de retiradas ni historial de color por vehículo que la API abierta de la RDW no expone realmente: el estado de retirada ahora se describe con precisión como un indicador abierto/cerrado, no como un historial.

Versión 2.1.0

  • NUEVO TRANSPORTE: Se añadió soporte para transporte HTTP Streamable (sin estado)
  • Cumplimiento del SDK: Actualizado a los patrones modernos del SDK de MCP TypeScript
  • Características HTTP: Servidor Express.js con endpoint /mcp y comprobación de /health
  • Línea de comandos: Se añadieron los argumentos --http y --port=N para el modo HTTP
  • Soporte CORS: Solicitudes de origen cruzado habilitadas para integraciones web
  • Diseño sin estado: Nueva instancia de servidor por solicitud, perfecto para escalar
  • API moderna: Actualizado de server.tool() (obsoleto) a server.registerTool()
  • Estructura mejorada: Mejor organización del código con funciones separadas
  • Doble transporte: Soporta tanto transporte stdio (predeterminado) como HTTP

Versión 2.0.0

  • GRAN MEJORA: Ahora consulta TODAS las bases de datos RDW disponibles en una sola búsqueda
  • Se añadió el historial y los registros de inspección APK
  • Se añadió información sobre retiradas de vehículos y acciones de seguridad
  • Se añadió el historial completo de registro/propiedad
  • Se añadieron especificaciones de carga por eje y datos técnicos
  • Se añadieron clasificaciones de tipo de carrocería y carrocería
  • Se añadieron registros de defectos técnicos y hallazgos de inspección
  • Se añadió información adicional de color
  • Se mejoró la obtención paralela de datos para un mejor rendimiento
  • Datos completos del vehículo de más de 8 conjuntos de datos RDW
  • Descripción de la herramienta y documentación actualizadas

Versión 1.1.0

  • CAMBIO IMPORTANTE: Simplificado a una única herramienta de búsqueda integral
  • Se integraron todos los datos de combustible y emisiones en la búsqueda principal de matrículas
  • Se eliminaron las herramientas separadas de combustible/emisiones y búsqueda de vehículos
  • Se mejoró la visualización de datos de combustible/emisiones con códigos de emisión y emisiones de hollín
  • Se mejoró la integridad de los datos en una sola consulta

Versión 1.0.2

  • Mejoras integrales del README para usuarios de npm
  • Instrucciones de instalación y uso mejoradas
  • Se añadieron secciones de solución de problemas y privacidad
  • Se mejoraron los ejemplos de consultas y la configuración de desarrollo
  • Se corrigieron las referencias de package.json a archivos de prueba eliminados

Versión 1.0.1

  • Salida de datos del vehículo mejorada
  • Normalización de matrículas mejorada
  • Manejo integral de errores añadido
  • Documentación mejorada

Versión 1.0.0

  • Lanzamiento inicial
  • Búsqueda básica de matrículas
  • Datos de combustible y emisiones
  • Búsqueda de vehículos por marca/modelo

Aviso Legal

Este servidor utiliza datos públicos de la RDW y no está afiliado a la organización oficial de la RDW. Verifica siempre la información crítica del vehículo a través de los canales oficiales.