Skip to main content
Glama
README.md
# WordPress MCP Server

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

## Что это?

Позволяет ChatGPT создавать, обновлять, получать и удалять посты на вашем WordPress сайте.

## Быстрый старт

### 1. Скопируйте файлы на сервер

```bash
# На вашем 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` и измените:

```python
WORDPRESS_URL = "https://your-wordpress-site.com/"
WORDPRESS_USERNAME = "your-username"
WORDPRESS_PASSWORD = "your-password"
```

### 3. Запустите установку

```bash
chmod +x install.sh
sudo ./install.sh
```

Скрипт автоматически:
- Установит все зависимости
- Создаст виртуальное окружение Python
- Установит Python пакеты
- Создаст systemd сервис
- Запустит MCP сервер
- Установит Cloudflare Tunnel для HTTPS
- Выдаст HTTPS URL для подключения к ChatGPT

### 4. Подключите к ChatGPT

1. Откройте ChatGPT
2. Settings → Connectors → New Connector
3. Укажите:
   - **Name:** WordPress MCP
   - **URL:** `https://your-url.trycloudflare.com/sse` (из вывода install.sh)
   - **Authentication:** No authentication
4. Сохраните

### 5. Используйте!

Попросите ChatGPT:
```
Напиши статью про AI на 300 слов и опубликуй на моём WordPress сайте
```

## Архитектура

```
ChatGPT
  ↓ HTTPS/SSE
Cloudflare Tunnel
  ↓ HTTP
FastAPI MCP Server (port 8000)
  ↓ HTTPS
WordPress REST API
  ↓
WordPress Site
```

## Доступные инструменты

1. **create_post** - Создать новый пост
   - Параметры: title, content, excerpt (опционально), status (publish/draft/private)
   
2. **update_post** - Обновить существующий пост
   - Параметры: post_id, title (опционально), content (опционально), excerpt (опционально)
   
3. **get_posts** - Получить список постов
   - Параметры: per_page (1-100, по умолчанию 10), page (по умолчанию 1)
   
4. **delete_post** - Удалить пост
   - Параметры: post_id

## Управление

### Проверка статуса
```bash
sudo systemctl status wordpress-mcp-server
```

### Просмотр логов
```bash
sudo journalctl -u wordpress-mcp-server -f
```

### Перезапуск
```bash
sudo systemctl restart wordpress-mcp-server
```

### Получить HTTPS URL
```bash
cat ~/cloudflared.log | grep "https://"
```

### Перезапустить Cloudflare Tunnel
```bash
pkill cloudflared
nohup cloudflared tunnel --url http://localhost:8000 > ~/cloudflared.log 2>&1 &
sleep 5
cat ~/cloudflared.log | grep "https://"
```

## Troubleshooting

### Сервер не запускается

```bash
# Проверьте логи
sudo journalctl -u wordpress-mcp-server -n 50

# Проверьте порт
sudo netstat -tlnp | grep 8000
```

### ChatGPT не подключается

```bash
# Проверьте 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:

1. **Используйте Application Password вместо основного пароля:**
   - В WordPress: Users → Profile → Application Passwords
   - Создайте новый Application Password для MCP
   
2. **Добавьте переменные окружения:**
   ```bash
   # Создайте .env файл
   echo "WORDPRESS_URL=https://your-site.com/" > .env
   echo "WORDPRESS_USERNAME=your-username" >> .env
   echo "WORDPRESS_PASSWORD=your-app-password" >> .env
   ```

3. **Добавьте API Key аутентификацию:**
   - Генерируйте уникальный API ключ
   - Проверяйте header `X-API-Key` на каждом запросе

4. **Используйте HTTPS:**
   - Настройте Nginx/Apache с SSL сертификатом
   - Используйте Let's Encrypt для бесплатных SSL сертификатов

## Требования

- Ubuntu 20.04+
- Python 3.10+
- WordPress с REST API (включен по умолчанию в WordPress 4.7+)
- Root или sudo доступ

## Расширение функционала

### Добавление новых инструментов

Чтобы добавить новые инструменты (например, работа с категориями):

1. Добавьте метод в класс `WordPressMCP`
2. Добавьте Tool в функцию `handle_list_tools()`
3. Добавьте обработку в функцию `handle_call_tool()`

Пример:
```python
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 - используйте свободно!

## Поддержка

При возникновении проблем:
1. Проверьте логи: `sudo journalctl -u wordpress-mcp-server -f`
2. Проверьте статус: `sudo systemctl status wordpress-mcp-server`
3. Протестируйте WordPress API напрямую:
   ```bash
   curl -u "username:password" https://your-site.com/wp-json/wp/v2/posts
   ```

## Авторы

Created with ❤️ using Model Context Protocol

## Ссылки

- [MCP Documentation](https://modelcontextprotocol.io/)
- [WordPress REST API](https://developer.wordpress.org/rest-api/)
- [FastAPI Documentation](https://fastapi.tiangolo.com/)