主WP MCP服务器
一个模型上下文协议(MCP)服务器,使像克劳德这样的人工智能助手能够通过 MainWP 仪表盘 REST API。
目录
______________________________________________________________________
概述
MainWP MCP服务器弥合了人工智能助手和WordPress网站管理之间的差距。它允许克劳德(通过克劳德代码):
- 监控所有WordPress网站的健康状况和状态
- 检查并应用WordPress核心、插件和主题的更新
- 跨单个或多个站点管理插件和主题
- 在MainWP仪表板中添加、同步和管理站点
这对于代理商、自由职业者或管理多个WordPress网站的任何人来说都特别有用,他们希望利用人工智能辅助进行日常维护任务。
______________________________________________________________________
特性
43工具 涵盖整个MainWP REST API:
现场管理(14个工具)
- 列表和视图:列出所有网站,获取详细的网站信息,统计网站数量
- 健康:运行运行状况检查,跟踪非MainWP更改
- 同步:强制同步以获取最新的站点数据
- 生命周期:添加、重新连接、断开连接、挂起、取消挂起、删除站点
- 编辑:修改站点设置和组分配
更新管理(9个工具)
- 更新概述:查看整个网络中所有待处理的更新
- WordPress核心:将WordPress更新到最新版本
- 插件:更新单个或所有插件
- 主题:更新单个或所有主题
- 翻译:更新网站翻译
- 忽略管理:忽略/不忽略特定更新,列出忽略的更新
- 干运行模式:预览将应用哪些更新而不进行更改
插件管理(5个工具)
- 库存:列出任何网站上安装的所有插件
- 激活:激活或停用插件
- 安装:从WordPress.org安装插件
- 移除:删除未使用的插件
主题管理(4个工具)
- 库存:列出任何网站上安装的所有主题
- 激活:更改任何网站上的活动主题
- 安装:从WordPress.org安装主题
- 移除:删除未使用的主题
客户管理(5个工具)-专业版
- 客户关系管理:列出、添加、编辑、删除客户端
- 现场分配:将站点分配给客户
成本跟踪(5个工具)-专业版
- 开支:跟踪插件、主题、托管、域名和服务成本
- 续订:监控经常性成本和续订日期
标签管理(2个工具)
- 组织:列出所有标签,按标签获取网站
安全与安保
- 默认情况下进行试运行:首先模拟所有破坏性操作
- 批量确认:多站点操作需要明确确认
- 速率限制:防止服务器不堪重负
- 专业功能处理:需要Pro扩展时清除错误消息
______________________________________________________________________
建筑
┌─────────────────┐ stdio ┌─────────────────┐
│ Claude Code │◄──────────────►│ MainWP MCP │
│ (AI Client) │ │ Server │
└─────────────────┘ └────────┬────────┘
│
│ HTTPS REST API
▼
┌─────────────────┐
│ MainWP Dashboard│
│ (WordPress) │
└────────┬────────┘
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Site 1 │ │ Site 2 │ │ Site N │
│(WP+Child)│ │(WP+Child)│ │(WP+Child)│
└──────────┘ └──────────┘ └──────────┘______________________________________________________________________
先决条件
所需软件
| 软件 | 版本 | 目的 |
|---|---|---|
| Node.js | 18.0.0+ | 运行时环境 |
| npm | 8.0.0+ | 包管理 |
| Git | 任意 | 克隆存储库 |
所需基础设施
- MainWP 仪表盘 -WordPress安装 MainWP仪表板插件 已安装并激活
- 主WP子站点 -您要管理的每个WordPress网站都必须具有 MainWP子插件 已安装并连接到您的仪表板
- REST API访问 -MainWP仪表板必须启用REST API(包含在MainWP 4.0+中)
推荐
- 超文本传输安全协议:您的MainWP仪表板应通过HTTPS提供服务
- PHP 8.1+:在MainWP仪表板上获得最佳性能
- 足够的内存:仪表板上的PHP内存限制为512MB+(50多个站点为1GB)
______________________________________________________________________
安装
步骤1:克隆存储库
git clone https://github.com/yourusername/mainwp-mcp.git
cd mainwp-mcp步骤2:安装依赖项
npm install这将安装:
@modelcontextprotocol/sdk-MCP协议实现axios-API请求的HTTP客户端zod-运行时类型验证dotenv-环境变量管理
步骤3:构建项目
npm run build这将TypeScript编译为JavaScript dist/ 目录。
步骤4:验证安装
npm start您应该看到:
mainwp-mcp v1.0.0 started按 Ctrl+C 停止服务器。
______________________________________________________________________
MainWP仪表板设置
在使用此MCP服务器之前,您需要配置MainWP仪表板。
步骤1:安装MainWP仪表板
如果你还没有:
- 登录您的WordPress管理面板
- 首选 插件→ 新增
- 搜索“MainWP仪表板”
- 点击 立即安装那么 激活
- 完成MainWP设置向导
第二步:连接子站点
对于您要管理的每个WordPress网站:
- 在子站点上,安装并激活 MainWP儿童 插件
- 在MainWP仪表板中,转到 主WP→ 站点→ 新增
- 输入站点URL和管理员凭据
- 点击 添加站点
步骤3:启用REST API
- 在MainWP仪表板中,转到 主WP→ 设置→ REST API
- 确保REST API 启用
- 点击 添加API密钥
- 填写详细信息:
- 描述: Claude Code MCP Server (或任何描述性名称) - 权限:选择要授予的权限 - 阅读:网站、插件、主题、更新(推荐) - 写:更新、插件激活(可选)
- 点击 生成API密钥
- 重要:复制这两个 消费者密钥 和 消费者秘密 立即-秘密不会再出现
步骤4:注意您的API凭据
您需要:
- 仪表板URL例如。,
https://your-mainwp-dashboard.com - 消费者密钥:一个40个字符的十六进制字符串
- 消费者秘密:一个40个字符的十六进制字符串
此服务器使用的API密钥格式为: consumer_key==consumer_secret
______________________________________________________________________
配置
环境变量
创建一个 .env.local 项目根目录中的文件:
cp .env.example .env.local编辑 .env.local 使用您的设置:
# Required: MainWP Dashboard URL
# The full URL to your MainWP Dashboard WordPress installation
MAINWP_DASHBOARD_URL=https://your-mainwp-dashboard.com
# Required: API Key
# Format: consumer_key==consumer_secret (note the double equals sign)
MAINWP_API_KEY=abc123def456...==xyz789...
# Optional: Safety Settings
# Enable dry-run mode by default (recommended: true)
MAINWP_ENABLE_DRY_RUN_BY_DEFAULT=true
# Require explicit confirmation for bulk operations (recommended: true)
MAINWP_REQUIRE_CONFIRMATION_BULK=true
# Optional: Test mode (no side effects)
MAINWP_TEST_MODE=false
# Rate limit: maximum API requests per minute (default: 60)
MAINWP_RATE_LIMIT_PER_MINUTE=60配置选项参考
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
MAINWP_DASHBOARD_URL | 是 | - | 指向MainWP仪表板的完整URL |
MAINWP_API_KEY | 是 | - | 中的API凭据 key==secret 格式 |
MAINWP_ENABLE_DRY_RUN_BY_DEFAULT | 没有 | true | 默认情况下模拟操作 |
MAINWP_REQUIRE_CONFIRMATION_BULK | 没有 | true | 需要确认多站点操作 |
MAINWP_TEST_MODE | 没有 | false | 模拟无副作用的变异操作 |
MAINWP_RATE_LIMIT_PER_MINUTE | 没有 | 60 | 每分钟API最大请求数 |
______________________________________________________________________
Claude代码集成
选项1:全局配置(推荐)
添加到您的Claude Code MCP配置文件中:
Linux/macOS: ~/.config/claude-code/mcp.json 视窗: %APPDATA%\claude-code\mcp.json
{
"mcpServers": {
"mainwp": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/mainwp-mcp/dist/index.js"],
"env": {
"MAINWP_DASHBOARD_URL": "https://your-mainwp-dashboard.com",
"MAINWP_API_KEY": "your_consumer_key==your_consumer_secret",
"MAINWP_ENABLE_DRY_RUN_BY_DEFAULT": "true",
"MAINWP_REQUIRE_CONFIRMATION_BULK": "true",
"MAINWP_TEST_MODE": "false",
"MAINWP_RATE_LIMIT_PER_MINUTE": "60"
}
}
}
}选项2:项目特定配置
创建 .mcp.json 在您的项目目录中:
{
"mcpServers": {
"mainwp": {
"type": "stdio",
"command": "node",
"args": ["./node_modules/mainwp-mcp/dist/index.js"],
"env": {
"MAINWP_DASHBOARD_URL": "https://your-mainwp-dashboard.com",
"MAINWP_API_KEY": "your_consumer_key==your_consumer_secret"
}
}
}
}验证集成
- 添加配置后重新启动Claude Code
- 问Claude:“有哪些MCP工具可用?”
- 你应该看看
mainwp_*列出的工具 - 测试:“列出所有主WP站点”
______________________________________________________________________
可用工具
现场管理工具
mainwp_sites_list
列出所有连接的WordPress网站。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
status | string | 否 | 按状态筛选: connected, disconnected, all |
示例响应:
{
"sites": [
{
"id": "1",
"name": "My Blog",
"url": "https://myblog.com",
"status": "connected",
"wp_version": "6.4.2",
"php_version": "8.2",
"last_sync": "2024-01-15T10:30:00Z"
}
],
"total": 1
}mainwp_sites_get
获取特定网站的详细信息。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 来自MainWP的站点ID |
退货: 全面的网站数据,包括插件、主题、健康评分、数据库大小等。
mainwp_sites_count
获取已连接站点的总数。
参数: 无
mainwp_sites_sync
强制同步站点数据。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 要同步的站点ID |
mainwp_sites_check
在网站上运行健康检查。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 要检查的站点ID |
mainwp_sites_add
将新站点添加到MainWP仪表板。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
url | string | 是 | 网站URL |
admin_username | string | 是 | WordPress管理员用户名 |
name | string | 否 | 站点的显示名称 |
mainwp_sites_reconnect
重新连接已断开连接的站点。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 要重新连接的站点ID |
mainwp_sites_disconnect
断开站点与MainWP的连接(不删除站点)。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 要断开连接的站点ID |
______________________________________________________________________
更新管理工具
mainwp_updates_list
列出所有站点中所有待处理的更新。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 否 | 筛选到特定站点 |
type | string | 否 | 按类型筛选: wp, plugins, themes, all |
示例响应:
{
"updates": [
{
"site_id": "1",
"site_name": "My Blog",
"site_url": "https://myblog.com",
"wp_upgrades": {
"current": "6.4.1",
"new": "6.4.2"
},
"plugin_upgrades": {
"akismet": {
"name": "Akismet",
"version": "5.0",
"new_version": "5.1"
}
}
}
]
}mainwp_updates_apply
应用站点的所有待处理更新。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 要更新的站点ID |
dry_run | boolean | 否 | 不应用模拟(默认值:true) |
mainwp_updates_wp
在网站上更新WordPress核心。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
dry_run | boolean | 否 | 不应用模拟(默认值:true) |
mainwp_updates_plugins
更新网站上的插件。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
plugins | string\[\] | 否 | 特定插件块(全部省略) |
dry_run | boolean | 否 | 不应用模拟(默认值:true) |
mainwp_updates_themes
更新网站上的主题。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
themes | string\[\] | 否 | 特定主题蛞蝓(全部省略) |
dry_run | boolean | 否 | 不应用模拟(默认值:true) |
______________________________________________________________________
插件管理工具
mainwp_plugins_list
列出网站上安装的所有插件。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
status | string | 否 | 筛选器: active, inactive, all |
示例响应:
{
"plugins": [
{
"name": "Akismet Anti-spam",
"slug": "akismet",
"version": "5.1",
"active": true,
"update": null
},
{
"name": "Hello Dolly",
"slug": "hello-dolly",
"version": "1.7.2",
"active": false,
"update": null
}
]
}mainwp_plugins_activate
在网站上激活插件。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
plugin | string | 是 | 插入slug以激活 |
mainwp_plugins_deactivate
停用网站上的插件。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
plugin | string | 是 | 插入slug以停用 |
______________________________________________________________________
主题管理工具
mainwp_themes_list
列出网站上安装的所有主题。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
mainwp_themes_activate
在网站上激活主题。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site_id | string | 是 | 站点ID |
theme | string | 是 | 要激活的主题slug |
mainwp_themes_install
从WordPress.org安装主题。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
slug | string | 是 | 来自WordPress.org的主题片段 |
dry_run | boolean | 否 | 无需安装即可模拟(默认值:true) |
mainwp_themes_delete
从网站中删除主题(不得处于活动状态)。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
slug | string | 是 | 要删除的主题slug |
dry_run | boolean | 否 | 模拟而不删除(默认值:true) |
______________________________________________________________________
扩展站点管理工具
mainwp_sites_edit
在MainWP仪表板中编辑站点设置。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
name | string | 否 | 新显示名称 |
groupids | string | 否 | 逗号分隔的组ID |
dry_run | boolean | 否 | 模拟而不更改(默认值:true) |
mainwp_sites_suspend
暂停站点(禁用监视和更新)。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
dry_run | boolean | 否 | 模拟而不挂起(默认值:true) |
mainwp_sites_unsuspend
取消暂停站点(重新启用监控和更新)。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
dry_run | boolean | 否 | 模拟而不取消挂起(默认值:true) |
mainwp_sites_changes
获取在MainWP之外所做的更改列表(直接WordPress管理员更改)。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
mainwp_sites_remove
从MainWP仪表板中永久删除站点。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
confirmed | boolean | 是 | 必须为true才能确认删除 |
______________________________________________________________________
扩展更新管理工具
mainwp_updates_translations
在网站上更新翻译。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 是 | 站点ID或域 |
dry_run | boolean | 否 | 模拟而不更新(默认值:true) |
mainwp_updates_ignore
忽略插件或主题更新(全局或每个站点)。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
type | string | 是 | plugin 或 theme |
slug | string | 是 | 插件或主题slug |
site | string | 否 | 特定站点(全局省略) |
mainwp_updates_unignore
停止忽略插件或主题更新。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
type | string | 是 | plugin 或 theme |
slug | string | 是 | 插件或主题slug |
site | string | 否 | 特定站点(全局省略) |
mainwp_updates_ignored
列出所有忽略的更新。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
site | string | 否 | 按特定站点筛选 |
______________________________________________________________________
客户端管理工具(专业版)
需要具有客户端报告扩展的MainWP Pro。
mainwp_clients_list
列出所有客户。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
search | string | 否 | 按姓名或电子邮件搜索 |
page | number | 否 | 页码 |
per_page | number | 否 | 每页结果 |
mainwp_clients_get
获取客户的详细信息。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
client | string | 是 | 客户端ID或电子邮件 |
mainwp_clients_add
添加新客户端。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
name | string | 是 | 客户端名称 |
email | string | 是 | 客户端电子邮件 |
company | string | 否 | 公司名称 |
phone | string | 否 | 电话号码 |
address | string | 否 | 街道地址 |
city | string | 否 | 城市 |
state | string | 否 | 州/省 |
zip | string | 否 | 邮政编码 |
country | string | 否 | 国家 |
note | string | 否 | 内部注释 |
selected_sites | string | 否 | 逗号分隔的站点ID |
mainwp_clients_edit
编辑客户信息。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
client | string | 是 | 客户端ID或电子邮件 |
dry_run | boolean | 否 | 模拟而不更改(默认值:true) |
| *(来自add的所有其他字段)* | 否 | 要更新的字段 |
mainwp_clients_delete
删除客户端。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
client | string | 是 | 客户端ID或电子邮件 |
confirmed | boolean | 是 | 必须为true才能确认删除 |
______________________________________________________________________
成本跟踪工具(专业版)
需要带有成本跟踪扩展的MainWP Pro。
mainwp_costs_list
列出所有跟踪的成本。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
search | string | 否 | 按名称搜索 |
type | string | 否 | single 或 recurring |
product_type | string | 否 | plugin, theme, hosting, domain, service, other |
page | number | 否 | 页码 |
per_page | number | 否 | 每页结果 |
mainwp_costs_get
获取特定成本的详细信息。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
cost | string | 是 | 成本ID |
mainwp_costs_add
添加新的成本条目。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
name | string | 是 | 成本名称/描述 |
type | string | 否 | single 或 recurring (默认值:单) |
product_type | string | 否 | 类别(默认:其他) |
price | number | 否 | 成本金额 |
currency | string | 否 | 货币代码(默认值:美元) |
renewal_frequency | string | 否 | monthly, yearly,或 lifetime |
last_renewal | string | 否 | 日期(YYYY-MM-DD) |
next_renewal | string | 否 | 日期(YYYY-MM-DD) |
sites | string | 否 | 逗号分隔的站点ID |
note | string | 否 | 其他注释 |
mainwp_costs_edit
编辑成本条目。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
cost | string | 是 | 成本ID |
dry_run | boolean | 否 | 模拟而不更改(默认值:true) |
| *(来自add的所有其他字段)* | 否 | 要更新的字段 |
mainwp_costs_delete
删除成本条目。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
cost | string | 是 | 成本ID |
confirmed | boolean | 是 | 必须为true才能确认删除 |
______________________________________________________________________
标签管理工具
mainwp_tags_list
列出MainWP中定义的所有标签/组。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
search | string | 否 | 按名称筛选标签 |
mainwp_tags_sites
获取分配给特定标签的所有站点。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
tag | string | 是 | 标记ID或名称 |
______________________________________________________________________
使用示例
一旦与Claude Code集成,您就可以使用自然语言进行交互。
检查站点状态
You: "List all my WordPress sites"
Claude: [Calls mainwp_sites_list]
"You have 5 connected sites:
1. My Blog (https://myblog.com) - WordPress 6.4.2, PHP 8.2
2. Client Site A (https://clienta.com) - WordPress 6.4.2, PHP 8.1
..."检查更新
You: "What updates are available across all sites?"
Claude: [Calls mainwp_updates_list]
"I found updates available:
My Blog (https://myblog.com):
- WordPress: 6.4.1 → 6.4.2
- Akismet: 5.0 → 5.1
- Yoast SEO: 21.5 → 21.6
Client Site A (https://clienta.com):
- WordPress: 6.4.2 (up to date)
- WooCommerce: 8.3.0 → 8.4.0
..."应用更新(模拟运行)
You: "Update plugins on myblog.com"
Claude: [Calls mainwp_updates_plugins with dry_run=true]
"Dry run completed. If applied, these updates would be installed:
- Akismet: 5.0 → 5.1
- Yoast SEO: 21.5 → 21.6
Would you like me to apply these updates for real?"
You: "Yes, apply them"
Claude: [Calls mainwp_updates_plugins with dry_run=false]
"Updates applied successfully:
- Akismet updated to 5.1
- Yoast SEO updated to 21.6"插件管理
You: "What plugins are installed on site ID 3?"
Claude: [Calls mainwp_plugins_list]
"Site 3 has 12 plugins installed:
Active (8):
- Akismet Anti-spam (5.1)
- Yoast SEO (21.6)
- WooCommerce (8.4.0)
...
Inactive (4):
- Hello Dolly (1.7.2)
..."
You: "Deactivate Hello Dolly on that site"
Claude: [Calls mainwp_plugins_deactivate]
"Hello Dolly has been deactivated on site 3."安全检查
You: "Which of my sites have outdated PHP versions?"
Claude: [Calls mainwp_sites_list, analyzes results]
"2 sites are running outdated PHP:
- Old Client Site (https://oldclient.com) - PHP 7.4 (EOL)
- Legacy Site (https://legacy.com) - PHP 8.0 (security fixes only)
I recommend upgrading these to PHP 8.2 or 8.3."______________________________________________________________________
安全功能
干运行模式
默认情况下,所有修改站点的操作都以模拟运行模式运行。这意味着:
- 操作是模拟的,但没有执行
- 你看,没有任何风险,会发生什么
- 您必须明确设置
dry_run: false应用更改
默认情况下禁用干运行 (不建议用于生产):
MAINWP_ENABLE_DRY_RUN_BY_DEFAULT=false批量操作确认
当操作会影响多个站点时,服务器需要明确确认:
You: "Update all plugins on all sites"
Claude: "This would update plugins on 15 sites. Please confirm you want to proceed."禁用此保护措施 (不推荐):
MAINWP_REQUIRE_CONFIRMATION_BULK=false测试模式(无副作用)
对于烟雾测试或演示,您可以启用测试模式以防止任何更改,同时仍在练习工具路径:
MAINWP_TEST_MODE=true启用时,变异工具返回模拟结果,不进行API调用。
速率限制
服务器强制执行速率限制,以防止您的MainWP仪表板不堪重负:
- 默认值:每分钟60个请求
- 超过限制的请求返回错误,并有重试延迟
- 防止您自己的基础设施发生意外DoS
调整速率限制:
MAINWP_RATE_LIMIT_PER_MINUTE=30 # More conservative
MAINWP_RATE_LIMIT_PER_MINUTE=120 # More aggressive______________________________________________________________________
故障排除
服务器无法启动
错误:“缺少必需的环境变量”
确保 MAINWP_DASHBOARD_URL 和 MAINWP_API_KEY 设置。检查:
.env.local存在并且具有正确的值- 如果使用MCP配置
env块具有这两个变量
错误:“找不到模块”
跑 npm run build 编译TypeScript。
API连接问题
错误:“401未经授权”
- 验证您的API密钥是否正确
- 检查格式:
consumer_key==consumer_secret(双倍等于) - 确保未在MainWP中撤销API密钥
错误:“连接被拒绝”或超时
- 验证
MAINWP_DASHBOARD_URL正确且可访问 - 检查您的MainWP仪表板是否正在运行
- 确保防火墙允许连接
Claude代码集成问题
工具未出现在Claude代码中
- 验证
mcp.json语法是有效的JSON - 检查路径
dist/index.js绝对正确 - 配置更改后完全重新启动Claude代码
- 检查Claude Code日志中的MCP连接错误
权限错误
- 确保API密钥在MainWP中具有所需的权限
- 检查读/写权限是否与您尝试执行的操作相匹配
MainWP仪表板问题
显示为断开连接的站点
- 运行同步:使用
mainwp_sites_sync工具 - 检查子站点上的MainWP子插件是否处于活动状态
- 验证是否可以从仪表板访问子站点
更新未显示
- 在站点上强制同步
- 检查MainWP仪表板是否有最近的同步数据
- 验证MainWP子插件版本是否兼容
______________________________________________________________________
发展
项目结构
mainwp-mcp/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server setup
│ ├── clients/
│ │ └── mainwp-api-client.ts # REST API HTTP client
│ ├── tools/
│ │ ├── index.ts # Tool registration
│ │ ├── site-tools.ts # Site management tools
│ │ ├── update-tools.ts # Update tools
│ │ ├── plugin-tools.ts # Plugin tools
│ │ └── theme-tools.ts # Theme tools
│ ├── types/
│ │ └── mainwp-types.ts # TypeScript interfaces
│ ├── schemas/
│ │ └── tool-schemas.ts # Zod validation schemas
│ └── utils/
│ ├── safety.ts # Dry-run & confirmation logic
│ └── error-handling.ts # Error utilities
├── dist/ # Compiled JavaScript (git-ignored)
├── .env.example # Environment template
├── .env.local # Your config (git-ignored)
├── package.json
├── tsconfig.json
└── README.md开发命令
# Install dependencies
npm install
# Run in development mode (with hot reload via tsx)
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Clean build artifacts
npm run clean添加新工具
- 在中创建或编辑文件
src/tools/ - 在中定义工具模式
src/schemas/tool-schemas.ts - 在中注册该工具
src/tools/index.ts - 在中添加相应的API方法
src/clients/mainwp-api-client.ts - 重建:
npm run build
测试
# Test API connection manually
curl -H "Authorization: Bearer YOUR_KEY==YOUR_SECRET" \
https://your-dashboard.com/wp-json/mainwp/v2/sites
# Run a safe smoke test of all tools (test mode, no side effects)
npm run smoke-test
# Run the server and test with Claude Code
npm start______________________________________________________________________
API 参考
此服务器使用 MainWP REST API v2.
认证
所有请求都使用承载令牌身份验证:
Authorization: Bearer {consumer_key}=={consumer_secret}基本URL
https://your-dashboard.com/wp-json/mainwp/v2/使用的关键端点
| 端点 | 方法 | 描述 |
|---|---|---|
/sites | GET | 列出所有网站 |
/sites/{id} | 获取 | 获取网站详细信息 |
/sites/{id}/sync | POST | 同步站点数据 |
/updates | GET | 列出待处理的更新 |
/sites/{id}/plugins | GET | 列出插件 |
/sites/{id}/themes | GET | 列出主题 |
有关API的完整文档,请参阅 MainWP REST API文档.
______________________________________________________________________
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支:
git checkout -b feature/my-feature - 进行更改
- 跑
npm run build以确保其编译 - 提交您的更改:
git commit -m "Add my feature" - 推你的叉子:
git push origin feature/my-feature - 打开拉取请求
指南
- 遵循现有代码样式
- 为新代码添加TypeScript类型
- 更新新功能的文档
- 提交前使用真实的MainWP仪表板进行测试
______________________________________________________________________
许可证
MIT许可证-请参阅 许可证 了解详情。
______________________________________________________________________
致谢
开发状态
看 project_status.md 了解最近的发展活动和背景。
