WordPress MCP Server
MCP (Model Context Protocol) сервер для управления WordPress постами через ChatGPT.
Что это?
Позволяет ChatGPT создавать, обновлять, получать и удалять посты на вашем WordPress сайте.
Быстрый старт
1. Скопируйте файлы на сервер
# На вашем Ubuntu сервере создайте директорию
mkdir -p ~/wordpress-mcp-project
cd ~/wordpress-mcp-project
# Скопируйте туда эти файлы:
# - mcp_sse_server.py
# - requirements.txt
# - install.sh
2. Настройте WordPress credentials
Откройте mcp_sse_server.py и измените:
WORDPRESS_URL = "https://your-wordpress-site.com/"
WORDPRESS_USERNAME = "your-username"
WORDPRESS_PASSWORD = "your-password"
3. Запустите установку
chmod +x install.sh
sudo ./install.sh
Скрипт автоматически:
- Установит все зависимости
- Создаст виртуальное окружение Python
- Установит Python пакеты
- Создаст systemd сервис
- Запустит MCP сервер
- Установит Cloudflare Tunnel для HTTPS
- Выдаст HTTPS URL для подключения к ChatGPT
4. Подключите к ChatGPT
- Откройте ChatGPT
- Settings → Connectors → New Connector
- Укажите:
- Name: WordPress MCP
- URL:
https://your-url.trycloudflare.com/sse(из вывода install.sh) - Authentication: No authentication
- Сохраните
5. Используйте!
Попросите ChatGPT:
Напиши статью про AI на 300 слов и опубликуй на моём WordPress сайте
Архитектура
ChatGPT
↓ HTTPS/SSE
Cloudflare Tunnel
↓ HTTP
FastAPI MCP Server (port 8000)
↓ HTTPS
WordPress REST API
↓
WordPress Site
Доступные инструменты
-
create_post - Создать новый пост
- Параметры: title, content, excerpt (опционально), status (publish/draft/private)
-
update_post - Обновить существующий пост
- Параметры: post_id, title (опционально), content (опционально), excerpt (опционально)
-
get_posts - Получить список постов
- Параметры: per_page (1-100, по умолчанию 10), page (по умолчанию 1)
-
delete_post - Удалить пост
- Параметры: post_id
Управление
Проверка статуса
sudo systemctl status wordpress-mcp-server
Просмотр логов
sudo journalctl -u wordpress-mcp-server -f
Перезапуск
sudo systemctl restart wordpress-mcp-server
Получить HTTPS URL
cat ~/cloudflared.log | grep "https://"
Перезапустить Cloudflare Tunnel
pkill cloudflared
nohup cloudflared tunnel --url http://localhost:8000 > ~/cloudflared.log 2>&1 &
sleep 5
cat ~/cloudflared.log | grep "https://"
Troubleshooting
Сервер не запускается
# Проверьте логи
sudo journalctl -u wordpress-mcp-server -n 50
# Проверьте порт
sudo netstat -tlnp | grep 8000
ChatGPT не подключается
# Проверьте Cloudflare Tunnel
cat ~/cloudflared.log | grep "https://"
# Протестируйте URL
curl https://your-url.trycloudflare.com/health
401 ошибка при создании поста
Проверьте WordPress credentials в mcp_sse_server.py. Убедитесь, что:
- URL правильный и заканчивается на
/ - Username и password корректные
- У пользователя есть права на создание постов
- WordPress REST API включен
Ошибка "WordPress client not initialized"
Сервер не смог инициализировать WordPress клиент. Проверьте:
- Логи сервера:
sudo journalctl -u wordpress-mcp-server -n 50 - Доступность WordPress сайта
- Правильность credentials
Безопасность
⚠️ Важно:
- WordPress credentials хранятся в коде - используйте Application Password
- Нет аутентификации на MCP endpoint - добавьте API ключ для production
- Cloudflare бесплатный туннель может быть нестабилен
Рекомендации для production:
-
Используйте Application Password вместо основного пароля:
- В WordPress: Users → Profile → Application Passwords
- Создайте новый Application Password для MCP
-
Добавьте переменные окружения:
# Создайте .env файл echo "WORDPRESS_URL=https://your-site.com/" > .env echo "WORDPRESS_USERNAME=your-username" >> .env echo "WORDPRESS_PASSWORD=your-app-password" >> .env -
Добавьте API Key аутентификацию:
- Генерируйте уникальный API ключ
- Проверяйте header
X-API-Keyна каждом запросе
-
Используйте HTTPS:
- Настройте Nginx/Apache с SSL сертификатом
- Используйте Let's Encrypt для бесплатных SSL сертификатов
Требования
- Ubuntu 20.04+
- Python 3.10+
- WordPress с REST API (включен по умолчанию в WordPress 4.7+)
- Root или sudo доступ
Расширение функционала
Добавление новых инструментов
Чтобы добавить новые инструменты (например, работа с категориями):
- Добавьте метод в класс
WordPressMCP - Добавьте Tool в функцию
handle_list_tools() - Добавьте обработку в функцию
handle_call_tool()
Пример:
async def get_categories(self):
url = f"{self.api_base}/categories"
response = await self.client.get(url)
return response.json()
Примеры использования
Создание статьи через ChatGPT:
Пользователь: Напиши статью про Model Context Protocol на 500 слов и опубликуй
ChatGPT: Создаю статью...
[Использует create_post]
Статья опубликована на https://your-site.com/mcp-protocol/
Получение последних постов:
Пользователь: Покажи последние 5 постов
ChatGPT: [Использует get_posts]
1. "MCP Protocol..." - https://your-site.com/mcp/
2. "AI Revolution" - https://your-site.com/ai-revolution/
...
Создание черновика:
Пользователь: Создай черновик статьи про Python
ChatGPT: [Использует create_post со status="draft"]
Черновик создан! ID: 124
Мониторинг
Для продакшена рекомендуется добавить:
- Prometheus метрики (количество запросов, ошибок, latency)
- Healthcheck endpoints
- Алерты при падении сервиса
- Логирование в централизованную систему (ELK, Loki)
Лицензия
MIT - используйте свободно!
Поддержка
При возникновении проблем:
- Проверьте логи:
sudo journalctl -u wordpress-mcp-server -f - Проверьте статус:
sudo systemctl status wordpress-mcp-server - Протестируйте WordPress API напрямую:
curl -u "username:password" https://your-site.com/wp-json/wp/v2/posts
Авторы
Created with ❤️ using Model Context Protocol