Back to Browse

Plateop Check MCP Server

by Gvb9
Developer ToolsLow Risk10.0MCP RegistryRemote
Free

Server data from the Official MCP Registry

Free used-car facts from the official register (NL, GB, IL, IS, DK) with source and date.

About

Free used-car facts from the official register (NL, GB, IL, IS, DK) with source and date.

Remote endpoints: streamable-http: https://check.plateop.com/mcp

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (3 strong, 2 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.

2 tools verified · Open access · No issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Found in Source Code

Found by scanning the linked source code. This listing connects to a hosted endpoint, so none of this runs on your machine: it describes what the server software does where it is hosted.

HTTP Network Access

Connects to external APIs or services over the internet.

file_system

Applies to the server that hosts this plugin, not to your machine.

env_vars

Applies to the server that hosts this plugin, not to your machine.

How to Connect

Remote Plugin

No local installation needed. Your AI client connects to the remote endpoint directly.

Add this to your MCP configuration to connect:

{
  "mcpServers": {
    "com-plateop-plateop-check": {
      "url": "https://check.plateop.com/mcp"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

plateop-check-mcp

A remote MCP server (Streamable HTTP, stateless) that gives AI agents the free facts about a used car from Plateop: register data, inspection due date, odometer verdict, insurance, inspection findings and recalls, each with source and as-of date. It is a thin layer over Plateop's public JSON channel (GET /api/rapport/kenteken/{plate}, GET /open/model/<brand>/<model>.json). It has no data layer, no cache, no database and no accounts.

Revenue model: every vehicle_check answer ends with a link for a person to the paid report (4.95 euro in the Netherlands) on the country host, https://<host>.plateop.com/analyse/nieuw, without the plate in the URL. An Authorization header sent by the agent is passed to the app unchanged, so a paid tier later needs no change here.

Source: https://github.com/gvb9/plateop-check-mcp. Deployment: ./server-setup.sh once, then ./deploy.sh. Published in the MCP Registry as com.plateop/plateop-check 0.1.0 (18 Oct 2026); a new version needs a version bump, mcp-publisher login http and mcp-publisher publish (see agent-commons docs/VINDBAARHEID.md).

Tools

ToolWhat it doesPlateop call
vehicle_check(plate, country, language?)Facts per heading as text, raw JSON as structuredContent, then the paid-report line/api/rapport/kenteken/{plate}?taal=
model_inspection_stats(brand, model, country, language?)Per source and age band the 3 most frequent inspection points (the app lists all 300; the answer links to the full JSON), with the citation line/open/model/<brand-slug>/<model-slug>.json

Countries: nl (host nederland), gb (uk), il (israel), is (island), dk (danmark). Each call sends Host and X-Forwarded-Host: <host>.plateop.com (the app reads Host; node:http is used because fetch cannot set it), X-Real-IP and X-Forwarded-For with the agent's IP, and the agent's Authorization header if there is one. Timeout 10 s. App errors (400, 404, 429 with Retry-After, 502, 503) become one plain sentence for the agent.

Routes: POST /mcp, GET / (text), /llms.txt (guide), /health, /privacy, /icon.svg, /.well-known/mcp/server-card.json. server.json is for the MCP Registry (com.plateop/plateop-check).

Left out on purpose: compare_models. The app's /open/vergelijk/<pair>.json only answers for a short frozen list of model pairs on nl, gb and cz, with no way to list them, so a tool would mostly return "not found". Add it when agents ask for it.

Limits (per hashed IP, in memory)

vehicle_check 20 per 10 minutes and 100 per day (the same as the app's own limit); model tool 60 per minute; plain GET routes 600 per hour. No timers, no disk: stale windows are pruned on use and everything resets on restart.

Environment variables

VariableMeaning
PORTListen port, default 3200
PLATEOP_BASE_URLThe Plateop app, default and production value http://127.0.0.1:3105
TRUST_PROXY1 behind nginx: read the caller's IP from X-Real-IP / X-Forwarded-For
IP_SALTOptional. Salt of the IP hash; unset means random per start (limits and the hash in the log reset on restart)

There is no DATA_DIR: nothing is written to disk.

Run

npm install
npm test        # vitest against a fake Plateop (test/fakePlateop.ts); no real calls
npm run build
PLATEOP_BASE_URL=http://127.0.0.1:3105 TRUST_PROXY=1 npm start

Rollout (nothing of this has been done)

  1. On the server: useradd --system plateop-check, mkdir -p /srv/plateop-check /etc/plateop-check, env file /etc/plateop-check/plateop-check.env (root:plateop-check, mode 640) with PORT=3200, PLATEOP_BASE_URL=http://127.0.0.1:3105, TRUST_PROXY=1.
  2. systemd unit plateop-check (like commons): ExecStart=/usr/bin/node /srv/plateop-check/current/dist/index.js, EnvironmentFile=, User=plateop-check, Restart=on-failure.
  3. nginx site zz-plateop-check for check.plateop.com behind Cloudflare, like zz-commons: proxy_pass http://127.0.0.1:3200, proxy_set_header X-Real-IP $remote_addr (or the Cloudflare IP module's value), X-Forwarded-Proto, Host. No DNS change: *.plateop.com already points at the server.
  4. The privacy page promises that the journal keeps the call log for at most 30 days: set MaxRetentionSec=30day in /etc/systemd/journald.conf (or change the sentence in src/privacy.ts).
  5. ./deploy.sh, then curl https://check.plateop.com/health, then one vehicle_check with an MCP client.
  6. Publish server.json to the MCP Registry under com.plateop.
  7. After 30 days count calls per tool and per shortened hash: journalctl -u plateop-check | grep tool=.

Reviews

No reviews yet

Be the first to review this server!