内容
# wp-mcp-router
[](https://www.npmjs.com/package/wp-mcp-router)
[](https://github.com/danieliser/wp-mcp-router/actions/workflows/ci.yml)
[](./LICENSE)
**适用于所有 WordPress 站点的单一 MCP 连接。**
wp-mcp-router 是一个 MCP(stdio)服务器,用于前端连接任意数量运行 [Abilities API](https://developer.wordpress.org/news/2026/02/from-abilities-to-ai-agents-introducing-the-wordpress-mcp-adapter/) 的 WordPress 站点,通过 [`mcp-adapter`](https://github.com/WordPress/mcp-adapter) 插件。 与其为每个站点设置一个 MCP 服务器,不如连接您的 AI 客户端(Claude Desktop / Claude Code / Cursor / Codex)一次,并按名称寻址每个站点。路由器发现每个站点实际可以执行的操作,允许您跨所有站点搜索功能,并保护执行 - 在没有该功能的站点上调用功能会返回 *"不在 B 上;可在 A 和 C 上使用"* 而不是不透明的错误。
## 快速入门
```bash
npx wp-mcp-router setup
```
向导连接您的第一个站点(打开您的浏览器;您批准,WordPress 生成一个限定范围的应用密码,您粘贴回来),并将服务器连接到您的 AI 客户端(自动检测 Claude Desktop / Claude Code / Cursor / Codex)。重启您的客户端,您就连接成功了。
如果您更喜欢单独执行这些步骤?
```bash
npx wp-mcp-router add-site example.com # 连接一个站点(重复每个站点)
npx wp-mcp-router install # 添加到您的 AI 客户端配置中
```
您可以随时使用 `add-site` 添加更多站点 - 它们都位于一个连接后面。 `npx wp-mcp-router --doctor` 检查连接性并列出每个站点的功能。
每个目标站点都需要激活 [`mcp-adapter`](https://github.com/WordPress/mcp-adapter) 插件(它注册了路由器通信的 `/wp-json/mcp/…` 端点)。 `add-site` 和 `--doctor` 会检查它:如果已安装但未激活,它们会提供激活它,如果它丢失了,它们会引导您完成一次性安装(这需要以可以管理插件的用户身份连接)。 `add-site` 还提供 [Block MCP](https://github.com/danieliser/block-mcp/releases/latest),一个推荐的配套插件,用于注册内容功能(帖子、块、媒体、术语)供路由器调用。
## 工具
| 工具 | 用途 |
| --- | --- |
| `wp_list_sites` | 站点 + 标签 + 功能计数 + 命名空间组。 |
| `wp_search_abilities` | 跨站点关键词搜索;结果按站点分组。 |
| `wp_get_ability` | 一个站点上一个功能输入/输出模式。 |
| `wp_run` | 在**一个**站点上执行功能(受保护)。 |
| `wp_run_across` | 并行在**多个**站点上执行相同功能。 |
| `wp_get_content_by_url` | 解析 URL/路径 → 帖子,可选地包含完整内容。 |
每个站点定位工具都采用 `site` 参数;省略它以使用配置的 `defaultSite`。
## 配置
站点注册表包含凭据,因此**从不提交**。在运行时按优先级顺序解析:
1. `WP_MCP_ROUTER_SITES` — 整个注册表作为一个环境变量中的内联 JSON。
2. `WP_MCP_ROUTER_CONFIG` — JSON 文件的路径。
3. 包旁边 `./sites.json` (gitignored)。
4. `~/.config/wp-mcp-router/sites.json` (Windows:`%APPDATA%\wp-mcp-router\sites.json`)。
参见 [`sites.example.json`](./sites.example.json)。 每个站点都需要一个 `url`,一个 `username`,和一个 WordPress [应用密码](https://make.wordpress.org/core/2020/11/05/application-passwords-integration-guide/) (`appPassword`):
```jsonc
{
"defaultSite": "main",
"sites": [
{ "id": "main", "url": "https://example.com", "username": "agent", "appPassword": "xxxx xxxx …", "tags": ["电子商务"] }
]
}
```
有用的站点/全局选项:
- `endpoint` — 覆盖 MCP 端点(默认 `<url>/wp-json/mcp/mcp-adapter-default-server`)。
- `customHeaders` — 合并到每个请求中的额外头部(Cloudflare Access 服务令牌,WAF 允许列表头部等)。
- `requestTimeoutMs` (默认 120000)/ `initTimeoutMs` (默认 25000)— 调用和握手超时;也可以通过 `WP_MCP_ROUTER_TIMEOUT_MS` / `WP_MCP_ROUTER_INIT_TIMEOUT_MS` 设置。
## 安全
身份验证是每个站点的 WordPress 应用密码(基于 HTTPS 的基本身份验证)— 限定范围,可撤销,绝不是您的真实登录;通过删除和重新生成应用密码来轮换。凭据仅存在于 gitignored 注册表或环境变量中,绝不在存储库或 npm 包中。每个路由调用都写入本地审计日志(`~/.local/state/wp-mcp-router/audit.jsonl`,Windows:`%LOCALAPPDATA%\wp-mcp-router\audit.jsonl`;参数被删除,属主权限;`WP_MCP_ROUTER_AUDIT=off` 禁用它,`WP_MCP_ROUTER_AUDIT_FILE` 重新定位它)。
**推荐:** 每个站点都连接一个专用的有限角色用户 — 足以编辑内容,不足以执行代码或管理用户 — 因此泄露的凭据具有较小的爆炸半径。
## 许可证
GPL-2.0-or-later。