enable-nz-mcp
enable-nz-mcp
Ein öffentlicher, gehosteter MCP-Server, der den Inhalt von enable.co.nz als durchsuchbare Tools bereitstellt, die von Copilot Studio, VS Code Copilot, Claude Desktop oder jedem MCP-Client verbunden werden können.
Dies ist ein persönliches Portfolio-Projekt. Es ist nicht mit Enable New Zealand oder einem Arbeitgeber verbunden und liest nur öffentlich verfügbare Inhalte von einer öffentlichen Website.
Server:
https://enable-nz-mcp.duckdns.org/mcp(Streamable HTTP)Health-Check:
https://enable-nz-mcp.duckdns.org/health
Architektur
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 queryDer Server speichert den Index nie im Speicher – jeder Tool-Aufruf öffnet eine frische, schreibgeschützte
Verbindung zu index.db auf der Festplatte. Ein wöchentlicher Crawl baut den Index neu auf und tauscht ihn
mit einem einzigen atomaren mv aus, sodass der Index ohne Ausfallzeiten und ohne Neustart aktualisiert wird.
In jede Richtung schreibgeschützt: Der Crawler liest nur enable.co.nz, und die MCP-Tools lesen nur den lokalen SQLite-Index. Keinerlei Schreiboperationen.
Related MCP server: Net-Syphon
Tools
search_enable_nz
Volltextsuche über enable.co.nz.
Parameter | Typ | Erforderlich | Hinweise |
| string | ja | Suchbegriffe |
| integer | nein | Standard 5, max. 20 |
| string | nein | Auf einen Abschnitt beschränken, z. B. |
Gibt passende Seiten nach Relevanz sortiert zurück, jeweils mit url, title, section und einem
hervorgehobenen Ausschnitt.
get_page
Ruft den vollständigen Text einer Seite per URL ab.
Parameter | Typ | Erforderlich |
| string | ja |
Gibt url, title, section, description, content und crawled_at zurück. Inhalte über
~15.000 Zeichen werden abgeschnitten, mit truncated: true in der Antwort.
list_sections
Keine Eingabe. Listet die Top-Level-Abschnitte der Website mit Seitenzahlen und den
crawled_at-Zeitstempel des Index – nützlich zur Orientierung vor einer Suche oder zur Prüfung,
wie aktuell die Daten sind.
Beispielabfragen
Sobald verbunden, fragen Sie Ihren MCP-Client zum Beispiel:
„Suche auf enable.co.nz nach Informationen zur Rollstuhlfinanzierung."
„Welche Abschnitte deckt der enable.co.nz-Index ab?"
„Hole den vollständigen Inhalt von https://www.enable.co.nz/services und fasse ihn zusammen."
Verbinden eines MCP-Clients
Copilot Studio
Öffnen Sie Ihren Agent → Tools → Tool hinzufügen → Neues Tool → Model Context Protocol.
Servername:
enable-nz-mcp(oder was auch immer Sie möchten – dies ist nur ein Label).Server-URL:
https://enable-nz-mcp.duckdns.org/mcpAuthentifizierung: Keine Authentifizierung (so lassen, es sei denn, der Server hat
API_KEYgesetzt; in diesem Fall wählen Sie eine API-Key/Bearer-Auth-Option und geben Sie sie an).Erstellen → Copilot Studio verbindet sich über Streamable HTTP (das einzige Transportprotokoll, das es seit der Abschaffung von SSE im August 2025 unterstützt) und listet
search_enable_nz,get_pageundlist_sectionsauf. Fügen Sie das Tool zu Ihrem Agent hinzu und testen Sie es mit einer Eingabeaufforderung wie „Suche auf enable.co.nz nach Rollstuhlfinanzierung".
VS Code Copilot
Öffnen Sie die Befehlspalette → MCP: Server hinzufügen.
Wählen Sie HTTP und geben Sie
https://enable-nz-mcp.duckdns.org/mcpein.VS Code listet
search_enable_nz,get_pageundlist_sectionsals verfügbare Tools auf, sobald die Verbindung hergestellt ist.
Claude Desktop
Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen.
URL:
https://enable-nz-mcp.duckdns.org/mcp.Claude verhandelt das Streamable-HTTP-Transportprotokoll automatisch.
Jeder andere MCP-Client
Richten Sie ihn auf https://enable-nz-mcp.duckdns.org/mcp mit dem Streamable-HTTP-Transport. Wenn
API_KEY auf dem Server gesetzt ist, senden Sie Authorization: Bearer <key>.
Lokale Entwicklung
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 .envTesten Sie den laufenden Server mit MCP Inspector:
npx @modelcontextprotocol/inspector
# connect to http://127.0.0.1:8081/mcpOder führen Sie einen manuellen Smoke-Test durch:
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"}'Führen Sie die Testsuite aus:
npm testBereitstellung
Der Server läuft auf einem bestehenden DigitalOcean-Droplet unter einem eigenen, nicht privilegierten Systembenutzer
(mcpsvc), isoliert von anderen Diensten auf derselben Maschine – mcpsvc hat kein sudo und keinen Lesezugriff
außerhalb von /opt/enable-nz-mcp. Siehe deploy/ecosystem.config.cjs für die pm2-Prozesskonfiguration und
deploy/Caddyfile.example für den Reverse-Proxy-Block.
Sowohl pm2- als auch Caddy-Konfigurationsänderungen benötigen Root-Rechte, daher kann mcpsvc nicht weiter gehen als
pm2 save auf eigene Faust – ein Administrator muss pm2 startup ausführen (um den Prozess über Neustarts hinweg
zu erhalten) und den Caddy-Site-Block installieren/neu laden. Rate Limiting wird derzeit nicht auf der Caddy-Ebene
angewendet: Es erfordert das Drittanbieter-Plugin caddy-ratelimit, das nicht in der Caddy-Build dieser Maschine
enthalten ist.
Der Workflow .github/workflows/refresh-index.yml crawlt die Website wöchentlich neu (Sonntag 02:00 UTC, oder manuell
über workflow_dispatch), prüft eine Mindestanzahl/-größe von Seiten und stellt den neuen Index über rsync + ein
atomares mv über SSH bereit. Er benötigt drei Repository-Secrets: DEPLOY_SSH_KEY, DEPLOY_HOST, DEPLOY_USER –
unter Verwendung eines dedizierten Deploy-Keypairs, das über eine command=-Direktive in authorized_keys
eingeschränkt ist, sodass es nur das rsync/mv ausführen kann, nicht eine beliebige Shell.
Nicht im Umfang von v1
Embeddings / semantische Suche (Stichwortsuche über SQLite FTS5 ist für eine Marketing-Website ausreichend)
Headless-Browser-Rendering
Multi-Site-Unterstützung
Schreiboperationen jeglicher Art
Benutzer-Authentifizierung oder Mandantenisolierung
This server cannot be deployed
Maintenance
Related MCP Connectors
GETS NZ MCP — New Zealand Government Electronic Tenders Service (keyless).
Agent-driven search: build, import, tune, search, and score result quality — all over MCP.
Turn any public website into an MCP server for agents to search, read and navigate.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables querying and searching Ben Milne's personal site content, including essays, API endpoints, and PDF books, via MCP tools.-
- FlicenseAqualityBmaintenanceEnables web search and anonymous public-page retrieval through MCP, with provider-neutral selection, bounded plain-text results, and built-in auditing.2-
- FlicenseNot gradedqualityBmaintenanceEnables local full-text and semantic search over saved content, providing search and retrieval capabilities via MCP for AI assistants.-
- AlicenseNot gradedqualityBmaintenanceEnables keyless local web search and page fetching through MCP, with domain-filtered queries, extractable original-text evidence, hashes, and snapshot cursors for verifiable, traceable results.26 npmMIT