Servidor MCP (Model Context Protocol) para consultar la API del Instituto Nacional de Estadística (INE) de España. Implementa soporte completo para JSON-RPC sobre HTTP y SSE (Server-Sent Events), optimizado para su uso con VS Code AI Toolkit.
- ✅ Protocolo MCP completo: Soporte para JSON-RPC y SSE
- ✅ 24 herramientas MCP: Acceso a todos los endpoints de la API del INE
- ✅ Documentación Swagger: API REST documentada con OpenAPI 3.0
- ✅ TypeScript: Código completamente tipado
- ✅ VS Code AI Toolkit: Configuración lista para usar
- ✅ Múltiples transportes: HTTP JSON-RPC, SSE y stdio
- Node.js 18 o superior
- npm o yarn
chmod +x install.sh
./install.sh# Instalar dependencias
npm install
# Compilar TypeScript
npm run buildEste es el modo recomendado para AI Toolkit:
npm start
# o
./start-server.shEl servidor estará disponible en:
- Endpoint MCP:
http://localhost:3000/mcp/v1 - Swagger UI:
http://localhost:3000/api-docs - Health Check:
http://localhost:3000/health
Para streaming de eventos:
npm run start:sse
# o
./start-sse.shEl servidor SSE estará en:
- Endpoint SSE:
http://localhost:3001/sse - Health Check:
http://localhost:3001/health
Para integración directa:
node dist/index.js --stdio- Abre VS Code
- Instala la extensión AI Toolkit
- Inicia el servidor:
npm start - En AI Toolkit, configura el servidor MCP:
{
"mcpServers": {
"ine-server": {
"url": "http://localhost:3000/mcp/v1",
"transport": "http",
"description": "API del INE España"
}
}
}{
"mcpServers": {
"ine-server-sse": {
"url": "http://localhost:3001/sse",
"transport": "sse",
"description": "API del INE España (SSE)"
}
}
}{
"mcpServers": {
"ine-server-stdio": {
"command": "node",
"args": ["dist/index.js", "--stdio"],
"cwd": "/ruta/a/mcp-ine",
"description": "API del INE España (stdio)"
}
}
}El servidor proporciona 24 herramientas MCP para interactuar con la API del INE:
ine_datos_tabla: Obtiene datos de una tabla específicaine_datos_serie: Obtiene datos de una serie temporaline_datos_metadata_operacion: Datos con filtros de metadata
ine_operaciones_disponibles: Lista todas las operaciones estadísticasine_operacion: Información de una operación específica
ine_variables: Lista todas las variables disponiblesine_variables_operacion: Variables de una operaciónine_valores_variable: Valores de una variableine_valores_variable_operacion: Valores en contexto de operaciónine_valores_hijos: Valores jerárquicos (ej: provincias de una CA)
ine_serie: Información de una serieine_series_operacion: Series de una operaciónine_series_tabla: Series de una tablaine_serie_metadata_operacion: Búsqueda con filtrosine_valores_serie: Variables que definen una serie
ine_tablas_operacion: Tablas de una operaciónine_grupos_tabla: Grupos de una tablaine_valores_grupos_tabla: Valores de un grupo
ine_periodicidades: Periodicidades disponiblesine_publicaciones: Lista de publicacionesine_publicaciones_operacion: Publicaciones de una operaciónine_publicacion_fecha_publicacion: Fechas de publicaciónine_clasificaciones: Clasificaciones disponiblesine_clasificaciones_operacion: Clasificaciones de una operación
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "ine_datos_serie",
"arguments": {
"idSerie": "IPC251856",
"nult": 12,
"tip": "A"
}
},
"id": 1
}{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "ine_operaciones_disponibles",
"arguments": {
"idioma": "ES",
"geo": 0
}
},
"id": 2
}{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "ine_variables_operacion",
"arguments": {
"idOperacion": "IPC"
}
},
"id": 3
}Una vez configurado en AI Toolkit, puedes hacer preguntas como:
¿Cuál es el último valor del IPC en España?
¿Qué operaciones estadísticas tiene el INE sobre población?
Dame los datos de la tabla 50902 de los últimos 5 períodos
¿Cuáles son las variables disponibles para la operación IPC?
Además del protocolo MCP, el servidor expone endpoints REST:
GET /api/datos-tabla/:idTabla- Datos de tablaGET /api/datos-serie/:idSerie- Datos de serieGET /api/operaciones-disponibles- Listar operacionesGET /api/operacion/:idOperacion- Info de operaciónGET /api/variables- Listar variablesGET /api/variables-operacion/:idOperacion- Variables de operaciónGET /api/series-operacion/:idOperacion- Series de operaciónGET /api/tablas-operacion/:idOperacion- Tablas de operación
Documentación completa en: http://localhost:3000/api-docs
ES: Español (por defecto)EN: Inglés
0: Básico1: Medio2: Completo
A: Amigable (legible)M: Con metadatosAM: Amigable con metadatos
1: Mensual3: Trimestral6: Semestral12: Anual
# Obtener últimos datos del IPC
curl -X POST http://localhost:3000/mcp/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "ine_datos_serie",
"arguments": {"idSerie": "IPC251856", "nult": 1}
},
"id": 1
}'
# Listar herramientas disponibles
curl -X POST http://localhost:3000/mcp/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"params": {},
"id": 1
}'mcp-ine/
├── src/
│ ├── index.ts # Servidor principal (HTTP JSON-RPC)
│ ├── server-sse.ts # Servidor SSE
│ ├── swagger.ts # Especificación OpenAPI
│ ├── types/
│ │ └── ine.types.ts # Tipos TypeScript
│ └── services/
│ └── ine-client.ts # Cliente HTTP para API INE
├── dist/ # Código compilado
├── package.json
├── tsconfig.json
├── mcp-config.json # Configuración para AI Toolkit
├── install.sh # Script de instalación
├── start-server.sh # Iniciar servidor HTTP
├── start-sse.sh # Iniciar servidor SSE
└── README.md
# Limpiar y reinstalar
npm run clean
rm -rf node_modules package-lock.json
npm install
npm run build- Verifica que el servidor esté corriendo:
http://localhost:3000/health - Comprueba que no haya otro proceso usando el puerto 3000
- Revisa la configuración MCP en AI Toolkit
# Reinstalar tipos
npm install --save-dev @types/node @types/express
npm run buildMIT
Las contribuciones son bienvenidas. Por favor, abre un issue o pull request.
Para reportar problemas o sugerencias, abre un issue en el repositorio.
Desarrollado con ❤️ para facilitar el acceso a los datos estadísticos del INE de España.