Если вы провели хотя бы немного времени с Claude Desktop или Cursor за последние полгода, вы наверняка заметили панель инструментов - список именованных действий, которые агент может вызывать во время разговора. Эти инструменты поступают от MCP-сервера. В этом посте объясняется, что это значит, почему сокращатель URL идеально подходит для этого и как подключить @elido/mcp-server к обоим клиентам, чтобы агент мог сокращать ссылки, создавать QR-коды и получать данные о кликах, не выходя из редактора.
Что такое MCP#
Model Context Protocol - это компактный открытый стандарт, который позволяет AI-клиенту (Claude Desktop, Cursor или любому совместимому фреймворку агентов) обнаруживать и вызывать внешние инструменты через унифицированный интерфейс JSON-RPC. Процесс сервера запускается локально на вашей машине (или на хосте, который вы контролируете), предоставляет список типизированных инструментов и взаимодействует с клиентом через стандартный ввод/вывод (stdin/stdout). Клиент отправляет запрос на вызов инструмента, сервер выполняет работу, а результат возвращается в разговор в качестве контекста. Модель никогда не видит ваш API-ключ; его видит сервер. Весь протокол сообщений занимает несколько килобайт; на стороне клиента не нужно устанавливать никаких SDK, а сервер может быть написан на любом языке, способном читать stdin и писать в stdout.
Вкратце: MCP - это стандартизированный способ для AI-клиента вызывать код, который вы контролируете. Агент описывает намерение, инструмент выполняет работу, агент учитывает результат.
Почему сокращатель URL здесь уместен#
Точка трения при работе с короткими ссылками в любом контентном процессе всегда одна и та же: вы находитесь в процессе составления письма или брифа кампании, вам нужна брендированная короткая ссылка для CTA, и вам приходится переключаться на панель управления, создавать ссылку, копировать её, возвращаться назад и вставлять. Это переключение контекста занимает тридцать секунд, но, что более важно, оно прерывает поток написания текста.
MCP устраняет переключение контекста. Когда @elido/mcp-server подключен, агент может вызвать create_link прямо в чате - короткая ссылка появляется в разговоре, и вы продолжаете работу. То же самое применимо и к менее очевидным случаям:
- Составление анонса запуска продукта, для которого нужны пять UTM-ссылок для разных каналов: агент может вызвать
create_linkпять раз подряд с разными тегами, а затем вставить все пять ссылок в текст. - Запрос агенту на создание QR-кода для печатного материала:
generate_qrвозвращает SVG-артефакт, который агент отображает в контексте. - Просмотр эффективности кампании за прошлую неделю:
query_analyticsизвлекает временной ряд кликов для любой ссылки или всего рабочего пространства с коррекцией часового пояса, без входа в панель управления.
Ничто из этого не требует от модели понимания вашего API. Требуется, чтобы @elido/mcp-server транслировал типизированный вызов инструмента в аутентифицированный REST-запрос и возвращал результат.
Сервер Elido MCP работает по этой модели напрямую. Это локальный Node-процесс, который находится между AI-клиентом и Elido REST API. Когда агент вызывает create_link, сервер переводит этот вызов в аутентифицированный запрос POST /v1/workspaces/{id}/links, обрабатывает разрешение рабочего пространства и возвращает результат в виде структурированного текста, который агент может прочитать. API-ключ никогда не покидает процесс сервера; клиент видит только результат работы инструмента.
Что сервер предлагает сегодня#
@elido/mcp-server опубликован как @elido/mcp-server в npm (Apache-2.0, версия 0.1.x). Исходный код находится в packages/mcp-server/ в монорепозитории Elido. Он использует транспорт MCP stdio - JSON-RPC 2.0 с разделением строк на stdin/stdout - и не имеет зависимостей во время выполнения, кроме Node 20+. Он не использует официальный пакет @modelcontextprotocol/sdk; протокол реализован вручную, чтобы пакет оставался небольшим и его было легко проверить перед передачей ему API-ключа.
Пять инструментов, доступных в версии 0.1.x:
| Инструмент | Что он делает |
|---|---|
create_link | Сокращает URL с опциональным слагом, доменом, заголовком и тегами. Возвращает полную запись ссылки, включая короткий URL. |
list_links | Выводит список последних ссылок в рабочем пространстве с пагинацией. |
query_analytics | Временной ряд количества кликов для рабочего пространства или одной ссылки, сгруппированный по часам или дням в любом часовом поясе IANA. |
generate_qr | Генерирует QR-код (SVG или PNG) для существующей ссылки. |
list_workspaces | Перечисляет рабочие пространства, доступные для данного API-ключа. |
Операции администрирования рабочего пространства - приглашение участников, ротация API-ключей, настройка кастомных доменов, управление оплатой - намеренно не включены в интерфейс MCP. Они остаются в панели управления. Набор инструментов ограничен вещами, которые действительно нужны агенту при работе с контентом или кампаниями прямо в процессе.
Получение API-ключа#
Перед настройкой любого из клиентов вам понадобится API-ключ, ограниченный рабочим пространством, в котором должен работать агент.
- Откройте Settings → API Keys в панели управления Elido.
- Нажмите New key, дайте ему имя, идентифицирующее агента (например,
claude-desktop-mcp), и выберите области видимости Link read/write + Analytics read. Не предоставляйте права администратора рабочего пространства, если у вас нет для этого веской причины. - Скопируйте ключ - он показывается один раз. Вам также понадобится числовой ID рабочего пространства, который виден в Settings → Workspace → General.
Держите ключ подальше от систем контроля версий. Файлы конфигурации MCP, описанные ниже, находятся в вашем домашнем каталоге или по локальному пути проекта; не фиксируйте ни один из них в общем репозитории.
Подробнее о областях видимости API-ключей и журнале аудита, в котором отображается каждый вызов инструмента, читайте в документации по API-ключам.
Настройка Claude Desktop#
Claude Desktop читает список своих MCP-серверов из JSON-файла по адресу:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Если файл не существует, создайте его. Добавьте блок сервера elido внутри mcpServers:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": {
"ELIDO_API_KEY": "elido_pk_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
Замените elido_pk_your_key_here вашим реальным ключом, а 42 - ID вашего рабочего пространства.
ELIDO_WORKSPACE_ID необязателен, если у ключа есть доступ ровно к одному рабочему пространству - сервер определит его автоматически. Устанавливайте его явно, если ключ видит более одного рабочего пространства; без этого серверу придется делать дополнительный запрос при каждом вызове инструмента, требующем рабочего пространства, и поведение станет непредсказуемым, если доступ позже расширится до второго пространства.
После сохранения файла закройте и снова запустите Claude Desktop. Инструменты Elido появятся в панели инструментов. Если они не появились, проверьте консоль разработчика Claude Desktop (Help → Show developer tools) на наличие вывода stderr из процесса сервера - наиболее распространенной причиной является опечатка в ключе или путь command, который не разрешается.
Если вы предпочитаете зафиксировать конкретную версию пакета, а не загружать последнюю через npx, сначала установите его глобально:
npm install -g @elido/[email protected]
Затем замените пару command / args:
{
"command": "elido-mcp-server",
"args": []
}
Настройка Cursor#
Cursor поддерживает локальную конфигурацию MCP проекта через файл .cursor/mcp.json в корне рабочего пространства. Формат идентичен блоку mcpServers в Claude Desktop:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": {
"ELIDO_API_KEY": "elido_pk_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
Создайте .cursor/mcp.json в корне проекта (добавьте его в .gitignore, если репозиторий общий - файл содержит действующий API-ключ). Откройте Cursor Settings → Features → MCP, убедитесь, что сервер есть в списке и горит зеленый индикатор, затем перезапустите панель агента. Инструменты Elido появятся в списке инструментов Composer.
Вы также можете настроить глобальную конфигурацию Cursor MCP по адресу ~/.cursor/mcp.json, если хотите, чтобы инструменты были доступны во всех проектах без файлов конфигурации для каждого проекта. Правила приоритета следуют той же схеме, что и в Claude Desktop.
Пример сессии: составление письма кампании и сокращение CTA#
Вот как выглядит реальное взаимодействие после подключения сервера. Стенограмма агента сокращена, но отражает реальную форму вызова инструмента.
Пользователь: Напиши черновик короткого письма для нашей весенней распродажи. CTA должен вести на https://shop.example.com/spring-2026 - сократи его с тегом spring-2026 и используй слаг spring, если он свободен.
Claude: Сначала я сокращу URL, а затем составлю письмо на основе результата.
[Вызов инструмента: create_link]
{
"destination_url": "https://shop.example.com/spring-2026",
"slug": "spring",
"title": "Spring 2026 sale CTA",
"tags": ["spring-2026"]
}
[Результат инструмента]
{
"id": 1847,
"short_url": "https://s.elido.me/spring",
"destination_url": "https://shop.example.com/spring-2026",
"slug": "spring",
"tags": ["spring-2026"],
"created_at": "2026-05-11T09:14:22Z"
}
Claude: Короткая ссылка: https://s.elido.me/spring. Вот черновик письма:
Тема: Весенняя распродажа - скидки до 40% только на этой неделе
Привет, [Имя],
Наша весенняя распродажа началась. Новинки, финальные скидки и кое-что, что мы приберегли для особого случая.
Перейти в магазин → https://s.elido.me/spring
Заканчивается в воскресенье. Код не требуется.
Агент вызвал create_link с параметрами из вашего запроса, получил обратно каноническую запись ссылки и использовал поле short_url в черновике. Если бы слаг spring был занят, API вернул бы 409, и агент попробовал бы альтернативу или вывел бы конфликт на ваше рассмотрение.
Обратите внимание, что domain_id не был передан в вызове инструмента. Сервер определяет его автоматически: если domain_id не указан, он запрашивает список доменов рабочего пространства и выбирает первый подтвержденный домен. Для рабочих пространств на бесплатном тарифе это f.elido.me; для платных - s.elido.me или кастомный домен, если он настроен. Если вам нужен конкретный домен, передайте его числовой ID явно - вы можете найти его с помощью list_workspaces или в панели управления.
Вы также можете попросить агента обработать несколько ссылок за один раз. Запрос «Создай ссылки с UTM-метками для email, Twitter и LinkedIn - все ведут на страницу весенней распродажи» приведет к трем последовательным вызовам create_link с разными наборами тегов, и агент представит все три коротких URL в таблице, которую вы сможете вставить прямо в бриф кампании. Эта модель заменяет ручную работу в конструкторе UTM в панели управления для рутинной настройки кампаний, хотя она пока не поддерживает систему шаблонов UTM на уровне рабочего пространства (описанную в руководстве по отслеживанию UTM) - этот уровень автоматизации по-прежнему проходит через REST API.
Пример сессии: запрос статистики кликов#
Вторая модель - получение аналитики во время обзора кампании без открытия панели управления.
Пользователь: Как отработали ссылки spring-2026 на прошлой неделе? Разбей по дням, время берлинское.
Claude: Позвольте мне извлечь временной ряд для этой ссылки.
[Вызов инструмента: query_analytics]
{
"link_id": 1847,
"from": "2026-05-04",
"to": "2026-05-10",
"interval": "day",
"tz": "Europe/Berlin"
}
[Результат инструмента]
{
"items": [
{ "bucket": "2026-05-04", "clicks": 312 },
{ "bucket": "2026-05-05", "clicks": 489 },
{ "bucket": "2026-05-06", "clicks": 701 },
{ "bucket": "2026-05-07", "clicks": 1204 },
{ "bucket": "2026-05-08", "clicks": 988 },
{ "bucket": "2026-05-09", "clicks": 623 },
{ "bucket": "2026-05-10", "clicks": 417 }
],
"total": 4734,
"tz": "Europe/Berlin"
}
Claude: На прошлой неделе весенняя ссылка получила 4734 клика. Пик пришелся на среду-четверг (701 → 1204), что совпадает с рассылками в середине недели. Трафик снизился к выходным. Если вы отправили письмо кампании в четверг утром по берлинскому времени, всплеск подтверждается.
Чтобы сравнить несколько ссылок, попросите агента вызвать query_analytics по разу для каждой ссылки и скомпилировать результаты. Это еще несколько вызовов инструмента, но агент сам справится с циклом; вы получите сравнительную таблицу без открытия панели управления или написания скрипта.
Параметр tz гарантирует, что дневные интервалы соответствуют вашей местной полночи, а не UTC. Письмо кампании, отправленное в 9:00 по CET, которое вы запрашиваете в UTC, разделит трафик первого дня на два дня UTC - tz: Europe/Berlin позволяет этого избежать. Поддержка часовых поясов реализована в рамках этапа 6.A по аналитике, описанного на странице MCP-сервера.
Безопасность - ограничение ключа, что отправляет сервер, журнал аудита#
Несколько вещей, которые стоит знать перед внедрением этого в команде.
Ограничьте область действия ключа. Инструментам create_link и generate_qr нужен доступ на запись ссылок. query_analytics нужен доступ на чтение аналитики. list_links и list_workspaces требуют доступа на чтение ссылок. Если ваш процесс только для чтения - получение метрик во время обзора - создайте ключ только с доступом на чтение аналитики + чтение ссылок и передайте его серверу. Сервер будет вызывать только те эндпоинты, которые разрешает ключ; всё остальное вернет 403, что отобразится как ошибка в ответе агента.
Что отправляет сервер. Каждый вызов инструмента становится аутентифицированным запросом к api.elido.app с заголовком Authorization: Bearer <key>. Сервер отправляет заголовок User-Agent: elido-mcp-server/0.1.0 с каждым запросом; эта строка видна в журнале аудита. Сам сервер не отправляет никаких данных в Anthropic или сторонние сервисы - MCP-сервер является локальным процессом, посредником между клиентом и Elido API. Данные, которые AI-клиент отправляет на свой собственный бэкэнд (ваши промпты в Claude Desktop, результаты работы инструментов, которые возвращаются в контекст), регулируются политиками конфиденциальности Anthropic или Cursor, а не Elido.
Журнал аудита. Каждый вызов API, совершаемый MCP-сервером, отображается в Settings → Audit Log в панели управления, помеченный именем ключа и исходным IP-адресом. Если вы видите неожиданные вызовы инструментов, немедленно смените ключ в Settings → API Keys. Журнал аудита доступен на тарифах Pro и Business.
Ключ в файле конфигурации. Блок env в claude_desktop_config.json и .cursor/mcp.json хранит ключ в открытом виде. На персональном компьютере это допустимо; в общей или управляемой среде лучше вводить ключ через системную связку ключей или менеджер секретов и ссылаться на него через переменную окружения, которую конфигурация MCP читает косвенно. В командных сетапах у каждого участника должен быть свой собственный ключ - общие ключи лишают смысла атрибуцию в журнале аудита.
Честные ограничения#
Несколько вещей, которые MCP-сервер не делает, по задумке.
Никаких операций администрирования рабочего пространства. Приглашение членов команды, настройка кастомных доменов, управление оплатой тарифов, создание или удаление рабочих пространств - ничего из этого нет в наборе инструментов. Эти операции достаточно серьезны, чтобы требовать участия человека в панели управления. Интерфейс MCP намеренно ограничен задачами, которые нужны агенту по контенту или кампаниям в процессе работы. Если вам нужно автоматизировать создание рабочих пространств, подходящими инструментами будут REST API и Terraform-провайдер.
Никакого стриминга в реальном времени. Текущий транспорт - stdio с синхронным ответом на запрос. Транспорт SSE находится в планах. Для большинства рабочих процессов агента - создания ссылки, получения QR-кода, извлечения недельного временного ряда - синхронная модель подходит. Для сценариев, требующих потоковой передачи большого списка ссылок или наблюдения за счетчиком кликов в реальном времени, лучше использовать панель управления или REST API.
Применяются лимиты запросов. Elido API применяет ограничения частоты запросов для каждого ключа независимо от того, является ли вызывающий человеком, скриптом или MCP-сервером. Лимиты по тарифным планам указаны в справочнике API. Процессы агентов, которые вызывают create_link в плотных циклах - создавая сотни ссылок программно - должны использовать эндпоинт массового импорта REST (POST /v1/links/bulk) напрямую, а не отправлять сотни отдельных вызовов инструмента create_link. MCP-сервер оптимизирован для интерактивного, встроенного использования; массовые операции относятся к области скриптов.
query_analytics возвращает только количество кликов. Временной ряд, который возвращает инструмент query_analytics, - это количество кликов, сгруппированное по времени. Он не возвращает географические данные, разделение по устройствам, данные о реферерах или атрибуцию конверсий. Эти данные доступны в панели управления и через полный REST API аналитики, но не входят в текущий набор инструментов MCP. Если вашему агенту требуется разбивка по странам для ссылки, вызывайте REST API напрямую.
Куда двигаться дальше#
Исходный код сервера и трекер задач находятся в packages/mcp-server/ в монорепозитории Elido. Пакет публикуется с npm provenance, поэтому каждый релиз криптографически привязан к коммиту, из которого он был собран - аудит артефакта публикации прост.
На странице интеграции MCP есть справочник инструментов, матрица областей видимости и конфигурация для самостоятельного хостинга с указанием ELIDO_API_BASE на приватный инстанс Elido. Если вы на тарифе, включающем конфигурацию MCP рабочего пространства, страница также охватывает процесс ротации ключей в команде.
Две настройки, которые стоит попробовать в первую очередь:
-
Настройте Claude Desktop, как описано выше, откройте новый разговор и введите: «сократи
https://example.com/testс тегомmcp-test». Наблюдайте, как срабатывает вызов инструмента и короткая ссылка появляется в ответе. Вся настройка должна занять менее пяти минут. -
Если вы уже используете Cursor для работы с контентом или документацией, поместите
.cursor/mcp.jsonв корень проекта и попросите Composer: «составь отчет по топовым ссылкам за прошлую неделю по количеству кликов». Вызовыlist_linksиquery_analyticsпроизойдут прямо в чате, и агент напишет отчет.
Обе возможности находятся в стадии бета (0.1.x) - набор инструментов будет расширяться, но существующие входные данные инструментов не будут ломаться в рамках версии 0.1.x. Если что-то работает не так, как описано здесь, создайте задачу с меткой area:mcp, и мы рассмотрим её как регрессию.
Похожее в блоге#
- Достижение p95 < 15 мс для редиректов из FRA, ASH и SGP
- Массовый импорт коротких ссылок из Google Sheets (реальный процесс кампании)
- Почему мы используем ClickHouse для аналитики кликов (а не Postgres)
- Сокращатели URL для SaaS: жизненный цикл, онбординг, коммуникации в продукте
Если вы оцениваете Elido по стоимости, MCP-сервер доступен на всех тарифах - вызовы инструментов учитываются в тех же лимитах API, что и у любого другого клиента. Видимость журнала аудита, описанная выше, требует тарифа Pro или выше. Полное сравнение планов см. на странице цен.
- Marius
Попробуйте Elido
Вставьте URL - получите короткую ссылку
Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.
Бесплатно, без регистрации · 2 в день