MCP-сервер интеграции Claude и WordPres
Что такое MCP? Model Context Protocol (MCP) — открытый стандарт, который использует Claude (а вскоре и другие AI-ассистенты) для вызова внешних «инструментов». MCP-сервер сообщает Claude, какие инструменты доступны, и ассистент вызывает их через JSON-RPC.
С помощью AI Engine ваш сайт на WordPress предоставляет 30 + инструментов: от создания постов (wp_create_post) и загрузки медиафайлов (wp_upload_media) до операций с темами. Claude может создавать черновики, загружать изображения, проставлять теги, модифицировать тему — всё в одном чате.
Маленький Node-скрипт mcp.js (поставляется с AI Engine) — это сам мост. Он написан под macOS и не тестировался в Windows. Что он делает:
- Открывает защищённый SSE-поток к WordPress (/wp-json/mcp/v1/sse);
- Прокидывает JSON-RPC-вызовы Claude на /wp-json/mcp/v1/messages;
- Передаёт ответы обратно Claude;
- Автоматически завершает работу (посылает mwai/kill и выходит), когда Claude закрывается.
Нет сомнений, что со временем Claude получит прямое подключение к AI Engine по SSE. OpenAI уже объявила, что планирует добавить это и в ChatGPT. Пока же весь стек в стадии бета-тестирования, рассчитан на продвинутых пользователей и разработчиков, умеющих работать в CLI и отлаживать. Плюс AI получает полный доступ к вашему WordPress, так что… возможно всё.
1. Требования
- WordPress 6.7 и выше
- WP REST API (обычно включён по умолчанию)
- AI Engine 2.7.6 и выше
- Claude Desktop ≥ 0.9.2
- Node ≥ 20.19.0
mcp.js берёт на себя всё остальное: регистрирует сайты, редактирует конфиг Claude, запускает релей и корректно завершает его работу.
2. Подключение Claude к вашему сайту
Сначала задайте токен аутентификации в настройках AI Engine на вкладке DevTools.
Скопируйте содержимое папки labs к себе (или хотя бы сам mcp.js) и выполните:
chmod +x ai-engine/labs/mcp.js
ai-engine/labs/mcp.js add https://example.com TOKEN
ai-engine/labs/mcp.js start example.com
Первая команда создаёт запись MCP в конфиге Claude: ~/Library/Application Support/Claude/claude_desktop_config.json.
Запустите Claude Desktop и подождите несколько секунд. Вы должны увидеть, что AI Engine корректно загружен как MCP-сервер.
Не удивляйтесь, если этого не произойдёт — проблем может быть много: защита сервера, SSL, кэширование, причуды SSE, edge-кэш, Cloudflare и т. д. Если токен не подходит, Claude ничего не скажет — смотрите логи. Начните с локальной установки, чтобы минимизировать переменные.
3. Попробуйте эти промпты
- Простой — «Список моих последних 5 постов».
- Простой — «Создать черновик с заголовком Моё AI приключение, один абзац, прикрепить случайное изображение из Медиа-библиотеки».
- Средний — «Проанализируй 10 новых постов и опубликуй логичное продолжение. Используй существующие категории и теги. Сгенерируй изображение, если подходящего нет».
4. Проблемы и отладка
Загляните в ~/Library/Logs/Claude — там могут быть полезные логи (но не всегда).
Каждое SSE-подключение занимает один PHP-воркер. Пара сессий Claude может быстро съесть ресурсы, если не завершится корректно, и сайт перестанет отвечать. Тогда перезапустите веб-сервер или убейте процессы php-fpm — зависит от конфигурации.
Если SSE закрывается нештатно, воспользуйтесь «мягким» выходом (закройте Claude или прервите Ctrl + C). Иначе перезапустите PHP- или веб-сервер.
Частые ловушки
- NVM и версия Node. Если вы видите ошибки JS, убедитесь, что NVM не подтягивает старую версию Node (nvm list).
- Кэширование. Подключение к SSE идёт не через браузер, и Cloudflare/хостинг могут заблокировать поток как «не-браузер». Например, на Kinsta придётся отключить Edge-Caching или попросить их исключить SSE-эндпоинт AI Engine.
- Для теста SSE на сервере попробуйте gist.
Полезные команды mcp.js
ai-engine/labs/mcp.js claude none
mcp.js start example.com
mcp.js relay example.com
mcp.js add mysite.com TOKEN
mcp.js list
mcp.js claude mysite.com
mcp.js post mysite.com '{"method":"tools/list"}' <session_id>
В wp-content/plugins/ai-engine/classes/modules/mcp.php можно включить расширенный лог:
private $logging = true;
Затем смотрите wp-content/debug.log.
Что происходит при закрытии Claude?
mcp.js сам зачищает за собой:
- определяет закрытие stdin,
- отправляет уведомление mwai/kill в WordPress,
- прерывает fetch SSE,
- завершает работу с кодом 0 — без «зависших» процессов node.