France Travail Mcp

io.github.JoJoLaBagarrePublished by GitHub account JoJoLaBagarrev0.1.1Updated Oct 24, 2026

Serveur MCP des API officielles France Travail : offres d'emploi, ROME 4.0 et ROMEO.

VerifiedSTDIODesktop onlyKnowledge & MemoryBusiness & Commerce

Overview

AI-generated overview

A local MCP server that connects an assistant to the official France Travail APIs for French job offers, the ROME 4.0 occupational taxonomy and ROME code lookup

What you can do
Search and read job offers with multi-criteria filters (keywords, ROME code, location, contract type, salary) and fetch full offer details, plus look up reference codes and labels such as communes and contract types. Find ROME occupations by text, read an occupation's definition and access conditions, and get its skills and knowledge sheets. Predict a ROME code from a free-text job title. Optionally search companies with high hiring potential via La Bonne Boîte, disabled by default.
When to use it
Useful when working with the French labour market: finding current job offers, translating a trade or job title into a ROME code, or exploring ROME occupation descriptions and skills. It suits assistants used in French job-search or career contexts.
Requirements
Runs locally over stdio, typically via npx with Node.js 18 or later, or as a Claude Desktop bundle. Needs a free France Travail account with an application subscribed to the relevant APIs, and the FT_CLIENT_ID and FT_CLIENT_SECRET environment variables. Each API group requires its own subscription and OAuth scope.
Before you install
Requires France Travail OAuth credentials passed as environment variables; the client secret should never be shared and should be regenerated if leaked. The La Bonne Boîte tool needs manual authorisation from France Travail and is off unless FT_ENABLE_LABONNEBOITE is set to true. Queries and credentials go to France Travail's APIs. Paris, Lyon and Marseille must be given by arrondissement code.

Installation

In SourceWeft

  1. Open France Travail Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

🇫🇷 France Travail MCP

[npm version] [CI] [License: MIT] [Node]

Serveur MCP (Model Context Protocol) pour les API officielles de France Travail : offres d'emploi, référentiel des métiers ROME 4.0, prédiction ROMEO, et entreprises qui recrutent (La Bonne Boîte).

An MCP server connecting any AI assistant (Claude, Cursor, VS Code…) to the official France Travail APIs: real-time job offers, the ROME occupational taxonomy, ROME-code prediction, and hiring-company search.

Branchez votre assistant IA sur le marché de l'emploi français : il cherche des offres en temps réel, traduit un métier en code ROME, et cible les entreprises qui recrutent — directement dans la conversation.

C'est, à notre connaissance, le premier serveur MCP basé sur les API REST officielles de France Travail (les autres « MCP France Travail » sont des scrapers du site web, fragiles et non officiels).


⚡ Installation en 30 secondes

Dans tous les cas, il vous faut des identifiants France Travail (gratuits) — voir Obtenir vos identifiants.

🖱️ Option A — La plus simple, sans terminal (Claude Desktop)

  1. Téléchargez le fichier france-travail-mcp.mcpb depuis la page Releases.
  2. Double-cliquez dessus : Claude Desktop l'installe et vous demande votre Client ID / Client Secret dans un formulaire (le secret est stocké dans le trousseau de votre système).
  3. C'est prêt — aucune édition de fichier JSON.

⌨️ Option B — Une ligne (Claude Code)

bash
claude mcp add france-travail \  -e FT_CLIENT_ID=PAR_xxxxx \  -e FT_CLIENT_SECRET=votre_secret \  -- npx -y france-travail-mcp

🧩 Option C — Copier-coller (Claude Desktop, Cursor, VS Code…)

json
{  "mcpServers": {    "france-travail": {      "command": "npx",      "args": ["-y", "france-travail-mcp"],      "env": {        "FT_CLIENT_ID": "PAR_xxxxx_xxxxxxxxxxxxxxxxxxxx",        "FT_CLIENT_SECRET": "votre_secret"      }    }  }}

📖 Guide complet par client (Cursor, VS Code/Cline, et Ollama 100 % local) → INSTALL.md.


🔑 Obtenir vos identifiants

  1. Créez un compte sur francetravail.io.
  2. Créez une application dans votre espace.
  3. Souscrivez aux API souhaitées (au minimum Offres d'emploi v2 ; puis ROME 4.0 – Métiers, ROME 4.0 – Fiches métiers, ROMEO 2, La Bonne Boîte v2 selon les outils voulus).
  4. Récupérez le Client ID (PAR_…) et le Client Secret.

Prérequis : Node.js ≥ 18 (sauf l'option A, qui est autoportée).


🧰 Outils exposés

OutilDescriptionAPI France TravailStatut
ft_search_offresRecherche multicritères d'offres (mots-clés, ROME, géo, contrat, salaire…)Offres d'emploi v2✅ testé en live
ft_get_offreDétail complet d'une offreOffres d'emploi v2✅ testé en live
ft_list_referentielRéférentiels (communes, types de contrats…) codes ↔ libellésOffres d'emploi v2✅ testé en live
ft_search_metiersTrouver un métier ROME et son code par texteROME 4.0 – Métiers✅ testé en live
ft_get_metierFiche d'un métier ROME (définition, accès)ROME 4.0 – Métiers✅ testé en live
ft_get_fiche_metierCompétences & savoirs d'un métierROME 4.0 – Fiches métiers✅ testé en live
ft_predict_romeDeviner le code ROME d'un intitulé libre (IA)ROMEO 2✅ testé en live
ft_search_entreprisesEntreprises à fort potentiel d'embaucheLa Bonne Boîte v2⚠️ désactivé par défaut

La Bonne Boîte est une API à accès conditionné : la simple souscription ne suffit pas, France Travail exige une habilitation validée manuellement (sans elle, l'API renvoie 403 Invalid scope). L'outil ft_search_entreprises est donc désactivé par défaut ; une fois l'accès accordé, activez-le avec la variable d'environnement FT_ENABLE_LABONNEBOITE=true (son endpoint exact reste à confirmer).

Les autres outils s'activent automatiquement dès que l'API correspondante est souscrite, sans changement de code.


🧪 Exemple — l'agent enchaîne les outils tout seul

« Je suis pâtissier et je cherche un CDI vers Lyon. »

  1. ft_predict_rome("pâtissier") → code ROME D1104
  2. ft_search_offres(codeROME=["D1104"], commune="69381", typeContrat=["CDI"])
  3. ft_search_entreprises(...) pour les candidatures spontanées.

⚠️ Paris, Lyon et Marseille s'indiquent par arrondissement (Lyon 1er = 69381, Paris 1er = 75101, Marseille 1er = 13201) : les codes « globaux » 69123 / 75056 / 13055 sont refusés par l'API (erreur 400). Récupérez les bons codes avec ft_list_referentiel.


🔐 Correspondance outils ↔ scopes OAuth

Chaque API a son propre scope. Le serveur demande un token par scope (mis en cache ~25 min). Pour activer un groupe d'outils, votre application doit avoir souscrit à l'API correspondante :

API à souscrireScope OAuthActive
Offres d'emploi v2api_offresdemploiv2 o2dsoffreft_search_offres, ft_get_offre, ft_list_referentiel
ROME 4.0 – Métiersapi_rome-metiersv1 nomenclatureRomeft_search_metiers, ft_get_metier
ROME 4.0 – Fiches métiersapi_rome-fiches-metiersv1 nomenclatureRomeft_get_fiche_metier
ROMEO 2api_romeov2ft_predict_rome
La Bonne Boîte v2api_labonneboitev2ft_search_entreprises

🛠️ Développement

bash
git clone https://github.com/jojolabagarre/france-travail-mcp.gitcd france-travail-mcpnpm install              # installe les dépendances ET compile (script "prepare")cp .env.example .env     # renseignez FT_CLIENT_ID / FT_CLIENT_SECRETnpm run smoke            # test de bout en bout contre l'API réelle
CommandeRôle
npm run buildCompile TypeScript → dist/
npm testVérifie les types (tsc --noEmit)
npm run smokeTest de bout en bout contre l'API réelle
npm startDémarre le serveur (transport stdio)
npm run bundleGénère le bundle .mcpb (Claude Desktop)

Stack : TypeScript · @modelcontextprotocol/sdk · zod · axios. Transport stdio. Architecture : src/services (auth OAuth2 + client HTTP + erreurs), src/schemas, src/tools (un fichier par domaine). Voir CONTRIBUTING.md.

📦 Publication (mainteneur)

La publication est automatique sur un tag de version (npm puis registre MCP officiel) :

bash
npm version patch        # met à jour la version, crée le commit + le taggit push --follow-tags   # déclenche le workflow de publication

Voir .github/workflows/publish-mcp.yml. Secret requis dans le dépôt : NPM_TOKEN (jeton npm). L'authentification au registre MCP se fait par OIDC (aucun secret supplémentaire).

🔒 Sécurité

  • Le fichier .env n'est jamais committé (voir .gitignore).
  • Les identifiants sont fournis au serveur via les variables d'environnement du client MCP (ou le formulaire sécurisé du bundle .mcpb).
  • Ne partagez jamais votre client_secret. En cas de fuite, régénérez-le sur francetravail.io.

🗺️ Feuille de route

  • La Bonne Alternance (offres + formations en alternance)
  • Marché du travail (statistiques, tensions de recrutement par bassin)
  • Validation/finalisation de ft_search_entreprises (La Bonne Boîte)
  • Publication npm + registre MCP + bundle .mcpb

🤝 Contribuer

Les contributions sont bienvenues : ouvrez une issue ou une pull request. Voir CONTRIBUTING.md.

📄 Licence & avertissement

Sous licence MIT (voir LICENSE).

Projet non officiel, non affilié à France Travail. Il consomme les API publiques de France Travail ; leur usage est soumis aux conditions d'utilisation de francetravail.io. « France Travail », « ROME » et « La Bonne Boîte » sont des marques de France Travail.

Source: README.md at commit 5dcc963

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts