Skip to main content
Glama

mcp-rncp

The RNCP and RS in Claude, ChatGPT, Cursor: search, records, skill blocks, validity, accreditations.

Read-only MCP server on the national directories of professional certifications (open data France compétences). Zero API key, zero LLM call on the server side, sourced and dated responses.

🇬🇧 English README · 📦 npx -y mcp-rncp · 🌐 https://mcp-rncp.com/mcp · 📄 Data license


The problem

  • A training organization sells a "certifying" training: is the RNCP record still active? Is its SIRET authorized to train and/or evaluate? Which skill blocks to check in EDOF? Since 11/06/2026 blocks must be filled in; by 22/10/2026 unfilled offers disappear from Mon Compte Formation.

  • An HR, an OPCO, a candidate wants to know which level 6 cybersecurity certifications exist, which one expires when, which one replaces which.

  • The answers are in a 570 MB XML updated every night. This server makes it queryable in natural language.

Related MCP server: French Law MCP Server

Three prompts to get started

« Is RNCP 35419 still active? If not, which record replaces it? »

« Is SIRET 88055223700047 authorized on RNCP 37674, and for which role? List the blocks to declare in EDOF. »

« Find active level 6 cybersecurity certifications and compare the first two. »

Installation

Claude Desktop (local, npx)

Node ≥ 22.16 required (node:sqlite with FTS5). File claude_desktop_config.json:

{
  "mcpServers": {
    "rncp": { "command": "npx", "args": ["-y", "mcp-rncp"] }
  }
}

First launch: download of the database (~90 MB) into ~/.cache/mcp-rncp (Windows: %LOCALAPPDATA%\mcp-rncp), SHA-256 verification, then silent weekly update.

Claude.ai / Claude Code / Cursor (hosted, Streamable HTTP)

Connector URL: https://mcp-rncp.com/mcp — no authentication, 60 requests/min per IP.

claude mcp add --transport http rncp https://mcp-rncp.com/mcp

Cursor (.cursor/mcp.json):

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

Tools

Tool

Question

What it returns

search_certifications

« web developer level 5 »

full-text search (BM25 + FR synonyms), filters directory / level / NSF / ROME, active by default

get_certification

« RNCP record 37674 »

complete record: certifiers, activities, skills, codes, access paths, texts, replacements, statistics

list_blocs

« blocks of RNCP 37674 »

blocks RNCPxxxxxBCyy in order, skills, evaluation methods — ready for EDOF

check_validity

« is RNCP 35419 active? »

status, expiry, days remaining, delivery deadline, replacement, estimated CPF eligibility, warning

check_habilitation

« SIRET 8805… authorized on 37674? »

authorized yes/no, roles former / evaluer, certifier, status and dates of authorization

list_partenaires

« who is authorized on 37674? »

paginated partners, SIRET/SIREN filter

compare_certifications

« compare 36490 and 37873 »

levels, certifiers, common NSF/ROME, lexical overlap of blocks, closest blocks

changes_since

« what's new since July 1 in NSF 326? »

records created / modified / deactivated / reactivated / removed

get_data_status

« how old are the data? »

export date, age, counters

Numbers accepted in all forms: RNCP35419, 35419, rncp 35419, RS5000, URL francecompetences.fr. Each response contains summary, source, data_updated_at, url_fiche and an explicit truncated indicator.

Resources: rncp://glossaire, rncp://about. Prompts: rediger_offre_edof, verifier_certification.

Data, source, license

  • Source: France compétences, data.gouv.fr dataset "RNCP and RS", XML stream V4.1, license Open 2.0. Mandatory mention reproduced in each response: "Source: France compétences (data.gouv.fr), export of AAAA-MM-JJ".

  • Coverage: ~30,500 records (including ~7,000 active), ~56,000 blocks, ~400,000 authorization lines. Detail of tag → column mapping in docs/DATA-MAPPING.md.

  • Freshness: weekly ingestion (Monday 05:00 UTC, restartable), published as GitHub Release data-AAAA-MM-JJ and loaded into Cloudflare D1 without interruption (two blue/green databases).

Limitations

  • No real-time: data has the age indicated by get_data_status (at most 7 days under normal conditions).

  • eligible_cpf_estime is an estimate (active record); actual eligibility also depends on the authorization and EDOF referencing of the organization.

  • Full-text search, not semantic: prefer the terms of the official title (common acronyms are handled).

  • Not included in v1: NPEC (apprenticeship coverage), jury composition, PDF frameworks.

  • The hosted service is free and limited to 60 req/min/IP; for intensive use, use npx mcp-rncp locally.

Architecture

packages/core       outils MCP + requêtes SQL (agnostique du runtime)
packages/ingest     data.gouv → SAX → SQLite/FTS5 → rncp.sqlite(.br) + rncp.sql (D1) + manifest.json
packages/db-sqlite  adaptateur node:sqlite (CLI)      packages/db-d1  adaptateur Cloudflare D1 (blue/green)
apps/cli            npm `mcp-rncp` (stdio)            apps/worker     Cloudflare Worker (Hono, /mcp, /health)
eval/               46 cas réels : recall@5 ≥ 0,8 (mesuré : 96 % sur la base complète), validité/habilitation exactes

Development: bun install, bun run test, bun run eval, bun run ingest (≈ 1 min), bun run dev:worker.

Roadmap

  • v1.1: NPEC by IDCC, enriched changes_since (block diff), local embeddings if evaluations justify it.

  • v2 (Pro): bulk catalog verification (N numbers × 1 SIRET), expiration / authorization withdrawal alerts, EDOF export, monitoring by NSF/ROME domain, API keys.

Contributions and feedback: issues. Code MIT — Arnaud Aldebert.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying the French National Assembly data, including deputies, interventions, questions, and votes, through natural language.
    1 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables discovery and inspection of French public open data on data.gouv.fr, including datasets, resources, organizations, and dataservices via natural language.
    9
    MIT