6 мин чтенияВозможности

MCP-сервер Elido для Claude Desktop, Cursor и Claude Code

Запустите MCP-сервер Elido из монорепозитория, подключите к Claude Desktop, Cursor и Claude Code и узнайте.

Marius Voß
DevRel · edge infra

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.

Схема архитектуры: Claude Desktop и Cursor подключаются по транспорту stdio JSON-RPC к локальному MCP-серверу Elido, который делает аутентифицированные запросы Bearer к REST API Elido, причём API-ключ остаётся внутри сервера и модель его не видит Страница интеграций Elido со списком Claude, ChatGPT, Cursor, Claude Code, Gemini и других коннекторов с руководствами по настройке

Что делает сервер

Он написан вручную, без официального @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_linkPOST /v1/workspaces/{id}/linksРаботает; берёт первый домен, если домен не указан
list_linksGET /v1/workspaces/{id}/links?limit&offsetРаботает; limit от 1 до 100
query_analyticsGET /v1/workspaces/{id}/analytics/timeseriesРаботает; возвращает {"items":[{"ts","count"}]}
generate_qrPOST /v1/workspaces/{id}/qrПодходящий маршрут в api-core не найден
list_workspacesGET /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 может выбрать другой.

Цикл вызова create_link: LLM-агент запрашивает create_link с URL, слагом и тегами, инструмент MCP переводит вызов и определяет рабочее пространство, api-core обрабатывает POST и записывает ссылку, а запись короткой ссылки возвращается, и агент вставляет короткий URL в чат

Прочитать клики прошлой недели. Вы просите дневные клики по одной ссылке по берлинскому времени. 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-ключей для инструментов ссылок.

Связанные материалы в блоге

Частые вопросы

Есть ли 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 ссылок в месяц.

Попробуйте Elido

URL-сокращатель с хостингом в ЕС: собственные домены, глубокая аналитика, открытый API. Бесплатный тариф - без банковской карты.

Теги
elido mcp server
model context protocol
claude desktop mcp
cursor mcp
claude code mcp
url shortener api

Читать дальше