# Serveur MCP d'ExplorerHub

> Consultez les huit référentiels de compétences publiés sur ExplorerHub depuis Claude Code, Cursor, VS Code, Windsurf ou vos propres scripts via le Model Context Protocol. Accès par clé API gratuite, attribution des sources dans chaque réponse.

Adresse du serveur: `https://explorerhub.eu/api/mcp`

**Le serveur MCP n'est pas encore actif : le lancement est prévu d'ici le 30 septembre 2026. Jusque-là, l'adresse répond 503 avec le code « disabled » et la création de clés n'est pas disponible. Cette page reste disponible comme documentation.**

## Qu'est-ce que c'est

Le Model Context Protocol (MCP) est le standard ouvert par lequel les assistants fondés sur des modèles de langage se connectent à des sources de données externes. Le serveur MCP d'ExplorerHub expose en lecture seule la structure, les descripteurs, les niveaux et les glossaires de DigComp, DigCompEdu, GreenComp, LifeComp, FinComp, DigCompConsumers, AILit et EntreComp, à partir des mêmes données et dans les mêmes quatre langues que le site. Le serveur est un produit d'IDCERT S.r.l. Società Benefit et répond sur explorerhub.eu.

## Les outils

- `explorerhub_list_frameworks`: Liste les référentiels publiés avec identifiant, éditeur, année, langues, décomptes et licence.
- `explorerhub_get_framework`: Renvoie la structure d'un référentiel : domaines, compétences, niveaux et, lorsque le référentiel est divisé par public, les segments disponibles.
- `explorerhub_get_node`: Renvoie un domaine ou une compétence avec tous ses descripteurs, groupés par niveau ou par dimension.
- `explorerhub_get_levels`: Renvoie les niveaux de maîtrise d'un référentiel, avec description et les correspondances CEC/CECRL que le document indique.
- `explorerhub_get_glossary`: Renvoie le glossaire d'un référentiel, filtrable et paginé.
- `explorerhub_search`: Recherche un texte ou un code du document dans un référentiel ou dans tous, avec des résultats classés et des liens vers la page. Accepte limit et offset pour parcourir les résultats et audience pour les référentiels à plusieurs publics ; indique si la liste est tronquée et où reprendre.

## Comment obtenir la clé

1. Créez un compte ExplorerHub, ou connectez-vous si vous en avez déjà un.
2. Dans votre compte, ouvrez la section « Accès MCP ».
3. Donnez un nom à la clé (par exemple le client qui l'utilisera) et acceptez les conditions du service MCP : sans acceptation, la clé n'est pas créée.
4. Cliquez sur « Créer une clé » et copiez-la aussitôt : elle n'est affichée qu'une seule fois et ne peut pas être récupérée. Si vous la perdez, révoquez-la et créez-en une autre.
5. Passez la clé à votre client MCP dans l'en-tête Authorization comme Bearer token, comme dans les exemples ci-dessous.

Les clés commencent par ehk_ et comptent 47 caractères. Le serveur n'en conserve que l'empreinte cryptographique : personne, pas même IDCERT, ne peut relire une clé déjà créée.
Vous pouvez avoir au plus 5 clés actives par compte ; les clés révoquées ne comptent pas.

### Révocation

Dans votre compte, à côté de chaque clé, « Révoquer » la désactive immédiatement et définitivement : les clients qui l'utilisent reçoivent 401 dès l'appel suivant. Révoquez une clé si vous l'avez exposée, si l'appareil qui l'utilisait n'est plus le vôtre ou si vous n'en avez plus besoin, et créez-en une nouvelle quand il le faut.

## Exemples de configuration

Exportez la clé dans une variable d'environnement, comme dans le premier exemple, et laissez-la là. Les fichiers de configuration du projet — .mcp.json, .cursor/mcp.json, .vscode/mcp.json — finissent dans le dépôt : c'est pourquoi les exemples référencent la variable, ou une saisie de l'éditeur, et non la clé. Ne collez jamais la clé dans un fichier versionné et ne la partagez pas.

### Variable d'environnement (shell)

```bash
export EXPLORERHUB_API_KEY=ehk_YOUR_KEY_HERE
```

### Claude Code (ligne de commande)

```bash
claude mcp add --transport http explorerhub https://explorerhub.eu/api/mcp \
  --header "Authorization: Bearer ehk_YOUR_KEY_HERE"
```

### Claude Code (fichier .mcp.json)

```json
{
  "mcpServers": {
    "explorerhub": {
      "type": "http",
      "url": "https://explorerhub.eu/api/mcp",
      "headers": {
        "Authorization": "Bearer ${EXPLORERHUB_API_KEY}"
      }
    }
  }
}
```

### Cursor (mcp.json) — `.cursor/mcp.json`

```json
{
  "mcpServers": {
    "explorerhub": {
      "url": "https://explorerhub.eu/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:EXPLORERHUB_API_KEY}"
      }
    }
  }
}
```

### VS Code et GitHub Copilot (.vscode/mcp.json)

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "explorerhub-key",
      "description": "ExplorerHub MCP API key",
      "password": true
    }
  ],
  "servers": {
    "explorerhub": {
      "type": "http",
      "url": "https://explorerhub.eu/api/mcp",
      "headers": {
        "Authorization": "Bearer ${input:explorerhub-key}"
      }
    }
  }
}
```

### Windsurf (mcp_config.json) — `~/.codeium/windsurf/mcp_config.json`

```json
{
  "mcpServers": {
    "explorerhub": {
      "serverUrl": "https://explorerhub.eu/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:EXPLORERHUB_API_KEY}"
      }
    }
  }
}
```

### Claude Desktop via mcp-remote (claude_desktop_config.json)

```json
{
  "mcpServers": {
    "explorerhub": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://explorerhub.eu/api/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer ehk_YOUR_KEY_HERE"
      }
    }
  }
}
```

L'application Claude Desktop n'accepte pas d'en-tête statique dans ses connecteurs, mais elle se connecte via mcp-remote, une passerelle open source tierce (paquet npm, licence MIT) qui s'exécute sur votre ordinateur, dialogue avec l'application et transmet la clé au serveur : l'exemple ci-dessus est celui de son README, et la clé reste dans le fichier de configuration local de l'application, qui ne finit jamais dans un dépôt. Les connecteurs de claude.ai et de ChatGPT exigent OAuth et ne sont pas pris en charge pour le moment. Le serveur répond à tout client MCP qui utilise le transport Streamable HTTP et envoie l'en-tête Authorization.

## Niveaux et limites

- **Gratuit**: Inclus avec le compte ExplorerHub, pour l'usage interactif avec un assistant : 60 appels par minute et par clé, et 10 000 appels par mois et par compte.
- **Pro**: Pour les intégrations et les extractions : 600 appels par minute et par clé, et 500 000 appels par mois et par compte. Abonnement mensuel ou annuel ; l'activation en ligne n'est pas encore disponible : écrivez à support@idcert.io.

### Que se passe-t-il à la limite

La limite se mesure par minute et par clé ; sans clé valide, elle s'applique par adresse IP et n'est consommée que par les tentatives échouées. Au-delà de la limite, le serveur répond 429 avec un corps JSON portant error « rate_limited », scope (key ou ip), limit et retryAfter, et avec l'en-tête Retry-After en secondes. Les en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset (secondes depuis l'époque Unix) accompagnent chaque réponse authentifiée, de sorte que le client peut ralentir avant d'être refusé. Chaque compte est en outre soumis à un quota mensuel sur l'ensemble de ses clés : 10 000 appels par mois civil (UTC) au niveau gratuit, 500 000 en Pro. Une fois le quota épuisé, le serveur répond 429 avec scope month et un Retry-After qui court jusqu'au premier jour du mois suivant ; les en-têtes X-RateLimit-Monthly-Limit, X-RateLimit-Monthly-Remaining et X-RateLimit-Monthly-Reset accompagnent chaque réponse authentifiée à côté de ceux de la minute. Une requête refusée par la limite de la minute ne consomme pas le quota du mois.

## Codes de réponse

Chaque réponse porte Cache-Control: no-store. Le serveur n'accepte que POST, qui est le transport Streamable HTTP du protocole MCP.

| État | Corps | En-têtes | Signification |
|---|---|---|---|
| 200 | `JSON-RPC (MCP)` | `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`, `X-RateLimit-Monthly-Limit`, `X-RateLimit-Monthly-Remaining`, `X-RateLimit-Monthly-Reset`, `Cache-Control: no-store` | Requête authentifiée servie. Les en-têtes X-RateLimit indiquent ce qui reste de la limite de la minute. |
| 401 | `{"error":"unauthorized","message":"…","docs":"https://explorerhub.eu/en/mcp"}` | `WWW-Authenticate: Bearer realm="ExplorerHub MCP"` | Clé absente, mal formée, inconnue ou révoquée : les quatre cas reçoivent la même réponse, volontairement. Le champ docs renvoie à cette page. |
| 405 | `—` | `Allow: POST` | Méthode autre que POST. La réponse arrive avant l'authentification et ne consomme aucune limite. |
| 429 | `{"error":"rate_limited","scope":"key\|ip\|month","limit":60,"retryAfter":60}` | `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` | Limite dépassée : celle de la minute, par clé (scope key) ou par adresse IP sans clé valide (scope ip), ou le quota mensuel du compte (scope month). Réessayez après les secondes indiquées dans Retry-After. |
| 503 | `{"error":"disabled"}` | `Retry-After: 300` | Service suspendu par l'administrateur. Réessayez après les secondes indiquées dans Retry-After. |
| 503 | `{"error":"unavailable"}` | `Retry-After: 30` | La base de données ne répond pas. Réessayez après les secondes indiquées dans Retry-After ; la tentative ne consomme pas la limite par IP. |

## La forme des réponses

Chaque réponse d'un outil porte, outre les données demandées, deux blocs distincts. attribution dit à qui appartient le texte du référentiel et sous quel titre il est réutilisé : licence ou mention de droits, citation, provenance de la traduction dans la langue demandée. service dit qui a rendu le service. Sur les outils qui lisent un référentiel, attribution est un objet ; dans explorerhub_list_frameworks et dans la recherche sur tous les référentiels, c'est un tableau avec un élément par référentiel. Les deux blocs ne sont jamais fusionnés, car IDCERT n'est pas titulaire du texte des référentiels.

```json
{
  "framework": {
    "id": "digcomp",
    "name": "DigComp",
    "version": "3.0"
  },
  "attribution": {
    "framework": {
      "id": "digcomp",
      "name": "DigComp",
      "version": "3.0",
      "producer": "JRC",
      "publisher": "Joint Research Centre, European Commission",
      "year": 2025,
      "citation": "Cosgrove, J., Cachia, R., DigComp 3.0: European Digital Competence Framework – Fifth Edition, EUR 40491, Publications Office of the European Union, Luxembourg, 2025, ISBN 978-92-68-32677-0, doi:10.2760/0001149, JRC144121.",
      "doi": "10.2760/0001149",
      "sourceUrl": "https://publications.jrc.ec.europa.eu/repository/handle/JRC144121"
    },
    "license": {
      "url": "https://creativecommons.org/licenses/by/4.0/",
      "requiresAttribution": true
    },
    "rightsStatement": null,
    "translation": {
      "locale": "fr",
      "provenance": [
        "official",
        "idcert"
      ],
      "notice": "The fr text is an edition edited by IDCERT, not an official edition (in part; the rest is the publisher's own edition). The European Commission is not responsible for this translation."
    },
    "attributionPage": "https://explorerhub.eu/en/legal/attribution"
  },
  "service": {
    "name": "ExplorerHub MCP",
    "provider": "IDCERT S.r.l. Società Benefit",
    "url": "https://explorerhub.eu",
    "endpoint": "https://explorerhub.eu/api/mcp",
    "termsOfService": "https://explorerhub.eu/en/legal/mcp-terms",
    "notice": "Data obtained through ExplorerHub MCP (https://explorerhub.eu/api/mcp), a service of IDCERT S.r.l. Società Benefit. Framework content is reproduced from the official publication named in `attribution`, under that publication's own licence or rights statement: when you redistribute it, credit its publisher as that licence requires. Use of this service is governed by the ExplorerHub MCP terms of service (https://explorerhub.eu/en/legal/mcp-terms), which ask you to state that the data was obtained through ExplorerHub by IDCERT S.r.l. Società Benefit, in addition to the publisher's attribution."
  }
}
```

_Exemple généré par les mêmes fonctions que le serveur, pour DigComp dans la langue de cette page ; les champs propres à l'outil (arborescence, descripteurs, résultats) sont omis._

## Comment citer

Quiconque réutilise les données déclare la source du texte comme l'exige la licence du référentiel et, à côté, le service par lequel il les a obtenues — jamais à la place de l'éditeur. Une formule prête à copier, pour DigComp :

> Cosgrove, J., Cachia, R., DigComp 3.0: European Digital Competence Framework – Fifth Edition, EUR 40491, Publications Office of the European Union, Luxembourg, 2025, ISBN 978-92-68-32677-0, doi:10.2760/0001149, JRC144121. Données obtenues via ExplorerHub MCP, service d'IDCERT S.r.l. Società Benefit (https://explorerhub.eu/api/mcp).

## Licences et attribution

Les textes des référentiels sont des publications de la Commission européenne, du Centre commun de recherche (JRC) et de l'OCDE, reproduites aux conditions de leurs licences Creative Commons ou autorisations de réutilisation respectives. Chaque réponse du serveur porte la citation, la licence et la provenance de la traduction : quiconque redistribue ce texte doit les conserver. L'usage du service est régi par les conditions MCP, qui demandent de déclarer que les données ont été obtenues via ExplorerHub d'IDCERT S.r.l. Società Benefit, à côté de l'attribution à l'éditeur. Les éditions traduites par les soins d'IDCERT sont déclarées comme telles et ne sont pas des éditions officielles.

ExplorerHub et IDCERT ne sont pas affiliés à la Commission européenne, au JRC ni à l'OCDE.

- [Attribution des sources](https://explorerhub.eu/fr/legal/attribution)
- [Conditions du service MCP](https://explorerhub.eu/fr/legal/mcp-terms)
