Horosheff/wordpress-mcp-server
If you are the rightful owner of wordpress-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server for WordPress integration that allows you to create, update, get, and delete WordPress posts.
WordPress MCP Server для OpenAI и ChatGPT
MCP (Model Context Protocol) сервер для управления WordPress постами через ChatGPT и OpenAI Agent SDK
📋 Содержание
- Что это такое?
- Возможности
- Архитектура
- Требования
- Быстрый старт
- Подробная установка
- Настройка Cloudflare Tunnel
- Подключение к ChatGPT
- Подключение к OpenAI Agent SDK
- Доступные инструменты
- Примеры использования
- Управление сервером
- Troubleshooting
- Безопасность
🎯 Что это такое?
WordPress MCP Server — это сервер на Python, который позволяет ChatGPT и другим AI-агентам управлять постами на вашем WordPress сайте через MCP (Model Context Protocol).
Что можно делать:
- ✅ Создавать посты на WordPress из ChatGPT
- ✅ Обновлять существующие посты
- ✅ Получать список постов
- ✅ Удалять посты
- ✅ Управлять статусом публикации (draft, publish, private)
🚀 Возможности
- MCP Protocol — стандартизированный протокол для взаимодействия AI с внешними сервисами
- SSE Transport — Server-Sent Events для real-time коммуникации
- WordPress REST API — интеграция через официальный WordPress API
- FastAPI — современный, быстрый веб-фреймворк
- HTTPS через Cloudflare — безопасное подключение через туннель
- Systemd Service — автоматический запуск и управление
- CORS Support — поддержка cross-origin запросов
🏗️ Архитектура
ChatGPT / OpenAI Agent SDK
↓
HTTPS (SSE)
↓
Cloudflare Tunnel (ngrok-альтернатива)
↓
WordPress MCP SSE Server (FastAPI)
↓
WordPress REST API
↓
WordPress Site
📦 Требования
Сервер:
- Ubuntu 20.04+ (или другой Linux)
- Python 3.10+
- Git
- Доступ root или sudo
- Открытый порт (например, 8000)
WordPress:
- WordPress сайт с доступом к REST API
- Учетная запись с правами администратора
- Application Password для API (или обычный пароль)
Для HTTPS:
- Cloudflare Tunnel (бесплатно, без регистрации)
- Или ngrok (требует регистрацию)
- Или SSL сертификат (Let's Encrypt)
⚡ Быстрый старт
1. Скачать и запустить скрипт автоустановки
# На вашем Ubuntu сервере выполните:
cd /root
wget https://raw.githubusercontent.com/Horosheff/wordpress-mcp-server/master/reinstall_server.sh
chmod +x reinstall_server.sh
./reinstall_server.sh
Этот скрипт автоматически:
- Удалит старые версии
- Склонирует репозиторий
- Установит зависимости
- Настроит systemd сервис
- Запустит сервер
2. Установить Cloudflare Tunnel для HTTPS
# Скачать cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x cloudflared-linux-amd64
mv cloudflared-linux-amd64 /usr/local/bin/cloudflared
# Запустить туннель в фоне
nohup cloudflared tunnel --url http://localhost:8000 > cloudflared.log 2>&1 &
# Получить HTTPS URL
sleep 5
cat cloudflared.log | grep "https://"
Вы получите URL вида: https://xxxx-yyyy-zzzz.trycloudflare.com
3. Подключить к ChatGPT
- Откройте ChatGPT → Настройки → Коннекторы → Новый коннектор
- Укажите:
- Имя: WordPress MCP
- URL:
https://your-cloudflare-url.trycloudflare.com/sse
- Аутентификация: Без аутентификации
- Нажмите "Создать"
- Попросите ChatGPT: "Напиши статью про AI и опубликуй на моём сайте"
📖 Подробная установка
Шаг 1: Подготовка сервера
# Обновить систему
sudo apt update && sudo apt upgrade -y
# Установить необходимые пакеты
sudo apt install -y python3 python3-pip python3-venv git curl wget
Шаг 2: Клонирование репозитория
# Перейти в /opt
cd /opt
# Клонировать репозиторий
git clone https://github.com/Horosheff/wordpress-mcp-server.git
# Перейти в директорию
cd wordpress-mcp-server
Шаг 3: Настройка виртуального окружения
# Создать виртуальное окружение
python3 -m venv venv
# Активировать
source venv/bin/activate
# Установить зависимости
pip install --upgrade pip
pip install -r requirements.txt
Шаг 4: Настройка конфигурации
Отредактируйте файл mcp_sse_server.py
и укажите ваши WordPress credentials:
# WordPress configuration
WORDPRESS_URL = "https://your-site.com/" # Ваш WordPress URL
WORDPRESS_USERNAME = "admin" # Ваш WordPress логин
WORDPRESS_PASSWORD = "your-password" # Ваш WordPress пароль
Шаг 5: Создание systemd сервиса
# Создать файл сервиса
sudo nano /etc/systemd/system/wordpress-mcp-server.service
Вставьте:
[Unit]
Description=WordPress MCP SSE Server for OpenAI
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/wordpress-mcp-server
Environment=PATH=/opt/wordpress-mcp-server/venv/bin
ExecStart=/opt/wordpress-mcp-server/venv/bin/python mcp_sse_server.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Шаг 6: Запуск сервиса
# Перезагрузить systemd
sudo systemctl daemon-reload
# Включить автозапуск
sudo systemctl enable wordpress-mcp-server
# Запустить сервис
sudo systemctl start wordpress-mcp-server
# Проверить статус
sudo systemctl status wordpress-mcp-server
Шаг 7: Настройка firewall
# Открыть порт 8000
sudo ufw allow 8000/tcp
# Проверить статус
sudo ufw status
🌐 Настройка Cloudflare Tunnel
Cloudflare Tunnel предоставляет бесплатный HTTPS доступ к вашему локальному серверу без необходимости настройки SSL сертификатов.
Установка
# Скачать cloudflared
cd /root
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
# Сделать исполняемым
chmod +x cloudflared-linux-amd64
# Переместить в /usr/local/bin
sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared
Запуск туннеля
# Запустить в фоновом режиме
nohup cloudflared tunnel --url http://localhost:8000 > cloudflared.log 2>&1 &
# Дождаться запуска (5 секунд)
sleep 5
# Получить публичный HTTPS URL
cat cloudflared.log | grep "https://"
Вы получите URL вида:
https://random-words-here.trycloudflare.com
Автозапуск туннеля (опционально)
Создайте systemd сервис для cloudflared:
sudo nano /etc/systemd/system/cloudflared.service
Вставьте:
[Unit]
Description=Cloudflare Tunnel
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/cloudflared tunnel --url http://localhost:8000
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Активируйте:
sudo systemctl daemon-reload
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
# Получить URL из логов
sudo journalctl -u cloudflared -n 100 | grep "https://"
💬 Подключение к ChatGPT
1. Откройте ChatGPT
Перейдите на https://chat.openai.com
2. Создайте новый коннектор
- Нажмите на ваш профиль → Settings (Настройки)
- Перейдите в раздел Beta features → Connectors
- Нажмите New Connector (Новый коннектор)
3. Заполните форму
- Значок: Загрузите иконку (опционально)
- Имя:
WordPress MCP Server
- Описание:
Управление постами на WordPress сайте через MCP
- URL MCP-сервера:
https://your-cloudflare-url.trycloudflare.com/sse
- Аутентификация:
Без аутентификации
- ✅ Отметьте: "Я доверяю этому приложению"
4. Нажмите "Создать"
ChatGPT подключится к серверу и загрузит доступные инструменты.
5. Используйте ChatGPT!
Примеры запросов:
Напиши статью про искусственный интеллект на 500 слов и опубликуй на моём сайте
Получи последние 5 постов с моего сайта
Обнови пост с ID 123, измени заголовок на "Новый заголовок"
🤖 Подключение к OpenAI Agent SDK
Установка SDK
pip install openai-agents
Пример кода
from openai_agents import Agent
# Создание агента с MCP сервером
agent = Agent(
name="WordPress Agent",
instructions="You are a helpful assistant that can manage WordPress posts on mayai.ru",
mcp_servers=[
{
"url": "https://your-cloudflare-url.trycloudflare.com/sse",
"type": "sse"
}
]
)
# Использование агента
response = agent.run(
"Create a blog post about Python with title 'Introduction to Python' and interesting content"
)
print(response)
Прямое использование через HTTP
import requests
import json
MCP_URL = "https://your-cloudflare-url.trycloudflare.com/mcp"
# Создать пост
response = requests.post(MCP_URL, json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_post",
"arguments": {
"title": "My New Post",
"content": "<p>This is the post content!</p>",
"status": "publish"
}
}
})
result = response.json()
print(json.dumps(result, indent=2))
🛠️ Доступные инструменты
1. create_post
Создать новый пост на WordPress.
Параметры:
title
(string, обязательно) — Заголовок постаcontent
(string, обязательно) — Содержимое в HTML форматеexcerpt
(string, опционально) — Краткое описаниеstatus
(string, опционально) — Статус: "publish", "draft", "private" (по умолчанию "publish")
Пример:
{
"name": "create_post",
"arguments": {
"title": "Моя новая статья",
"content": "<p>Это содержимое статьи</p>",
"status": "publish"
}
}
Ответ:
{
"success": true,
"post_id": 123,
"url": "https://mayai.ru/my-new-post/",
"message": "Post 'Моя новая статья' created successfully"
}
2. update_post
Обновить существующий пост.
Параметры:
post_id
(integer, обязательно) — ID поста для обновленияtitle
(string, опционально) — Новый заголовокcontent
(string, опционально) — Новое содержимоеexcerpt
(string, опционально) — Новое краткое описание
Пример:
{
"name": "update_post",
"arguments": {
"post_id": 123,
"title": "Обновлённый заголовок"
}
}
3. get_posts
Получить список постов с WordPress.
Параметры:
per_page
(integer, опционально) — Количество постов на страницу (1-100, по умолчанию 10)page
(integer, опционально) — Номер страницы (по умолчанию 1)
Пример:
{
"name": "get_posts",
"arguments": {
"per_page": 5,
"page": 1
}
}
4. delete_post
Удалить пост с WordPress.
Параметры:
post_id
(integer, обязательно) — ID поста для удаления
Пример:
{
"name": "delete_post",
"arguments": {
"post_id": 123
}
}
💡 Примеры использования
Пример 1: Создание поста из ChatGPT
Ты: Напиши статью про MCP протокол на 300 слов и опубликуй на моём WordPress сайте
ChatGPT: Создаю статью...
[Использует create_post]
Готово! Статья опубликована: https://mayai.ru/mcp-protocol/
Пример 2: Получение последних постов
Ты: Покажи мне последние 5 постов с моего сайта
ChatGPT: [Использует get_posts]
Вот последние посты:
1. "MCP протокол" - https://mayai.ru/mcp-protocol/
2. "Искусственный интеллект" - https://mayai.ru/ai-intro/
...
Пример 3: Обновление поста
Ты: Обнови пост с ID 123, добавь в конец текст "P.S. Это обновлённая версия"
ChatGPT: [Использует update_post]
Пост обновлён успешно!
🎛️ Управление сервером
Проверка статуса
# Статус MCP сервера
sudo systemctl status wordpress-mcp-server
# Статус Cloudflare Tunnel
ps aux | grep cloudflared
Просмотр логов
# Логи MCP сервера
sudo journalctl -u wordpress-mcp-server -f
# Логи Cloudflare Tunnel
cat ~/cloudflared.log
tail -f ~/cloudflared.log
Перезапуск сервера
# Перезапустить MCP сервер
sudo systemctl restart wordpress-mcp-server
# Перезапустить Cloudflare Tunnel
pkill cloudflared
nohup cloudflared tunnel --url http://localhost:8000 > cloudflared.log 2>&1 &
Остановка сервера
# Остановить MCP сервер
sudo systemctl stop wordpress-mcp-server
# Остановить Cloudflare Tunnel
pkill cloudflared
Обновление кода
cd /opt/wordpress-mcp-server
git pull origin master
sudo systemctl restart wordpress-mcp-server
🔧 Troubleshooting
Проблема: Сервер не запускается
Решение:
# Проверьте логи
sudo journalctl -u wordpress-mcp-server -n 50
# Проверьте, что порт свободен
sudo netstat -tlnp | grep 8000
# Проверьте права доступа
ls -la /opt/wordpress-mcp-server/
Проблема: ChatGPT не подключается
Решение:
# Проверьте, что Cloudflare Tunnel работает
cat cloudflared.log | grep "https://"
# Протестируйте URL вручную
curl https://your-url.trycloudflare.com/health
# Проверьте, что MCP endpoint отвечает
curl -X POST https://your-url.trycloudflare.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
Проблема: 401 ошибка при создании поста
Решение:
# Проверьте WordPress credentials
cd /opt/wordpress-mcp-server
source venv/bin/activate
python -c "
import httpx, asyncio
async def test():
client = httpx.AsyncClient(auth=('your-user', 'your-pass'))
r = await client.get('https://your-site.com/wp-json/wp/v2/posts')
print(r.status_code)
await client.aclose()
asyncio.run(test())
"
Если статус не 200, обновите credentials в mcp_sse_server.py
.
Проблема: Cloudflare URL меняется при перезапуске
Решение:
Используйте постоянный туннель:
# Зарегистрируйте аккаунт на cloudflare.com
# Создайте именованный туннель в dashboard
# Используйте cloudflared с токеном
🔒 Безопасность
⚠️ Важно:
- WordPress credentials хранятся в коде — используйте переменные окружения
- Нет аутентификации на MCP endpoint — добавьте API ключ
- HTTP внутри сервера — используйте только через HTTPS туннель
- Cloudflare бесплатный туннель не имеет SLA и может быть нестабильным
Рекомендации:
- Используйте переменные окружения для sensitive данных:
import os
WORDPRESS_PASSWORD = os.getenv('WP_PASSWORD')
- Добавьте аутентификацию на MCP endpoint
- Ограничьте доступ через firewall
- Используйте Application Password вместо основного пароля WordPress
- Регулярно обновляйте зависимости:
pip install --upgrade -r requirements.txt
📚 Дополнительные ресурсы
- MCP Protocol Documentation
- WordPress REST API
- FastAPI Documentation
- Cloudflare Tunnel
- OpenAI Agent SDK
📝 Changelog
Version 1.0.0 (2025-09-29)
- ✅ Первый релиз
- ✅ MCP SSE Server с WordPress интеграцией
- ✅ Поддержка ChatGPT и OpenAI Agent SDK
- ✅ CORS и SSL через Cloudflare Tunnel
- ✅ Systemd сервис для автозапуска
- ✅ 4 основных инструмента (create, update, get, delete)
👨💻 Автор
Проект создан для интеграции WordPress с ChatGPT через MCP протокол.
📄 Лицензия
MIT License - используйте свободно!
🙏 Поддержка
Если у вас есть вопросы или проблемы:
- Проверьте Troubleshooting
- Посмотрите логи:
journalctl -u wordpress-mcp-server -f
- Создайте Issue на GitHub
- Проверьте, что все зависимости установлены
Готово! Теперь ваш WordPress управляется через ChatGPT! 🎉