Сервер Elido MCP - це невеликий процес 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 - це відкритий стандарт, що дає AI-клієнту викликати інструменти, які живуть поза моделлю. Клієнт запускає сервер або підключається до нього, просить список інструментів і надсилає виклики інструментів як повідомлення 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». Обробників resources, prompts чи 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 несуть роль робочого простору, а не scope для окремих інструментів. Ключ viewer - варіант лише для читання: він може перелічувати й читати аналітику, а API відмовляє create_link. Задайте термін дії, якщо ключ для пробного періоду. Скопіюйте ключ, коли його покажуть, і тримайте поза системою контролю версій.
Налаштування Claude Desktop
Claude Desktop читає claude_desktop_config.json. Розташування конфігурації та вкладку налаштувань Developer описано в документації 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 зі slug spring і тегом spring. Він викликає create_link з destination_url, slug, title і tags. Оскільки domain_id не передано, сервер спершу отримує GET /v1/workspaces/{id}/domains і використовує перший повернений. Якщо у вашому робочому просторі кілька доменів, передайте domain_id самі. API відповідає записом посилання, що містить short_url, і Claude вставляє його в чернетку. Якщо slug зайнятий, 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 підсумувати значення. Лише кліки: розбивки за країною, пристроєм чи реферером цей інструмент не повертає.
Безпека та ліміти
Ролі, а не scope. Обирайте найнижчу роль, що виконує роботу. Viewer для звітних агентів, editor для тих, що створюють посилання, admin лише з конкретної причини.
Що залишає вашу машину. Сервер надсилає запити на вашу базу API Elido і більше нікуди. Те, що ваш AI-клієнт надсилає своєму провайдеру, регулюється політикою цього провайдера.
Слід аудиту. Створення ключа породжує подію аудиту 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 Sheet.
Віддалений MCP. Це хостед-ендпоінт з OAuth, щоб конектор Claude міг дістатися до Elido без локального процесу. Він запланований, але не збудований, а каталог інтеграцій у дашборді перелічує лише локальний сервер. Поки що використовуйте його.
Дрейф протоколу. Сервер оголошує 2024-11-05, тоді як поточна редакція специфікації - 2026-07-28. Ми не тестували його з кожним релізом клієнтів, тож перевіряйте стан сервера у своєму клієнті після оновлення.
Куди це піде далі
Прогалини вище є в беклозі: опублікувати пакет, виправити generate_qr, додати Streamable HTTP і віддалену кінцеву точку, додати більше інструментів (оновлення, видалення, географічні розбивки) та атрибуцію аудиту за ключем. Про інший шлях до тієї самої ідеї агента див. посібник із Gemini і посібник із ChatGPT; про гігієну ключів - дозволи ключів API для інструментів посилань.
Читайте також у блозі
-
Дозволи ключів API для інструментів посилань - ролі, найменші привілеї та ротація.
-
Масовий імпорт коротких посилань з Google Sheet - правильний шлях для сотень посилань.
-
Скорочувач URL у Gemini - де працюють виклики інструментів у Gemini.
-
Скорочувач URL у ChatGPT - що працює, а що лише імітує.
-
Короткі посилання як Terraform - керування посиланнями в стилі інфраструктури.
-
Ліміти запитів та ідемпотентність API скорочувача URL - як ліміти поводяться для клієнтів.
-
Marius
Поширені запитання
Чи є сервер Elido MCP на npm?
Ще ні. Пакета немає на npm (`npm view @elido/mcp-server` повертає 404 станом на 2026-11-11), тож `npx -y @elido/mcp-server` не спрацьовує. Публічний реліз незабаром. До того сервер запускається лише з локальної збірки пакета (packages/mcp-server у нашому приватному монорепозиторії), на скомпільований файл dist/index.js якої спрямовується клієнт MCP.
Які інструменти надає сервер Elido MCP?
П'ять: create_link, list_links, query_analytics, generate_qr та list_workspaces. Перші чотири потребують робочого простору, який береться з ELIDO_WORKSPACE_ID або з того, що ключ бачить рівно один робочий простір. generate_qr звертається до маршруту, якого ми не знайшли в api-core, тож вважайте його ненадійним, доки не виправлять.
Як зробити ключ MCP лише для читання?
Створіть ключ API з роллю viewer на панелі. Ключі несуть роль робочого простору (viewer, editor або admin, типово editor), а не scope для окремих інструментів. Ключ viewer може переглядати посилання й читати аналітику, а create_link повертається з API як помилка дозволу.
Чи є в Elido віддалена URL MCP для конекторів 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 посилань на місяць.