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Сервер никогда не кэширует индекс в памяти — каждый вызов инструмента открывает новое
readonly-подключение к index.db на диске. Еженедельный обход пересобирает индекс и заменяет его
одним атомарным mv, поэтому индекс обновляется без простоев и без перезапуска.
Readonly во всех направлениях: краулер только читает enable.co.nz, а MCP-инструменты только читают локальный SQLite-индекс. Никаких операций записи.
Related MCP server: MCP Knowledge Base Server
Инструменты
search_enable_nz
Полнотекстовый поиск по enable.co.nz.
Параметр | Тип | Обязательный | Примечания |
| string | да | Поисковые запросы |
| integer | нет | По умолчанию 5, максимум 20 |
| string | нет | Ограничение одним разделом, например |
Возвращает соответствующие страницы, отсортированные по релевантности, каждая с url, title, section и
выделенным фрагментом.
get_page
Получение полного текста одной страницы по URL.
Параметр | Тип | Обязательный |
| 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-ключом/Bearer-аутентификацией и укажите его).Создайте → Copilot Studio подключится через Streamable HTTP (единственный поддерживаемый транспорт с тех пор, как в августе 2025 года был убран 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-клиент
Укажите https://enable-nz-mcp.duckdns.org/mcp с транспортом Streamable HTTP. Если
на сервере задан 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. См. deploy/ecosystem.config.cjs для
конфигурации процесса pm2 и 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. Ему нужны три секрета репозитория:
DEPLOY_SSH_KEY, DEPLOY_HOST, DEPLOY_USER — с использованием выделенной пары ключей развёртывания,
ограниченной директивой command= в authorized_keys, чтобы она могла выполнять только rsync/mv,
а не произвольную оболочку.
Вне рамок v1
Эмбеддинги / семантический поиск (ключевой поиск через SQLite FTS5 достаточен для одного маркетингового сайта)
Рендеринг через headless-браузер
Поддержка нескольких сайтов
Операции записи любого рода
Аутентификация пользователей или изоляция по арендаторам
This server cannot be installed
Maintenance
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
- AlicenseCqualityFmaintenanceEnables 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.11MIT
- FlicenseCqualityCmaintenanceEnables semantic search over knowledge-base articles and listing of sample support tickets using MCP tools.4
- AlicenseNot gradedqualityCmaintenanceEnables searching and retrieving records from the DigitalNZ collection, with tools for keyword search and fetching full item details.9MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to search, read, and query saved bookmark content via a read-only MCP interface, with full-text and optional semantic search.4MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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