MCP-сервер Elido - это небольшой процесс Node, который позволяет Claude Desktop, Cursor или Claude Code создавать короткие ссылки, перечислять их и читать временные ряды кликов прямо из чата. Он лежит в монорепозитории в packages/mcp-server, говорит по MCP через stdio и обращается к тому же REST API, что и всё остальное.
Сразу одно исправление, потому что прежняя версия этого руководства ошибалась: пакета в npm нет, и он пока не публичный. На 2026-11-11 npm view @elido/mcp-server возвращает 404; публичный релиз скоро. До тех пор запускать нужно локальную сборку. Всё ниже проверено по коду в packages/mcp-server и services/api-core.
Что такое MCP
Model Context Protocol - открытый стандарт, позволяющий ИИ-клиенту вызывать инструменты, находящиеся вне модели. Клиент запускает сервер или подключается к нему, запрашивает список инструментов и отправляет вызовы инструментов как сообщения JSON-RPC. Сервер выполняет работу и возвращает текст, который читает модель. Модель никогда не держит ваш API-ключ; его держит сервер.
Спецификация определяет два транспорта: stdio для локальных процессов и Streamable HTTP для удалённых (спецификация MCP, последняя редакция 2026-07-28, дата обращения 2026-10-25). Сервер Elido реализует только stdio.
Что делает сервер
Он написан вручную, без официального @modelcontextprotocol/sdk, чтобы не иметь зависимостей. В src/index.ts он отвечает на четыре вещи: initialize (сообщая версию протокола 2024-11-05), tools/list, tools/call и уведомление notifications/initialized. На всё остальное возвращается ошибка "method not found". Обработчиков ресурсов, промптов и ping нет.
Каждый вызов инструмента превращается в аутентифицированный REST-запрос к ELIDO_API_BASE (по умолчанию https://api.elido.app) с Authorization: Bearer <key> и заголовком User-Agent: elido-mcp-server/0.1.0. Неудачные вызовы возвращаются ошибкой, включающей HTTP-статус и первые 400 символов ответа.
| Инструмент | Какой запрос отправляет | Состояние |
|---|---|---|
create_link | POST /v1/workspaces/{id}/links | Работает; берёт первый домен, если домен не указан |
list_links | GET /v1/workspaces/{id}/links?limit&offset | Работает; limit от 1 до 100 |
query_analytics | GET /v1/workspaces/{id}/analytics/timeseries | Работает; возвращает {"items":[{"ts","count"}]} |
generate_qr | POST /v1/workspaces/{id}/qr | Подходящий маршрут в api-core не найден |
list_workspaces | GET /v1/workspaces | Работает; перечисляет пространства, где состоит вызывающий |
О generate_qr: api-core отдаёт публичный POST /v1/qr/generate и дизайн для отдельной ссылки по GET /v1/workspaces/{id}/links/{link_id}/qr, но по пути, который вызывает инструмент, ничего нет. Пока это не согласовано, я бы не строил на нём рабочий процесс. Это в бэклоге.
Сборка и получение API-ключа
Монорепозиторий закрытый, поэтому шаги ниже применимы, когда у вас есть исходники пакета (публичный релиз скоро). Соберите пакет:
pnpm install
pnpm --filter @elido/mcp-server build
Это создаст packages/mcp-server/dist/index.js. Нужен Node 20 или новее (engines в его package.json).
Для ключа откройте Dashboard, затем API keys (/dashboard/api-keys), назовите ключ по имени агента и выберите роль. Форма предлагает viewer, editor и admin, по умолчанию editor. Ключи Elido несут роль рабочего пространства, а не права на отдельные инструменты. Ключ viewer - вариант только для чтения: он может перечислять и читать аналитику, а create_link API отклонит. Задайте срок действия, если ключ пробный. Скопируйте ключ, когда он показан, и не кладите его в систему контроля версий.
Настройка Claude Desktop
Claude Desktop читает claude_desktop_config.json. Расположение конфигурации и вкладка Developer settings описаны в документации MCP (подключение локальных серверов, дата обращения 2026-10-25). В macOS файл лежит в ~/Library/Application Support/Claude/claude_desktop_config.json, в Windows - в %APPDATA%\Claude\claude_desktop_config.json.
{
"mcpServers": {
"elido": {
"command": "node",
"args": [
"/absolute/path/to/url-shortener/packages/mcp-server/dist/index.js"
],
"env": {
"ELIDO_API_KEY": "elido_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
Используйте абсолютный путь. ELIDO_WORKSPACE_ID необязателен, только когда ключ видит ровно одно рабочее пространство; тогда сервер один раз вызывает GET /v1/workspaces и кэширует id. При двух и более пространствах он бросает ошибку с просьбой задать переменную, так что задайте её сразу.
Перезапустите Claude Desktop после сохранения. Если сервер не появился, сначала запустите ту же команду в терминале. Отсутствие ключа процесс не останавливает: он печатает предупреждение в stderr, а каждый вызов инструмента потом падает.
Настройка Cursor и Claude Code
Cursor читает ту же структуру mcpServers из .cursor/mcp.json в проекте или из ~/.cursor/mcp.json для всех проектов (документация Cursor по MCP, дата обращения 2026-10-25). Вставьте блок выше, добавьте файл в .gitignore, потому что в нём действующий ключ, и проверьте сервер в настройках MCP в Cursor.
Claude Code добавляет stdio-сервер из командной строки (документация Claude Code по MCP, дата обращения 2026-10-25):
claude mcp add --env ELIDO_API_KEY=elido_your_key_here --env ELIDO_WORKSPACE_ID=42 \
--transport stdio elido -- node /absolute/path/to/packages/mcp-server/dist/index.js
Ключи в файле конфигурации лежат открытым текстом. На общей машине давайте каждому свой ключ, чтобы журнал аудита имел смысл.
Две сессии с реальными формами запросов
Это иллюстративные разговоры, а не записи, и числа выдуманы. Аргументы инструментов и поля результатов соответствуют коду.
Сократить ссылку кампании. Вы просите Claude сократить https://shop.example.com/spring со слагом spring и тегом spring. Он вызывает create_link с destination_url, slug, title и tags. Поскольку domain_id не передан, сервер сначала запрашивает GET /v1/workspaces/{id}/domains и берёт первый возвращённый домен. Если в вашем рабочем пространстве несколько доменов, передайте domain_id сами. API отвечает записью ссылки, включая short_url, и Claude вставляет её в черновик. Если слаг занят, API возвращает 409 "slug already exists for this domain", и Claude может выбрать другой.
Прочитать клики прошлой недели. Вы просите дневные клики по одной ссылке по берлинскому времени. Claude вызывает query_analytics с link_id, from, to, interval: "day" и tz: "Europe/Berlin". Даты в формате YYYY-MM-DD, а API отклоняет диапазон, где from не раньше to, поэтому передавайте в to день после вашего последнего дня. Если их опустить, диапазон - последние 30 дней. Результат - {"items": [{"ts": "...", "count": 312}, ...]}. Поля total нет, поэтому попросите Claude просуммировать счётчики. Только клики: разбивки по стране, устройству или источнику через этот инструмент не приходят.
Безопасность и лимиты
Роли, а не права. Выбирайте минимальную роль, которая справляется с задачей. Viewer для агентов отчётности, editor для тех, что создают ссылки, admin только по конкретной причине.
Что покидает вашу машину. Сервер отправляет запросы на вашу базу API Elido и больше никуда. То, что ваш ИИ-клиент отправляет своему провайдеру, регулируется политикой этого провайдера.
Журнал аудита. Создание ключа порождает событие аудита api_key.created, а создание ссылки - link.created. Я не проверял, как событие относится к конкретному ключу, поэтому не полагайтесь на журнал аудита, чтобы отличить двух агентов. Дайте каждому свой ключ и следите за списком ключей.
Лимиты запросов. Вызовы учитываются в лимите рабочего пространства: 10 запросов в секунду на Free, 30 на Pro и 100 на Business, с пиковыми допусками 20, 60 и 200 (services/api-core/internal/httpserver/server.go). Агент, создающий сотни ссылок, должен использовать POST /v1/workspaces/{id}/links/bulk через API, как в материале массовый импорт из Google Sheets.
Удалённый MCP. Это хостируемый эндпоинт с OAuth, чтобы коннектор Claude мог обращаться к Elido без локального процесса. Он запланирован, но не построен, а каталог интеграций в дашборде перечисляет только локальный сервер. Пока используйте его.
Расхождение версий протокола. Сервер объявляет 2024-11-05, тогда как текущая редакция спецификации - 2026-07-28. Мы не проверяли его на каждом релизе клиентов, поэтому после обновления проверяйте статус сервера в своём клиенте.
Что дальше
Перечисленные выше пробелы в бэклоге: опубликовать пакет, исправить generate_qr, добавить Streamable HTTP и удалённый эндпоинт, добавить больше инструментов (обновление, удаление, географические разбивки) и атрибуцию аудита по ключам. Другой путь к той же идее агента смотрите в руководстве по Gemini и руководстве по ChatGPT; о гигиене ключей - права API-ключей для инструментов ссылок.
Связанные материалы в блоге
-
Права API-ключей для инструментов ссылок - роли, минимальные привилегии и ротация.
-
Массовый импорт коротких ссылок из Google Sheets - правильный путь для сотен ссылок.
-
Сокращатель ссылок для Gemini - где вызовы инструментов работают в Gemini.
-
Сокращатель ссылок для ChatGPT - что работает, а что только имитирует.
-
Короткие ссылки как Terraform - управление ссылками в стиле инфраструктуры.
-
Лимиты API сокращателя ссылок и идемпотентность - как лимиты ведут себя для клиентов.
-
Marius
Частые вопросы
Есть ли MCP-сервер Elido в npm?
Пока нет. Пакета нет в npm (`npm view @elido/mcp-server` возвращает 404 на 2026-11-11), поэтому `npx -y @elido/mcp-server` не работает. Публичный релиз скоро. До тех пор сервер запускается только из локальной сборки пакета (packages/mcp-server в нашем закрытом монорепозитории), на скомпилированный файл dist/index.js которой указывает MCP-клиент.
Какие инструменты открывает MCP-сервер Elido?
Пять: create_link, list_links, query_analytics, generate_qr и list_workspaces. Первым четырём нужно рабочее пространство, которое берётся из ELIDO_WORKSPACE_ID или из того, что ключ видит ровно одно пространство. generate_qr обращается к маршруту, которого мы в api-core не нашли, поэтому считайте его ненадёжным, пока его не исправят.
Как сделать MCP-ключ только для чтения?
Создайте API-ключ с ролью viewer в дашборде. Ключи несут роль рабочего пространства (viewer, editor или admin, по умолчанию editor), а не права на отдельные инструменты. Ключ viewer может перечислять ссылки и читать аналитику, а create_link вернётся ошибкой прав доступа от API.
Есть ли у Elido удалённый MCP URL для коннекторов Claude?
Пока нет. Хостируемого MCP-эндпоинта с OAuth нет, удалённый сервер только планируется. Используйте локальный stdio-сервер, который предоставляет пять инструментов, перечисленных выше.
Какой транспорт MCP и версию протокола использует сервер?
Только stdio, с построчным JSON-RPC 2.0. На initialize он отвечает версией протокола 2024-11-05 и обрабатывает tools/list и tools/call. Актуальная спецификация MCP определяет также транспорт Streamable HTTP, который этот сервер не реализует.
Учитываются ли вызовы инструментов в моём лимите запросов?
Да. Сервер - обычный клиент API, поэтому действует лимит на рабочее пространство: 10 запросов в секунду на Free, 30 на Pro и 100 на Business, с пиками 20, 60 и 200. Для сотен ссылок используйте эндпоинт массового создания вместо вызова инструмента на каждую.
Попробуйте Elido
Вставьте URL - получите короткую ссылку
Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.
Без регистрации. Зарегистрируйтесь бесплатно и получите 50 ссылок в месяц.