# Servidor MCP de ExplorerHub

> Consulta los ocho marcos de competencias publicados en ExplorerHub desde Claude Code, Cursor, VS Code, Windsurf o tus propios scripts mediante Model Context Protocol. Acceso con clave API gratuita, atribución de las fuentes en cada respuesta.

Dirección del servidor: `https://explorerhub.eu/api/mcp`

**El servidor MCP aún no está activo: el lanzamiento está previsto antes del 30 de septiembre de 2026. Hasta entonces la dirección responde 503 con el código «disabled» y la creación de claves no está disponible. Esta página se mantiene como documentación.**

## Qué es

Model Context Protocol (MCP) es el estándar abierto con el que los asistentes basados en modelos de lenguaje se conectan a fuentes de datos externas. El servidor MCP de ExplorerHub expone en modo de solo lectura la estructura, los descriptores, los niveles y los glosarios de DigComp, DigCompEdu, GreenComp, LifeComp, FinComp, DigCompConsumers, AILit y EntreComp, con los mismos datos y en los mismos cuatro idiomas que el sitio. El servidor es un producto de IDCERT S.r.l. Società Benefit y responde en explorerhub.eu.

## Las herramientas

- `explorerhub_list_frameworks`: Enumera los marcos publicados con identificador, editor, año, idiomas, recuentos y licencia.
- `explorerhub_get_framework`: Devuelve la estructura de un marco: áreas, competencias, niveles y, cuando el marco está dividido por público, los segmentos disponibles.
- `explorerhub_get_node`: Devuelve un área o una competencia con todos sus descriptores, agrupados por nivel o por dimensión.
- `explorerhub_get_levels`: Devuelve los niveles de dominio de un marco, con descripción y las correspondencias EQF/MCER que indica el documento.
- `explorerhub_get_glossary`: Devuelve el glosario de un marco, filtrable y paginado.
- `explorerhub_search`: Busca texto o un código del documento en un marco o en todos, con resultados ordenados y enlaces a la página. Acepta limit y offset para recorrer los resultados y audience para los marcos con varios públicos; indica si la lista está truncada y desde dónde continuar.

## Cómo obtener la clave

1. Crea una cuenta de ExplorerHub, o inicia sesión si ya tienes una.
2. En tu cuenta, abre la sección «Acceso MCP».
3. Dale un nombre a la clave (por ejemplo, el cliente que la usará) y acepta los términos del servicio MCP: sin la aceptación la clave no se crea.
4. Pulsa «Crear clave» y cópiala de inmediato: se muestra una sola vez y no se puede recuperar. Si la pierdes, revócala y crea otra.
5. Pasa la clave a tu cliente MCP en la cabecera Authorization como Bearer token, como en los ejemplos siguientes.

Las claves empiezan por ehk_ y tienen 47 caracteres. El servidor conserva solo su huella criptográfica: nadie, ni siquiera IDCERT, puede volver a leer una clave ya creada.
Puedes tener como máximo 5 claves activas por cuenta; las claves revocadas no cuentan.

### Revocación

En tu cuenta, junto a cada clave, «Revocar» la desactiva de inmediato y de forma definitiva: los clientes que la usan reciben 401 desde la siguiente llamada. Revoca una clave si la has expuesto, si el dispositivo que la usaba ya no es tuyo o si ya no la necesitas, y crea una nueva cuando la necesites.

## Ejemplos de configuración

Exporta la clave a una variable de entorno, como en el primer ejemplo, y déjala ahí. Los archivos de configuración del proyecto — .mcp.json, .cursor/mcp.json, .vscode/mcp.json — acaban en el repositorio: por eso los ejemplos hacen referencia a la variable, o a una entrada del editor, y no a la clave. Nunca pegues la clave en un archivo versionado ni la compartas.

### Variable de entorno (shell)

```bash
export EXPLORERHUB_API_KEY=ehk_YOUR_KEY_HERE
```

### Claude Code (línea de comandos)

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

### Claude Code (archivo .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 y 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 mediante 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"
      }
    }
  }
}
```

La aplicación Claude Desktop no acepta una cabecera estática en sus conectores, pero se conecta mediante mcp-remote, un puente de código abierto de terceros (paquete npm, licencia MIT) que se ejecuta en tu ordenador, habla con la aplicación y pasa la clave al servidor: el ejemplo de arriba es el de su README, y la clave se queda en el archivo de configuración local de la aplicación, que nunca acaba en un repositorio. Los conectores de claude.ai y de ChatGPT requieren OAuth y por el momento no están soportados. El servidor responde a cualquier cliente MCP que use el transporte Streamable HTTP y envíe la cabecera Authorization.

## Niveles y límites

- **Gratuito**: Incluido con la cuenta de ExplorerHub, para el uso interactivo con un asistente: 60 llamadas por minuto por clave y 10.000 llamadas al mes por cuenta.
- **Pro**: Para integraciones y extracciones: 600 llamadas por minuto por clave y 500.000 llamadas al mes por cuenta. Suscripción mensual o anual; la activación en línea aún no está disponible: escribe a support@idcert.io.

### Qué ocurre al alcanzar el límite

El límite se mide por minuto y por clave; sin una clave válida se aplica por dirección IP y solo lo consumen los intentos fallidos. Superado el límite, el servidor responde 429 con un cuerpo JSON que lleva error «rate_limited», scope (key o ip), limit y retryAfter, y con la cabecera Retry-After en segundos. Las cabeceras X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset (segundos desde la época Unix) acompañan cada respuesta autenticada, de modo que el cliente puede frenar antes de ser rechazado. A cada cuenta se aplica además una cuota mensual sobre todas sus claves: 10.000 llamadas por mes natural (UTC) en el nivel gratuito, 500.000 en Pro. Agotada la cuota, el servidor responde 429 con scope month y un Retry-After que llega hasta el primer día del mes siguiente; las cabeceras X-RateLimit-Monthly-Limit, X-RateLimit-Monthly-Remaining y X-RateLimit-Monthly-Reset acompañan cada respuesta autenticada junto a las del minuto. Una solicitud rechazada por el límite del minuto no consume la cuota del mes.

## Códigos de respuesta

Cada respuesta lleva Cache-Control: no-store. El servidor solo acepta POST, que es el transporte Streamable HTTP del protocolo MCP.

| Estado | Cuerpo | Cabeceras | Significado |
|---|---|---|---|
| 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` | Solicitud autenticada atendida. Las cabeceras X-RateLimit indican cuánto queda del límite del minuto. |
| 401 | `{"error":"unauthorized","message":"…","docs":"https://explorerhub.eu/en/mcp"}` | `WWW-Authenticate: Bearer realm="ExplorerHub MCP"` | Clave ausente, mal formada, desconocida o revocada: las cuatro condiciones reciben la misma respuesta, a propósito. El campo docs remite a esta página. |
| 405 | `—` | `Allow: POST` | Método distinto de POST. La respuesta llega antes de la autenticación y no consume ningún límite. |
| 429 | `{"error":"rate_limited","scope":"key\|ip\|month","limit":60,"retryAfter":60}` | `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` | Límite superado: el del minuto, por clave (scope key) o por dirección IP sin clave válida (scope ip), o la cuota mensual de la cuenta (scope month). Reintenta pasados los segundos indicados en Retry-After. |
| 503 | `{"error":"disabled"}` | `Retry-After: 300` | Servicio suspendido por el administrador. Reintenta pasados los segundos indicados en Retry-After. |
| 503 | `{"error":"unavailable"}` | `Retry-After: 30` | La base de datos no responde. Reintenta pasados los segundos indicados en Retry-After; el intento no consume el límite por IP. |

## La forma de las respuestas

Cada respuesta de una herramienta lleva, además de los datos solicitados, dos bloques distintos. attribution dice de quién es el texto del marco y bajo qué título se reutiliza: licencia o declaración de derechos, cita, procedencia de la traducción en el idioma solicitado. service dice quién ha prestado el servicio. En las herramientas que leen un marco attribution es un objeto; en explorerhub_list_frameworks y en la búsqueda en todos los marcos es un array con un elemento por marco. Los dos bloques nunca se fusionan, porque IDCERT no es titular del texto de los marcos.

```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": "es",
      "provenance": [
        "official",
        "idcert"
      ],
      "notice": "The es 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."
  }
}
```

_Ejemplo generado por las mismas funciones del servidor, para DigComp en el idioma de esta página; los campos propios de la herramienta (árbol, descriptores, resultados) se omiten._

## Cómo citar

Quien reutiliza los datos declara la fuente del texto como exige la licencia del marco y, junto a ella, el servicio con el que los obtuvo — nunca en lugar del editor. Una fórmula lista para copiar, para 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. Datos obtenidos a través de ExplorerHub MCP, servicio de IDCERT S.r.l. Società Benefit (https://explorerhub.eu/api/mcp).

## Licencias y atribución

Los textos de los marcos son publicaciones de la Comisión Europea, del Centro Común de Investigación (JRC) y de la OCDE, reproducidos en las condiciones de sus respectivas licencias Creative Commons o autorizaciones de reutilización. Cada respuesta del servidor incluye la cita, la licencia y la procedencia de la traducción: quien redistribuya ese texto debe conservarlas. El uso del servicio se rige por los términos MCP, que piden declarar que los datos se obtuvieron a través de ExplorerHub de IDCERT S.r.l. Società Benefit, junto a la atribución al editor. Las ediciones traducidas a cargo de IDCERT se declaran como tales y no son ediciones oficiales.

ExplorerHub e IDCERT no están afiliados a la Comisión Europea, al JRC ni a la OCDE.

- [Atribución de las fuentes](https://explorerhub.eu/es/legal/attribution)
- [Términos del servicio MCP](https://explorerhub.eu/es/legal/mcp-terms)
