# WordPress AI控制MCP服务
`WordPress` `MCP` `AI代理` `内容管理` `自动化`
# WordPress MCP
一个模型上下文协议(MCP)服务器,让 AI 代理能够全面控制 WordPress 站点。通过 46 个 MCP 工具管理文章、页面、媒体、分类、标签、评论、SEO、重定向、Gutenberg 区块、可复用模式、TablePress 表格、插件、用户和站点设置。
专为 **Claude Code** 打造,同时兼容 Claude Agent SDK 及任何支持 MCP 的客户端。
## 工作原理
```
┌─────────────┐ JSON-RPC ┌──────────────────┐ HTTP/Auth ┌─────────────────┐
│ Claude / │ ──────────────▶ │ Python MCP │ ──────────────▶ │ WordPress 站点 │
│ AI 代理 │ │ 代理服务器 │ │ (MCP 适配器) │
│ │ ◀────────────── │ (server.py) │ ◀────────────── │ (mu-plugin) │
└─────────────┘ MCP 工具 └──────────────────┘ JSON-RPC └─────────────────┘
│
sites.json
(多站点配置)
```
单个 Python 代理可管理**无限数量的 WordPress 站点**。每次工具调用包含 `site` 参数以指定目标站点。身份验证使用 WordPress 应用程序密码(WP 5.6+ 内置支持)。
## 功能特性
| 分类 | 工具数 | 功能 |
|------|--------|------|
| **文章与页面** | 9 个工具 | 增删改查、批量状态变更、版本历史、搜索替换 |
| **分类与标签** | 8 个工具 | 支持 Rank Math SEO 的增删改查 |
| **媒体** | 4 个工具 | 从 URL 上传、浏览媒体库、更新元数据、删除 |
| **评论** | 3 个工具 | 列表、审核(批准/标记垃圾/移至回收站)、回复、删除 |
| **Rank Math SEO** | — | 文章和分类的完整 SEO 元数据(标题、描述、焦点关键词、Open Graph、Twitter、Schema、robots) |
| **重定向** | 4 个工具 | Rank Math 重定向增删改查(301/302/307/410/451) |
| **Gutenberg 区块** | 1 个工具 | 发现所有已注册的区块类型及属性 Schema |
| **同步模式** | 5 个工具 | 创建、读取、更新、删除可复用区块 |
| **TablePress** | 5 个工具 | 完整的表格增删改查,含显示选项和可见性设置 |
| **插件** | 2 个工具 | 列出已安装插件、启用/禁用 |
| **用户** | 1 个工具 | 按角色筛选用户列表 |
| **设置** | 3 个工具 | 读写选项、刷新缓存、获取站点信息 |
| **工具** | 1 个工具 | 列出所有已配置的站点 |
**共 46 个工具**,覆盖 WordPress 管理的全部操作面。
## 快速开始
### 1. 安装 WordPress 适配器
```bash
# 在本地构建 PHP 依赖
cd wordpress/
composer install
# 将 vendor/ 和 load-mcp-adapter.php 上传至你的 WordPress 服务器
# 详细说明请参阅 SETUP.md
```
### 2. 配置代理
```bash
# 复制示例配置
cp sites.json.example sites.json
# 填写你的站点信息
```
```json
{
"myblog": {
"url": "https://yourdomain.com/wp-json/mcp/mcp-adapter-default-server",
"username": "YourAdmin",
"password": "xxxx xxxx xxxx xxxx xxxx xxxx"
}
}
```
### 3. 连接到 Claude
**Claude Code** — 添加至 `~/.claude.json`(或让你的 Claude Code 代理帮你配置):
```json
{
"mcpServers": {
"wordpress": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--with", "fastmcp",
"--with", "httpx",
"python",
"/path/to/wordpress-mcp/server.py"
]
}
}
}
```
然后安装工具文档所需的 skill:
```bash
npx skills add 5unnykum4r/wordpress-mcp
```
或手动创建符号链接:
```bash
ln -s /path/to/wordpress-mcp/skill/wordpress-mcp ~/.claude/skills/wordpress-mcp
```
完整配置说明、故障排查及使用示例请参阅 [安装指南](SETUP.md)。
## 工具参考
所有工具的第一个参数均为 `site`。
文章与页面(9 个工具)
| 工具 | 操作 |
|------|------|
| `list_posts` | 列出/筛选文章和页面 |
| `read_post` | 读取完整内容、元数据、SEO |
| `create_post` | 创建文章,含内容、分类、标签、SEO |
| `update_post` | 部分更新任意字段 |
| `delete_post` | 移至回收站或永久删除 |
| `bulk_update_status` | 批量修改多篇文章状态 |
| `list_revisions` | 查看版本历史 |
| `restore_revision` | 还原到历史版本 |
| `search_replace` | 在内容中查找/替换(支持预览模式) |
分类与标签(8 个工具)
| 工具 | 操作 |
|------|------|
| `list_categories` | 列出分类及 Rank Math SEO 数据 |
| `create_category` | 创建分类,可选 SEO 设置 |
| `update_category` | 更新名称、别名、父分类、SEO |
| `delete_category` | 删除分类(文章移至默认分类) |
| `list_tags` | 列出并搜索标签 |
| `create_tag` | 创建新标签 |
| `update_tag` | 更新标签名称、别名、描述 |
| `delete_tag` | 删除标签(文章取消关联) |
媒体(4 个工具)
| 工具 | 操作 |
|------|------|
| `upload_image` | 从 URL 下载并添加到媒体库 |
| `list_media` | 按 MIME 类型筛选浏览 |
| `update_media` | 更新标题、替代文本、描述 |
| `delete_media` | 永久删除 |
评论(3 个工具)
| 工具 | 操作 |
|------|------|
| `list_comments` | 按文章、状态、关键词筛选 |
| `update_comment` | 批准、标记垃圾、移至回收站或回复 |
| `delete_comment` | 永久删除 |
重定向(4 个工具)
| 工具 | 操作 |
|------|------|
| `list_redirections` | 列出 Rank Math 重定向规则 |
| `create_redirection` | 创建 301/302/307/410/451 重定向 |
| `update_redirection` | 修改来源、目标、类型 |
| `delete_redirection` | 删除重定向规则 |
Gutenberg 区块与模式(6 个工具)
| 工具 | 操作 |
|------|------|
| `list_block_types` | 发现已注册区块及 Schema |
| `list_patterns` | 列出可复用/同步模式 |
| `read_pattern` | 读取模式区块内容 |
| `create_pattern` | 创建同步模式 |
| `update_pattern` | 更新模式内容 |
| `delete_pattern` | 删除模式 |
TablePress(5 个工具)
| 工具 | 操作 |
|------|------|
| `list_tablepress_tables` | 列出所有表格 |
| `read_tablepress_table` | 读取数据、选项、可见性 |
| `create_tablepress_table` | 用二维数组创建表格 |
| `update_tablepress_table` | 更新数据、选项、可见性 |
| `delete_tablepress_table` | 永久删除 |
管理(7 个工具)
| 工具 | 操作 |
|------|------|
| `list_plugins` | 列出已安装插件及状态 |
| `toggle_plugin` | 启用或禁用插件 |
| `list_users` | 按角色列出用户 |
| `manage_options` | 读写 WordPress 设置 |
| `clear_cache` | 刷新所有缓存 |
| `get_info` | 站点信息、版本、主题 |
| `list_sites` | 显示已配置的站点 |
## 项目结构
```
wordpress-mcp/
├── README.md ← 本文件
├── SETUP.md ← 完整安装指南及故障排查
├── LICENSE ← MIT 许可证
├── server.py ← Python MCP 代理(FastMCP + httpx)
├── sites.json.example ← 站点配置模板
├── wordpress/
│ ├── load-mcp-adapter.php ← WordPress MU-plugin(服务端)
│ ├── composer.json ← PHP 依赖
│ └── composer.lock
└── skill/
└── wordpress-mcp/ ← Claude Code skill
├── SKILL.md
└── references/ ← 工具文档(7 个文件)
```
## 环境要求
**本地(代理服务器):**
- Python 3.10+
- [uv](https://docs.astral.sh/uv/) 包管理器
- FastMCP 和 httpx(由 `uv run` 自动安装)
**WordPress 服务器:**
- WordPress 5.6+(支持应用程序密码)
- PHP 7.4+
- Composer 包:`wordpress/abilities-api` 和 `wordpress/mcp-adapter`
## 多站点管理
在 `sites.json` 中添加任意数量的 WordPress 站点:
```json
{
"blog": {
"url": "https://blog.example.com/wp-json/mcp/mcp-adapter-default-server",
"username": "admin",
"password": "xxxx xxxx xxxx xxxx xxxx xxxx"
},
"shop": {
"url": "https://shop.example.com/wp-json/mcp/mcp-adapter-default-server",
"username": "admin",
"password": "yyyy yyyy yyyy yyyy yyyy yyyy"
},
"docs": {
"url": "https://docs.example.com/wp-json/mcp/mcp-adapter-default-server",
"username": "editor",
"password": "zzzz zzzz zzzz zzzz zzzz zzzz"
}
}
```
每个站点拥有独立别名,通过 `site="blog"`、`site="shop"` 等参数指定目标站点。添加新站点无需重启代理。
## 贡献
欢迎贡献代码,请提交 Issue 或 Pull Request。
## 许可证
[MIT](LICENSE)