Коротко
Автор подключила к своему продукту MCP-сервер поверх существующего бэкенда, а агент написал код за один вечер. Главный вывод — сложнее реализации оказались OAuth, устойчивые имена инструментов, публикация и проверка реального поведения клиентов; тысячи подключений не означали реальных пользователей.
Контекст
Автор — создательница продукта Worklore; статья описывает запуск его MCP-сервера, открытого исходного кода которого можно найти в github.com/worklore/worklore-mcp. Исходная задача — дать AI-клиентам доступ к операциям продукта через MCP и понять, что потребуется для публикации и поддержки сервера.
Главное
- Агент написал и проверил маршрут MCP поверх существующего бэкенда за один вечер; новых зависимостей не добавляли.
- MCP через streamable HTTP передаёт JSON-RPC в теле POST: клиент запрашивает сведения о сервере и список инструментов, затем вызывает их по отдельности.
- Автор считает разумным ограничивать набор примерно четырьмя-восемью инструментами: каждый дополнительный вариант усложняет выбор модели.
- Имена инструментов становятся долговременным публичным интерфейсом. smithery.ai поощрял точечные имена вроде stories.search; листинг набрал 98 из 100, но каталог ChatGPT требует имена по шаблону ^[a-zA-Z0-9_-]{1,64}$ и не принимает точку.
- Для действий от имени пользователя понадобился OAuth: обычный API-ключ неудобен, когда Claude или ChatGPT подключаются сами. Автору пришлось также предусмотреть демо-аккаунт для ревьюера, не использующего подходящий социальный вход.
- Список инструментов и публичные возможности стоит показывать без авторизации: закрытый список оказался невидим зеркалам каталогов, которым некуда войти.
- Для публикации сервера организации io.github.worklore/worklore понадобился GitHub-токен с правом read:org; помогло использование токена GitHub CLI: mcp-publisher login github -token ”$(gh auth token)”.
- В MCP-ответе ошибка вызова инструмента может передаваться как isError: true, а не как ошибка протокола; тесту нужно проверить этот флаг до сопоставления результата со схемой.
- Моки должны воспроизводить типы реального драйвера БД: тесты с обычными целыми числами пропустили ошибку, связанную с десятичным типом в настоящей базе.
- За 16 сентября — 1 октября зарегистрировано более 3 700 подключений, но только 147 вызовов инструментов и ни одного реального пользователя; автор приводит примеры ботов, среди них mcpbeat, SentinelOracle и rokmcp-collector.
Как сделано
Сервер реализован как маршрут поверх существующего бэкенда: MCP через streamable HTTP использует JSON-RPC в POST-запросах. Автор обошлась без отдельного фреймворка и SDK, а агент написал и проверил код за вечер.
Автор выбрала набор из четырёх инструментов, позднее расширенный до шести; часть операций требует OAuth и проверки прав пользователя, а публичное описание и доступные данные можно отдавать анонимно. Имена инструментов следует заранее зафиксировать: точечные пути вроде stories.search хорошо подходят одним каталогам, но не проходят ограничение ChatGPT на ^[a-zA-Z0-9_-]{1,64}$.
После запуска автор добавила структурированные логи вызовов и интеграционную проверку, которая действует как клиент: запрашивает инструменты и сверяет успешные ответы с объявленными схемами. Проверка должна сначала удостовериться, что ответ не содержит isError: true. Для контроля версии предлагается хешировать ответ initialize вместе со списками инструментов, ресурсов и промптов и запрещать сборку, если поверхность сервера изменилась, а версия — нет.
Результаты
Сервер был написан и проверен за один вечер без новых зависимостей. По данным за 16 сентября — 1 октября, он получил более 3 700 подключений и 147 вызовов инструментов, однако все вызовы исходили от автора (включая тестовые аккаунты) или ревьюера ChatGPT; реальных пользователей пока не было. Большинство подключений оказались ботами каталогов и мониторинга. После публикации интеграционная проверка обнаружила несколько ошибок, несмотря на 79 ранее проходивших тестов. Вычислительные расходы, по словам автора, укладывались в бесплатные облачные лимиты; для каталога коннекторов Claude требовалась Team-организация примерно за $40 в месяц при минимуме в два места.
Ограничения
Это опыт одного продукта, а не универсальное сравнение платформ или систематический тест. Автор не сообщает точные облачные расходы и не приводит независимого подтверждения всех оценок. Главные проблемы проявились после публикации; 3 700 подключений в основном были автоматическими проверками, а не использованием людьми. OAuth требует самостоятельно поддерживать безопасность, совместимость клиентов может меняться, а листинги и политика конфиденциальности способны устареть. Автор советует проверять сервер настоящими клиентскими сценариями: 79 unit-тестов не выявили часть ошибок, включая различие между типами в моках и реальной базе.
Что взять себе
- Сначала зафиксируйте публичные имена инструментов и правила доступа: после появления в каталогах переименование превращается в миграцию.
- С первого деплоя логируйте время, метод, инструмент, инициатора и результат; подключения и реальные вызовы — разные метрики.
- Проверяйте сервер как настоящий MCP-клиент, включая объявленные схемы, isError и типы данных, которые возвращает реальная база.
- Автоматизируйте контроль изменений поверхности сервера относительно версии и синхронизируйте листинги и политику конфиденциальности с фактическими возможностями.
- Публикация в каталогах нужна прежде всего для обнаружения незнакомой аудиторией; для внутреннего инструмента часто достаточно адреса сервера и инструкции подключения.
Читать оригинал, если…
Откройте оригинал, если нужны пошаговые инструкции по сборке MCP-сервера, примеры тестов и логирования либо подробности публикации и исходный код Worklore.