npm package: @sheferai/wp-mcp-server
Description: MCP server for publishing articles to WordPress via REST API (Cursor, Claude Desktop)
Latest version: 1.0.0

# WordPress MCP Server

MCP-сервер для публикации статей на сайте WordPress через [Model Context Protocol](https://modelcontextprotocol.io/) (TypeScript SDK). Позволяет из Cursor, Claude Desktop и других MCP-клиентов создавать посты и получать список постов на заданном WordPress-сайте.

## Возможности

- **Создание постов** — публикация статей (черновик или сразу в публикацию) с заголовком, текстом и опциональным excerpt.
- **Список постов** — получение последних постов с сайта (для проверки и выбора ID).

Сайт по умолчанию: [https://sheferai.ru/](https://sheferai.ru/). Аутентификация через [WordPress Application Passwords](https://developer.wordpress.org/rest-api/reference/application-passwords/) (REST API).

## Требования

- Node.js 18+
- WordPress с включённым REST API и паролем приложения для пользователя

## Установка

```bash
cd wp-mcp
npm install
```

## Настройка

1. Скопируйте файл с примером переменных окружения:
   ```bash
   copy .env.example .env
   ```
2. Откройте `.env` и задайте:
   - `WP_URL` — URL сайта (по умолчанию `https://sheferai.ru`)
   - `WP_USER` — логин пользователя WordPress
   - `WP_APP_PASSWORD` — пароль приложения (создаётся в админке: Пользователи → Профиль → Пароли приложений)

Для сайта sheferai.ru можно использовать учётную запись и пароль приложения, выданные для этого проекта. Пример (подставьте свой пароль приложения в `.env`):

- `WP_USER=shefshefer`
- `WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx` (пароль приложения из профиля WordPress)

Логин и пароль храните только в `.env`; не коммитьте `.env` в репозиторий.

## Запуск

- **Разработка (без сборки):**
  ```bash
  npx tsx src/index.ts
  ```
- **Сборка и запуск:**
  ```bash
  npm run build
  npm start
  ```

Сервер работает по **stdio**: клиент (Cursor, Claude Desktop и т.п.) запускает процесс и общается с ним через stdin/stdout. В конфиге MCP укажите команду запуска, например:

```json
{
  "mcpServers": {
    "wordpress": {
      "command": "node",
      "args": ["C:\\Users\\user\\wp-mcp\\dist\\index.js"],
      "env": {
        "WP_URL": "https://sheferai.ru",
        "WP_USER": "shefshefer",
        "WP_APP_PASSWORD": "ваш_пароль_приложения"
      }
    }
  }
}
```

Либо запуск через `npx tsx` (если не собираете в `dist`):

```json
"command": "npx",
"args": ["tsx", "C:\\Users\\user\\wp-mcp\\src\\index.ts"]
```

Переменные окружения можно задать в `env` в конфиге MCP или в `.env` в каталоге проекта.

## Логирование

Логи выводятся в stderr, чтобы не смешиваться с MCP-протоколом (который идёт по stdout). Уровень задаётся переменной окружения:

- `LOG_LEVEL=debug` — максимум информации (запросы, ответы API)
- `LOG_LEVEL=info` — основные события (по умолчанию)
- `LOG_LEVEL=warn` — предупреждения
- `LOG_LEVEL=error` — только ошибки

При ошибках WordPress API в логах выводятся код ответа и тело ответа сервера для отладки.

## Инструменты MCP

| Инструмент | Описание |
|------------|----------|
| `wordpress_create_post` | Создаёт пост: заголовок, контент (HTML), статус (`draft` / `publish` и др.), опционально excerpt. |
| `wordpress_list_posts` | Возвращает список последних постов (параметр `per_page`, по умолчанию 10). |

## Структура проекта

```
wp-mcp/
├── src/
│   ├── index.ts      # Точка входа, регистрация MCP-инструментов
│   ├── wordpress.ts  # Запросы к WordPress REST API (создание, список постов)
│   └── logger.ts     # Логгер по уровням (debug/info/warn/error)
├── .env.example      # Пример переменных окружения
├── package.json
├── tsconfig.json
└── README.md
```

## Безопасность

- Не коммитьте файл `.env` и реальные пароли в репозиторий.
- Используйте только пароли приложений WordPress, не основной пароль учётной записи.
- Храните `WP_APP_PASSWORD` в переменных окружения или в локальном `.env`.

## Публикация на npm

Чтобы выложить пакет на [npmjs.com](https://www.npmjs.com):

1. **Аккаунт npm**  
   Зарегистрируйтесь на [npmjs.com](https://www.npmjs.com/signup), если ещё нет.

2. **Вход в npm** (в терминале в папке проекта):
   ```bash
   npm login
   ```
   Введите логин, пароль и email от npm.

3. **Имя пакета**  
   Используется scoped-имя `@sheferai/wp-mcp-server` (пакет под вашим аккаунтом npm). Если ваш логин npm другой — замените `sheferai` в `package.json` на свой логин.

4. **Сборка и публикация**:
   ```bash
   npm run build
   npm publish --access public
   ```
   Для scoped-пакетов (`@логин/имя`) нужен флаг `--access public`, иначе пакет будет считаться платным/приватным. Перед публикацией автоматически выполнится сборка. В пакет попадут только `dist/`, `README.md`, `.env.example`, `LICENSE`.

5. **Проверка без публикации** (что попадёт в архив):
   ```bash
   npm pack --dry-run
   ```

После успешной публикации пакет будет доступен по `npm install @sheferai/wp-mcp-server`.

## Лицензия

MIT.