# 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)