enable-nz-mcp
enable-nz-mcp
公開・ホスト型のMCPサーバーで、enable.co.nzのコンテンツを検索可能なツールとして公開し、Copilot Studio、VS Code Copilot、Claude Desktop、または任意のMCPクライアントから接続できます。
これは個人のポートフォリオプロジェクトです。Enable New Zealandや雇用主とは一切関係ありません。公開ウェブサイトの公開コンテンツのみを読み取ります。
サーバー:
https://enable-nz-mcp.duckdns.org/mcp(Streamable HTTP)ヘルスチェック:
https://enable-nz-mcp.duckdns.org/health
アーキテクチャ
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サーバーはインデックスをメモリにキャッシュしません。すべてのツール呼び出しは、ディスク上のindex.dbに対して新しい読み取り専用接続を開きます。毎週のクロールがインデックスを再構築し、単一のアトミックなmvで入れ替えるため、ダウンタイムや再起動なしでインデックスが更新されます。
すべての方向で読み取り専用です。クローラーはenable.co.nzのみを読み取り、MCPツールはローカルのSQLiteインデックスのみを読み取ります。いかなる書き込み操作も行いません。
Related MCP server: Net-Syphon
ツール
search_enable_nz
enable.co.nz全体の全文検索。
パラメータ | 型 | 必須 | 備考 |
| string | はい | 検索語 |
| integer | いいえ | デフォルト5、最大20 |
| string | いいえ | 1つのセクションに制限(例: |
関連性でランク付けされた一致するページを返します。各ページにはurl、title、section、およびハイライトされたスニペットが含まれます。
get_page
URLで1ページの全文を取得します。
パラメータ | 型 | 必須 |
| string | はい |
url、title、section、description、content、crawled_atを返します。約15,000文字を超えるコンテンツは切り詰められ、レスポンスにtruncated: trueが含まれます。
list_sections
入力はありません。サイトのトップレベルセクションとページ数を一覧表示し、インデックスのcrawled_atタイムスタンプも表示します。検索前の方向付けや、データの鮮度の確認に役立ちます。
クエリ例
接続後、MCPクライアントに次のような質問ができます:
enable.co.nzで車椅子の資金調達情報を検索してください。
enable.co.nzのインデックスはどのセクションをカバーしていますか?
https://www.enable.co.nz/services の全文を取得して要約してください。
MCPクライアントの接続
Copilot Studio
エージェントを開く → ツール → ツールを追加 → 新しいツール → Model Context Protocol。
サーバー名:
enable-nz-mcp(または任意の名前 — これは単なるラベルです)。サーバーURL:
https://enable-nz-mcp.duckdns.org/mcp認証: 認証なし(サーバーに
API_KEYが設定されていない限りそのままにします。設定されている場合は、APIキー/ベアラー認証オプションを選択して提供してください)。作成 → Copilot StudioはStreamable HTTP(2025年8月にSSEを廃止して以来サポートしている唯一のトランスポート)で接続し、
search_enable_nz、get_page、list_sectionsを一覧表示します。ツールをエージェントに追加し、「enable.co.nzで車椅子の資金調達を検索」のようなプロンプトでテストします。
VS Code Copilot
コマンドパレットを開く → MCP: Add Server。
HTTPを選択し、
https://enable-nz-mcp.duckdns.org/mcpを入力します。接続すると、VS Codeは
search_enable_nz、get_page、list_sectionsを利用可能なツールとして一覧表示します。
Claude Desktop
設定 → コネクタ → カスタムコネクタを追加。
URL:
https://enable-nz-mcp.duckdns.org/mcp。ClaudeはStreamable HTTPトランスポートを自動的にネゴシエートします。
その他のMCPクライアント
Streamable HTTPトランスポートを使用して、https://enable-nz-mcp.duckdns.org/mcpを指定します。サーバーにAPI_KEYが設定されている場合は、Authorization: Bearer <key>を送信します。
ローカル開発
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実行中のサーバーをMCP Inspectorでテストします:
npx @modelcontextprotocol/inspector
# connect to http://127.0.0.1:8081/mcpまたは手動でスモークテスト:
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"}'テストスイートを実行:
npm testデプロイ
サーバーは既存のDigitalOceanドロップレット上で、専用の非特権システムユーザー(mcpsvc)として実行され、同じボックス上の他のサービスから分離されています。mcpsvcにはsudoがなく、/opt/enable-nz-mcp以外への読み取りアクセスもありません。pm2プロセス設定についてはdeploy/ecosystem.config.cjsを、リバースプロキシブロックについてはdeploy/Caddyfile.exampleを参照してください。
pm2とCaddyの設定変更にはどちらもroot権限が必要なため、mcpsvcは単独ではpm2 saveまでしか実行できません。管理者がpm2 startup(再起動後もプロセスを維持するため)を実行し、Caddyサイトブロックをインストール/リロードする必要があります。レート制限は現在Caddyレイヤーでは適用されていません。サードパーティのcaddy-ratelimitプラグインが必要ですが、このボックスのCaddyビルドには含まれていないためです。
.github/workflows/refresh-index.ymlワークフローは、サイトを毎週(日曜日02:00 UTC、またはworkflow_dispatchで手動)再クロールし、最小ページ数/サイズでゲートし、rsync + アトミックなmvをSSH経由で使用して新しいインデックスをデプロイします。3つのリポジトリシークレットが必要です:DEPLOY_SSH_KEY、DEPLOY_HOST、DEPLOY_USER。authorized_keysのcommand=ディレクティブで制限された専用のデプロイキーペアを使用するため、任意のシェルではなくrsync/mvのみを実行できます。
v1の対象外
埋め込み / セマンティック検索(1つのマーケティングサイトにはSQLite FTS5によるキーワード検索で十分)
ヘッドレスブラウザレンダリング
マルチサイトサポート
いかなる書き込み操作
ユーザーレベルの認証またはテナントごとの分離
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