KunnaServidorMCP
Servidor MCP que se conecta a la OpenAPI de la Smart University de la Universidad de Alicante permitiendo consultar datos IoT.
Install / Use
claude mcp add vancovx -- npx -y github:vancovx/KunnaServidorMCPIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of KunnaServidorMCP
KunnaServidorMCP scores 77/100 on our quality scale, 3665th of 4,592 Development & Engineering skills we index.
Its MCP Server is 9.6 KB long, well organised into 27 sections with 6 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 3 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 78/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
KunnaServidorMCP compared with similar skills
All 4 of these similar skills score higher than KunnaServidorMCP; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| KunnaServidorMCP (this skill)by vancovx | 77 | 3 | 3mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 100.6k | 1d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 100.5k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.2k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 62.9k | today | CLAUDE.md |
Frequently asked questions
- How do I install KunnaServidorMCP?
- Run
claude mcp add vancovx -- npx -y github:vancovx/KunnaServidorMCP. The install tabs above show the steps for each supported agent. - Which AI agents does KunnaServidorMCP work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is KunnaServidorMCP safe to use?
- It declares no license and scores 78/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is KunnaServidorMCP still maintained?
- The repository was last updated about 3 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubServidor MCP de Smart University, Kunna
Servidor MCP (Model Context Protocol) que expone datos IoT del campus de la Universidad de Alicante (consumo eléctrico, agua, meteorología, sensores ambientales de aulas y WiFi), junto con búsqueda semántica de edificios y prompts listos para generar informes.
El objetivo de este servidor es facilitar el acceso a la información de las APIs de medición de la universidad sin necesidad de interactuar directamente con ellas. Gracias a las herramientas que expone, es posible realizar consultas en lenguaje natural y obtener información de forma sencilla, acercando estos datos a usuarios sin conocimientos técnicos y eliminando la complejidad de trabajar directamente con las APIs.
Este repositorio es parte de un Trabajo de Fin de Grado (TFG). Existe también un cliente desarrollado para completar el ciclo de desarrollo de la arquitectura MCP:
https://github.com/vancovx/KunnaClienteMCP.
¿Qué hace este servidor?
- Consulta datos de medición de varias colecciones IoT (energía, agua, clima, sensores de sala, WiFi) a través de la API de Kunna: lecturas crudas, agregados por hora/día, máximos, mínimos, sumas, etc.
- Genera informes mediante prompts predefinidos: consumo eléctrico mensual, consumo de agua con detección de fugas y confort ambiental de un aula.
- Resuelve edificios en lenguaje natural. Entiende código SIGUA (
0025), nombre oficial (Escuela Politécnica Superior I) o descripción libre (la poli,donde se imparte enfermería) y lo traduce al edificio correcto usando embeddings. - Todo ello sobre Streamable HTTP, con sesiones, autenticación por token, rate limiting y logging estructurado.
Stack tecnológico
| Pieza | Tecnología |
|---|---|
| Runtime | Node.js (ESM) |
| HTTP | Express |
| Protocolo | @modelcontextprotocol/sdk (transporte Streamable HTTP) |
| Base de datos | PostgreSQL + pgvector |
| Embeddings | @xenova/transformers · modelo paraphrase-multilingual-mpnet-base-v2 (768 dim) |
| Cliente API externa | axios |
| Fechas/zonas horarias | luxon |
| Validación | zod |
| Logging | pino + pino-pretty |
| Seguridad | helmet · cors · express-rate-limit |
Estructura del proyecto
.
├── index.js # Punto de entrada: arranca el servidor
├── data/
│ ├── buildings/ # GeoJSON crudos, uno por edificio (entrada)
│ └── edificios.json # Edificios ya fusionados (salida de mergeBuildings)
└── src/
├── server.js # Servidor Express + MCP: rutas /mcp y /health, sesiones
├── SessionManager.js # Ciclo de vida de sesiones MCP y streams SSE (heartbeat, TTL, limpieza)
│
├── config/
│ └── logger.js # Logger pino (bonito en dev, JSON plano en prod; redacta secretos)
│
├── middleware/
│ ├── auth.js # Autenticación Bearer (se desactiva en development)
│ ├── security.js # Cabeceras seguras, CORS restringido y rate limit
│ └── acceptValidation.js # Valida los headers Accept que exige la spec MCP
│
├── tools/
│ ├── registerTool.js # Tools de datos: discover-collection, get-device-details, query-data, query-aggregation
│ └── campusTool.js # Tool search-campus-buildings (SIGUA + búsqueda semántica)
│
├── prompts/
│ └── registerPrompts.js # Prompts de informes: electricidad, agua y confort de aula
│
├── services/
│ ├── measurements.service.js # Cliente de la API Kunna (info, dispositivos, query, agregación)
│ └── embeddings.service.js # Generación de embeddings + acceso a PostgreSQL/pgvector
│
└── scripts/
├── mergeBuildings.js # Fusiona los GeoJSON de data/buildings en edificios.json
├── loadBuildings.js # Carga edificios.json en la BD y genera sus embeddings
└── test-embeddings-buildings.js # Prueba rápida de la búsqueda semántica
Resumen de carpetas:
data/— los datos geográficos de los edificios. Pones los GeoJSON enbuildings/, los fusionas y obtienesedificios.json, que es lo que se carga a la base de datos.src/config/— configuración del logger.src/middleware/— todo lo que se ejecuta antes de llegar a la lógica MCP: seguridad, autenticación y validación de la petición.src/tools/— las herramientas que el modelo puede invocar. Lo que el cliente realmente "llama".src/prompts/— plantillas de instrucciones reutilizables que orquestan varias tools para producir un informe completo.src/services/— la lógica que habla con el mundo exterior: la API de Kunna y la base de datos de embeddings.src/scripts/— utilidades que se lanzan a mano (no forman parte del servidor en ejecución).
Requisitos
- Node.js (versión con soporte de ESM y top-level await, p. ej. 18+).
- PostgreSQL con la extensión pgvector instalada.
- Acceso a la API de Kunna y un token por cada colección que quieras usar.
Puesta en marcha
1. Instalar dependencias
npm install
2. Configurar la base de datos
Crea la extensión pgvector y la tabla buildings:
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE buildings (
sigua TEXT PRIMARY KEY, -- código SIGUA, ej: '0025'
nombre TEXT NOT NULL, -- nombre oficial del edificio
description_embedding TEXT, -- descripción que enriquece el embedding
plantas TEXT[], -- plantas disponibles, ej: {0,1,2}
center_lat DOUBLE PRECISION, -- latitud del centro
center_lon DOUBLE PRECISION, -- longitud del centro
embedding vector(768) -- vector semántico (se genera al cargar)
);
El modelo de embeddings produce vectores de 768 dimensiones.
3. Variables de entorno
Crea un .env en la raíz:
# --- Servidor ---
PORT=3000
NODE_ENV=development # 'development' desactiva la auth Bearer
# --- Base de datos ---
DATABASE_URL=postgres://usuario:password@localhost:5432/tu_base
# --- API Kunna ---
KUNNA_ENDPOINT_API=https://.../api
KUNNA_API_TOKEN_ENERGY=xxxxx
KUNNA_API_TOKEN_WATER=xxxxx
KUNNA_API_TOKEN_WEATHER=xxxxx
KUNNA_API_TOKEN_ROOMSENSORS=xxxxx
KUNNA_API_TOKEN_WIFI=xxxxx
# --- Seguridad ---
MCP_AUTH_TOKEN=tu_t…[redacted] # obligatorio si NODE_ENV != development
CORS_ALLOWED_ORIGINS=https://midominio.com,https://otro.com
Cada colección usa su propio token, leído como KUNNA_API_TOKEN_<COLECCIÓN>. Las colecciones activas ahora mismo son: energy, water, weather, roomsensors y wifi.
4. Cargar los edificios
# 1) Fusiona los GeoJSON de data/buildings en data/edificios.json
node src/scripts/mergeBuildings.js
# 2) Carga edificios.json en la BD y genera sus embeddings
node src/scripts/loadBuildings.js
# --force regenera TODOS los embeddings (no solo los que falten)
# <ruta.json> usa otro JSON en lugar de data/edificios.json
# 3) (Opcional) Comprueba que la búsqueda semántica responde bien
node src/scripts/test-embeddings-buildings.js
La primera ejecución descarga el modelo de embeddings, así que tardará un poco más.
5. Arrancar el servidor
node index.js
Endpoints
| Método | Ruta | Para qué |
|---|---|---|
| GET | /health | Estado del servidor + métricas de sesiones y streams |
| POST | /mcp | Inicialización y llamadas MCP (tools, prompts, etc.) |
| GET | /mcp | Canal SSE de notificaciones servidor → cliente |
| DELETE | /mcp | Cierre explícito de una sesión |
Salvo en development, todas las peticiones a /mcp requieren cabecera Authorization: Bearer <MCP_AUTH_TOKEN>.
Capacidades MCP
Tools
| Tool | Qué hace |
|---|---|
| search-campus-buildings | Resuelve un edificio por SIGUA o por descripción (embeddings). |
| discover-collection | Vista general de una colección: qué mide y qué magnitudes tiene. |
| query-data | Lecturas crudas y descubrimiento de dispositivos + metadatos (en una sola llamada con include_metadata). |
| query-aggregation | Datos agregados (media, máx, mín, suma…) por intervalos horarios o diarios. |
| get-device-details | Detalles completos de un dispositivo concreto ya conocido. |
Prompts
| Prompt | Genera |
|---|---|
| informe-electricidad-edificio-mensual | Informe mensual de consumo eléctrico + anomalías. |
| informe-agua-edificio-mensual | Informe mensual de agua + detección de fugas. |
| informe-confort-aula | Análisis de CO₂, temperatura, humedad y VOC de un aula según normativa. |
Flujo típico
- El cliente pregunta algo en lenguaje natural ("informe de luz de la poli en junio").
- El prompt orquesta los pasos:
search-campus-buildingsresuelve el edificio →query-datadescubre sus contadores →query-aggregationsaca los consumos. - El servidor habla con la API de Kunna y con la base de datos de embeddings según haga falta.
- El modelo redacta el informe con la estructura definida en el prompt.
Notas
- Certificados TLS. En
index.jsse desactiva la verificación de certificados (NODE_TLS_REJECT_UNAUTHORIZED = '0') como apaño temporal mientras se arregla el certificado de la API externa. Conviene quitarlo en cuanto se resuelva.
Trabajo de Fin de Grado
Proyecto desarrollado como Trabajo de Fin de Grado en la Universidad de Alicante.
- Servidor (este repo): servidor MCP de datos IoT del campus.
- Cliente:
https://github.com/vancovx/KunnaClienteMCP. - Autora: Vanessa Covrig Roibu
- Tutor: Francisco Maciá Pérez
Related Skills
Agent-Reach
100.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
100.5kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
77.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
62.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
