Skip to main content
Glama
liam-edmunds

enable-nz-mcp

by liam-edmunds

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.

Параметр

Тип

Обязательный

Примечания

query

string

да

Поисковые запросы

limit

integer

нет

По умолчанию 5, максимум 20

section

string

нет

Ограничение одним разделом, например services

Возвращает соответствующие страницы, отсортированные по релевантности, каждая с url, title, section и выделенным фрагментом.

get_page

Получение полного текста одной страницы по URL.

Параметр

Тип

Обязательный

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

  1. Откройте вашего агента → ИнструментыДобавить инструментНовый инструментModel Context Protocol.

  2. Имя сервера: enable-nz-mcp (или что угодно — это просто метка).

  3. URL сервера: https://enable-nz-mcp.duckdns.org/mcp

  4. Аутентификация: Без аутентификации (оставьте как есть, если на сервере не задан API_KEY, в этом случае выберите вариант с API-ключом/Bearer-аутентификацией и укажите его).

  5. Создайте → Copilot Studio подключится через Streamable HTTP (единственный поддерживаемый транспорт с тех пор, как в августе 2025 года был убран SSE) и перечислит search_enable_nz, get_page и list_sections. Добавьте инструмент вашему агенту и протестируйте запросом вроде "найди на enable.co.nz финансирование инвалидных колясок".

VS Code Copilot

  1. Откройте палитру команд → MCP: Add Server.

  2. Выберите HTTP и введите https://enable-nz-mcp.duckdns.org/mcp.

  3. VS Code перечислит search_enable_nz, get_page и list_sections как доступные инструменты после подключения.

Claude Desktop

  1. Настройки → КоннекторыДобавить пользовательский коннектор.

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

  3. 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-браузер

  • Поддержка нескольких сайтов

  • Операции записи любого рода

  • Аутентификация пользователей или изоляция по арендаторам

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