wordpress-mcp-server

Horosheff/wordpress-mcp-server

3.2

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.

Tools
4
Resources
0
Prompts
0

WordPress MCP Server для OpenAI и ChatGPT

MCP Server Python FastAPI WordPress

MCP (Model Context Protocol) сервер для управления WordPress постами через ChatGPT и OpenAI Agent SDK


📋 Содержание

  1. Что это такое?
  2. Возможности
  3. Архитектура
  4. Требования
  5. Быстрый старт
  6. Подробная установка
  7. Настройка Cloudflare Tunnel
  8. Подключение к ChatGPT
  9. Подключение к OpenAI Agent SDK
  10. Доступные инструменты
  11. Примеры использования
  12. Управление сервером
  13. Troubleshooting
  14. Безопасность

🎯 Что это такое?

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

  1. Откройте ChatGPT → Настройки → Коннекторы → Новый коннектор
  2. Укажите:
    • Имя: WordPress MCP
    • URL: https://your-cloudflare-url.trycloudflare.com/sse
    • Аутентификация: Без аутентификации
  3. Нажмите "Создать"
  4. Попросите 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. Создайте новый коннектор

  1. Нажмите на ваш профиль → Settings (Настройки)
  2. Перейдите в раздел Beta featuresConnectors
  3. Нажмите 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 с токеном

🔒 Безопасность

⚠️ Важно:

  1. WordPress credentials хранятся в коде — используйте переменные окружения
  2. Нет аутентификации на MCP endpoint — добавьте API ключ
  3. HTTP внутри сервера — используйте только через HTTPS туннель
  4. Cloudflare бесплатный туннель не имеет SLA и может быть нестабильным

Рекомендации:

  1. Используйте переменные окружения для sensitive данных:
import os
WORDPRESS_PASSWORD = os.getenv('WP_PASSWORD')
  1. Добавьте аутентификацию на MCP endpoint
  2. Ограничьте доступ через firewall
  3. Используйте Application Password вместо основного пароля WordPress
  4. Регулярно обновляйте зависимости: pip install --upgrade -r requirements.txt

📚 Дополнительные ресурсы


📝 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 - используйте свободно!


🙏 Поддержка

Если у вас есть вопросы или проблемы:

  1. Проверьте Troubleshooting
  2. Посмотрите логи: journalctl -u wordpress-mcp-server -f
  3. Создайте Issue на GitHub
  4. Проверьте, что все зависимости установлены

Готово! Теперь ваш WordPress управляется через ChatGPT! 🎉