Skip to main content
Glama
liam-edmunds

enable-nz-mcp

by liam-edmunds

enable-nz-mcp

Un servidor MCP público y alojado que expone el contenido de enable.co.nz como herramientas buscables, conectable desde Copilot Studio, VS Code Copilot, Claude Desktop o cualquier cliente MCP.

Este es un proyecto de portafolio personal. No está afiliado con Enable New Zealand ni con ningún empleador, y solo lee contenido disponible públicamente de un sitio web público.

  • Servidor: https://enable-nz-mcp.duckdns.org/mcp (Streamable HTTP)

  • Comprobación de salud: https://enable-nz-mcp.duckdns.org/health


Arquitectura

GitHub Actions (weekly cron)
  └─ crawl enable.co.nz → build index.db.new
     └─ rsync over SSH → droplet:/opt/enable-nz-mcp/data/index.db.new
        └─ atomic mv → index.db

DigitalOcean droplet (Ubuntu 24.04, Sydney)
  ├─ Caddy  → TLS termination + reverse proxy on enable-nz-mcp.duckdns.org
  └─ pm2    → node dist/server.js  (port 8081, localhost only)
                └─ opens a fresh SQLite read connection per query

El servidor nunca almacena en caché el índice en memoria — cada llamada a una herramienta abre una conexión nueva de solo lectura contra index.db en disco. Un rastreo semanal reconstruye el índice y lo intercambia con un único mv atómico, de modo que el índice se actualiza sin tiempo de inactividad y sin reinicio.

Solo lectura en todas las direcciones: el rastreador solo lee enable.co.nz, y las herramientas MCP solo leen el índice SQLite local. No se realiza ningún tipo de operación de escritura.


Related MCP server: MCP Knowledge Base Server

Herramientas

search_enable_nz

Búsqueda de texto completo en enable.co.nz.

Parámetro

Tipo

Obligatorio

Notas

query

string

Términos de búsqueda

limit

integer

no

Por defecto 5, máximo 20

section

string

no

Restringir a una sección, p. ej. services

Devuelve las páginas coincidentes ordenadas por relevancia, cada una con url, title, section y un fragmento resaltado.

get_page

Recupera el texto completo de una página por URL.

Parámetro

Tipo

Obligatorio

url

string

Devuelve url, title, section, description, content y crawled_at. El contenido de más de ~15.000 caracteres se trunca, con truncated: true en la respuesta.

list_sections

Sin entrada. Enumera las secciones de nivel superior del sitio con recuentos de páginas, y la marca de tiempo crawled_at del índice — útil para orientarse antes de una búsqueda, o para comprobar la actualidad de los datos.


Ejemplos de consultas

Una vez conectado, pide a tu cliente MCP cosas como:

  • "Busca en enable.co.nz información sobre financiación de sillas de ruedas."

  • "¿Qué secciones cubre el índice de enable.co.nz?"

  • "Obtén el contenido completo de https://www.enable.co.nz/services y resúmelo."


Conexión de un cliente MCP

Copilot Studio

  1. Abre tu agente → HerramientasAñadir una herramientaNueva herramientaModel Context Protocol.

  2. Nombre del servidor: enable-nz-mcp (o lo que quieras — es solo una etiqueta).

  3. URL del servidor: https://enable-nz-mcp.duckdns.org/mcp

  4. Autenticación: Sin autenticación (déjalo como está a menos que el servidor tenga API_KEY configurada, en cuyo caso elige una opción de autenticación por clave API/bearer y proporciónala).

  5. Crea → Copilot Studio se conecta mediante Streamable HTTP (el único transporte que soporta desde que eliminó SSE en agosto de 2025) y enumera search_enable_nz, get_page y list_sections. Añade la herramienta a tu agente y pruébala con un prompt como "busca en enable.co.nz financiación para sillas de ruedas".

VS Code Copilot

  1. Abre la Paleta de comandos → MCP: Añadir servidor.

  2. Elige HTTP e introduce https://enable-nz-mcp.duckdns.org/mcp.

  3. VS Code enumerará search_enable_nz, get_page y list_sections como herramientas disponibles una vez conectado.

Claude Desktop

  1. Ajustes → ConectoresAñadir conector personalizado.

  2. URL: https://enable-nz-mcp.duckdns.org/mcp.

  3. Claude negociará el transporte Streamable HTTP automáticamente.

Cualquier otro cliente MCP

Apunta a https://enable-nz-mcp.duckdns.org/mcp usando el transporte Streamable HTTP. Si API_KEY está configurada en el servidor, envía Authorization: Bearer <clave>.


Desarrollo local

npm ci
cp .env.example .env        # edit as needed

npm run crawl                # builds data/index.db.new
mv data/index.db.new data/index.db

npm run dev                  # starts the server with tsx, reading .env

Prueba el servidor en ejecución con MCP Inspector:

npx @modelcontextprotocol/inspector
# connect to http://127.0.0.1:8081/mcp

O haz una prueba rápida manualmente:

curl http://127.0.0.1:8081/health

curl -X POST http://127.0.0.1:8081/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Ejecuta la suite de pruebas:

npm test

Despliegue

El servidor se ejecuta en un droplet existente de DigitalOcean bajo su propio usuario de sistema sin privilegios (mcpsvc), aislado de otros servicios en la misma máquina — mcpsvc no tiene sudo ni acceso de lectura fuera de /opt/enable-nz-mcp. Consulta deploy/ecosystem.config.cjs para la configuración del proceso pm2 y deploy/Caddyfile.example para el bloque de proxy inverso.

Tanto los cambios de configuración de pm2 como los de Caddy requieren root, por lo que mcpsvc no puede ir más allá de pm2 save por su cuenta — un administrador debe ejecutar pm2 startup (para persistir el proceso entre reinicios) e instalar/recargar el bloque del sitio en Caddy. La limitación de tasa no se aplica actualmente en la capa de Caddy: requiere el plugin de terceros caddy-ratelimit, que no está en la compilación de Caddy de esta máquina.

El flujo de trabajo .github/workflows/refresh-index.yml re-rastrea el sitio semanalmente (domingo 02:00 UTC, o manualmente mediante workflow_dispatch), establece un umbral mínimo de recuento/tamaño de páginas, y despliega el nuevo índice mediante rsync + un mv atómico por SSH. Necesita tres secretos de repositorio: DEPLOY_SSH_KEY, DEPLOY_HOST, DEPLOY_USER — usando un par de claves de despliegue dedicado restringido mediante una directiva command= en authorized_keys para que solo pueda ejecutar el rsync/mv, no un shell arbitrario.


Fuera del alcance de v1

  • Embeddings / búsqueda semántica (la búsqueda por palabras clave mediante SQLite FTS5 es suficiente para un sitio de marketing)

  • Renderizado con navegador headless

  • Soporte multi-sitio

  • Operaciones de escritura de cualquier tipo

  • Autenticación a nivel de usuario o aislamiento por inquilino

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    C
    quality
    F
    maintenance
    Enables searching for any text within a specified Algolia index through an MCP-compatible interface. It allows users to integrate Algolia search capabilities into their environment using an application ID and API key.
    1
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching and retrieving records from the DigitalNZ collection, with tools for keyword search and fetching full item details.
    9
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to search, read, and query saved bookmark content via a read-only MCP interface, with full-text and optional semantic search.
    4
    MIT

View all related MCP servers

Related MCP Connectors

  • GETS NZ MCP — New Zealand Government Electronic Tenders Service (keyless).

  • data.govt.nz CKAN MCP.

  • Internet Archive (archive.org) item search & metadata MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/liam-edmunds/enable-nz-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server