30.09.2026 721 материалов

Разработчик научил Claude публиковать блоги автоматически — и рассказал, где всё пошло не так

Инженер собрал кастомный MCP-сервер, чтобы Claude читал черновики и публиковал их на Dev.to. Сам код — 20 строк, но путь до работающей системы пролёг через сломанные зависимости, захваченное имя пакета и коварный JSON.

Разработчик научил Claude публиковать блоги автоматически — и рассказал, где всё пошло не так

Протокол MCP обещает, что ИИ будет не просто генерировать текст, а реально выполнять действия — читать файлы, вызывать API, запускать скрипты. На практике же 80% усилий уходит на борьбу с окружением, а не с самим ИИ.

Зачем это вообще нужно

Разработчик, который плотно готовится к найму в сфере AI-инженерии, решил попробовать MCP (Model Context Protocol) на практике — не просто почитать документацию, а собрать рабочий инструмент. Идея: Claude читает черновик поста с локальной машины, редактирует его и публикует на Dev.to через API. Без копипасты, без открытия веб-редактора, без ручных телодвижений.

Именно для таких сценариев MCP и создавался. Это протокол, который позволяет языковой модели вызывать пользовательские «инструменты» — по сути, обычные Python-функции, обёрнутые в документацию. Подключил сервер к Claude Desktop — и модель получает возможность действовать в реальном мире.

Два сервера, одна задача

Автор собрал связку из двух MCP-серверов:

  • filesystem — официальный сервер от разработчиков протокола, даёт Claude доступ к чтению и записи файлов в разрешённой папке.
  • devto — кастомный сервер, который оборачивает API Dev.to и выставляет инструмент publish_blog_to_devto.

Схема работы после настройки выглядит почти тривиально: говоришь Claude «возьми черновик из папки, отредактируй и опубликуй как черновик на Dev.to с тегами» — и он сам цепочкой вызывает нужные инструменты. Сначала читает файл, потом правит текст, потом отправляет запрос к API. Никакой магии, чистая оркестрация.

Где всё поломалось

И вот тут начинается самое интересное — и самое полезное. Потому что MCP как протокол оказался простейшей частью. Весь реальный опыт автора — это отладка окружения. И проблемы, с которыми он столкнулся, вполне типичны.

Ловушка с именем пакета на PyPI

Это, пожалуй, самый коварный баг. Автор установил пакет mcp через uv add mcp, получил «успешно», но при попытке импорта fastmcp — ModuleNotFoundError. При этом import mcp работал, папка server на месте.

Выяснилось, что на PyPI зарегистрирован пакет с именем mcp версии 2.0.0, который не имеет отношения к официальному SDK от Anthropic. Это совершенно другая библиотека с зависимостями вроде httpx2 и pywin32. Настоящий SDK называется modelcontextprotocol и на момент публикации был на версии 1.29.0.

Исправление: явно указать диапазон версий — uv add "mcp[cli]>=1.2.0,<2.0.0". Урок, который автор подчёркивает: если после установки пакета ничего не работает — проверяйте через uv pip show, что реально поставилось. Имя на PyPI не гарантирует, что это тот проект, который вы ищете.

Python 3.9 vs 3.10+

MCP SDK требует Python 3.10 или выше. Но в шаблоне проекта осталось requires-python = ">=3.9" от предыдущей итерации. Зависимости отказывались резолвиться, и без явного пинания версии Python (uv python pin 3.12) проблему было не решить.

Путь к uv в Claude Desktop на Windows

Claude Desktop не всегда наследует PATH системной оболочки. Поэтому команда "command": "uv" в конфиге может молча не сработать. Пришлось прописывать полный путь к исполняемому файлу — тот, который выдаёт where.exe uv.

Ошибка в JSON-конфиге

Файл claude_desktop_config.json содержит и другие настройки приложения. Если добавить свой MCP-сервер на том же уровне вложенности, что и ключ mcpServers, вместо того чтобы вложить внутрь — Claude Desktop молча проигнорирует конфигурацию. Сервер просто не появится в списке, и вы будете гадать почему.

Правильная структура:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "C:\\path\\to\\folder"]
    },
    "devto": {
      "command": "C:\\Users\\...\\.local\\bin\\uv.exe",
      "args": ["--directory", "C:\\...\\devto-mcp-server", "run", "dev-server.py"]
    }
  }
}

После правки — полный перезапуск Claude Desktop (не просто закрытие окна, а выход из трея), и оба сервера наконец отображаются как работающие.

MCP Inspector: отладка без Claude

Для тестирования сервера до подключения к Claude автор использовал MCP Inspector — локальный веб-интерфейс, который запускается одной командой и позволяет вызывать инструменты напрямую, видя сырой запрос и ответ. Это полезно для раннего вылавливания багов, не отлаживая через чат с моделью.

Что это на самом деле говорит об экосистеме

Сам код MCP-сервера — около 20 строк Python с докстрингом. Протокол прост, интерфейс чистый, документация адекватная. Но путь до работающей системы пролегает через стандартные боли Python-экосистемы: конфликты версий, мусор на PyPI, платформенные нюансы менеджеров пакетов.

Автор резюмирует это точно: инструменты для ИИ-агентов настолько надёжны, насколько надёжна скучная инфраструктура под ними. Получите venv, версии пакетов и структуру конфига — и «ИИ делает интересную часть» работает само собой.

В планах — добавить в тот же сервер инструмент для автоматического сбора истории коммитов из GitHub, чтобы Claude мог сам генерировать еженедельные посты вида «что я построил на этой неделе». Идея здравая: если протокол уже работает, расширять функциональность — дело нескольких новых функций.


Примечание: автор статьи на Dev.to не упоминает, использовал ли он свой же инструмент для публикации самого этого поста. Но сама ирония напрашивается.