Skip to content

Servidor MCP

Normatia proporciona un servidor MCP remoto que da a los asistentes de IA acceso a la normativa de edificación española en el contexto de un proyecto concreto — sin instalar nada.

https://mcp.normatia.com/mcp

El alcance normativo de Normatia se define por proyecto: cada proyecto en normatia.com tiene su municipio, sus normativas aplicables (estatales, autonómicas, municipales), sus documentos subidos, su memoria de datos de obra y sus cálculos guardados.

Eso significa dos cosas para el asistente conectado:

  • No hay que darle contexto. No preguntes por la ciudad, la zona climática ni qué edición del CTE aplica: el proyecto ya lo sabe y la respuesta llega con esos valores ya resueltos.
  • Solo se responde sobre municipios con proyecto. Si el usuario pregunta por un municipio donde no tiene proyecto, el servidor lo dice y sugiere crearlo. No hay respuesta genérica: las ordenanzas municipales difieren por completo entre ayuntamientos.

Tres herramientas, todas de solo lectura. El servidor MCP no escribe nada: no genera documentos, no edita y no guarda en la memoria del proyecto.

HerramientaDescripciónParámetrosCoste
askConsulta normativa en lenguaje natural sobre un proyecto. Es la única que devuelve texto normativo citable.query, project_id?1 crédito
get_project_infoContexto completo de un proyecto: ubicación, datos técnicos del territorio, normativa aplicable con su versión vigente, archivos, documentos generados, memoria y cálculos guardados.project_id?Gratis
list_projectsProyectos que el usuario puede consultar, con su project_id, ubicación y cuál es el activo.Gratis

ask no es una búsqueda semántica de un solo disparo: ejecuta el mismo bucle agéntico que el chat de normatia.com. El modelo decide qué buscar, encadena varias búsquedas con enfoques distintos, lee la memoria y los cálculos guardados del proyecto, consulta los documentos subidos y redacta la respuesta citando sus fuentes con marcadores [N] validados contra los bloques realmente recuperados.

Internamente dispone de siete herramientas de consulta: búsqueda normativa, memoria del proyecto, cálculos guardados, marcadores, contexto documental y ficha de fuente. Nada de eso se expone al cliente — el bucle vive en el servidor, de modo que las reglas de precedencia normativa y de citación son idénticas a las del chat web.

Todas las herramientas aceptan un project_id opcional. El orden de resolución es:

project_id explícito → proyecto activo del usuario en la web

Si el usuario pregunta por otro municipio o proyecto, el asistente llama a list_projects, coge el project_id que corresponda y lo pasa a ask. Nunca hay que pedirle al usuario que cambie el proyecto activo en la web: se pueden consultar varios proyectos en la misma conversación, incluso en paralelo, y lo que el usuario ve en normatia.com no cambia por debajo.

Un project_id de otra organización devuelve el mismo 404 que uno inexistente.

Conecta Normatia como conector personalizado, con OAuth y sin API key.

  1. Ve a Customize > Connectors

  2. Pulsa ”+” y luego “Add custom connector”

  3. Introduce la URL del servidor: https://mcp.normatia.com/mcp

  4. Selecciona OAuth como autenticación

  5. Pulsa “Add”

En planes Team y Enterprise el propietario lo añade desde Organization settings > Connectors y los miembros lo activan después desde Customize > Connectors.

  1. Activa el modo desarrollador: Settings → Apps → Advanced Settings → Developer mode

  2. Ve a Settings → Apps → Create

  3. Introduce la URL del servidor: https://mcp.normatia.com/mcp

  4. Selecciona OAuth como autenticación

  5. Pulsa Create

Añade a tu configuración (~/Library/Application Support/Claude/claude_desktop_config.json en macOS, %APPDATA%\Claude\claude_desktop_config.json en Windows):

{
"mcpServers": {
"normatia": {
"type": "streamable-http",
"url": "https://mcp.normatia.com/mcp",
"headers": {
"Authorization": "Bearer sk-normatia-..."
}
}
}
}
Terminal window
claude mcp add normatia --transport streamable-http https://mcp.normatia.com/mcp \
-h "Authorization: Bearer sk-normatia-..."

Añade un archivo .vscode/mcp.json en tu workspace:

{
"servers": {
"normatia": {
"type": "streamable-http",
"url": "https://mcp.normatia.com/mcp",
"headers": {
"Authorization": "Bearer sk-normatia-..."
}
}
}
}

O añádelo a tu User Settings (JSON) para acceso global:

{
"mcp": {
"servers": {
"normatia": {
"type": "streamable-http",
"url": "https://mcp.normatia.com/mcp",
"headers": {
"Authorization": "Bearer sk-normatia-..."
}
}
}
}
}

Añade a la configuración MCP de Cursor (~/.cursor/mcp.json):

{
"mcpServers": {
"normatia": {
"type": "streamable-http",
"url": "https://mcp.normatia.com/mcp",
"headers": {
"Authorization": "Bearer sk-normatia-..."
}
}
}
}

Añade a la configuración MCP de Windsurf:

{
"mcpServers": {
"normatia": {
"type": "streamable-http",
"url": "https://mcp.normatia.com/mcp",
"headers": {
"Authorization": "Bearer sk-normatia-..."
}
}
}
}

Añade a la configuración de Zed (~/.config/zed/settings.json):

{
"context_servers": {
"normatia": {
"transport": "streamable-http",
"url": "https://mcp.normatia.com/mcp",
"headers": {
"Authorization": "Bearer sk-normatia-..."
}
}
}
}

Usa estos datos de conexión con cualquier cliente compatible con MCP:

ConfiguraciónValor
Transportestreamable-http
URLhttps://mcp.normatia.com/mcp
Header de autenticaciónAuthorization: Bearer sk-normatia-...

Una vez conectado, prueba estos prompts en tu asistente de IA:

  • “¿Qué normativa tengo activa en mi proyecto y de qué año es cada edición?”
  • “¿Qué transmitancia máxima puedo poner en las ventanas de mi proyecto?”
  • “Revisa la memoria de carpintería adjunta y dime si los valores cumplen”
  • “¿Qué altura libre mínima me exige la ordenanza municipal en el proyecto de Sevilla?”
  • “Compara los requisitos de accesibilidad de mi proyecto de Madrid con el de Bilbao”
  • “¿Qué dice la normativa sobre ventilación del garaje, teniendo en cuenta los cálculos que ya guardé?”

Consulta sobre el proyecto activo

  1. ask("...") — sin más. El proyecto activo se resuelve solo
  2. Llama a get_project_info() solo si necesitas ver la ubicación, las versiones vigentes o qué hay guardado

Comparativa entre municipios

  1. list_projects() para obtener los project_id
  2. ask("...", project_id=A) y ask("...", project_id=B)
  3. Contrasta las respuestas — sin tocar el proyecto activo del usuario

Las mismas capacidades están disponibles como API REST para integraciones propias:

El código fuente, SDK, ejemplos y AI skills están disponibles en el repositorio open-source:

github.com/normatia/normatia