WP MCP审计
通过MCP(模型上下文协议)进行远程WordPress/WooCommerce诊断和修复。不需要SSH。
AI Client (Claude Desktop / Cursor)
| MCP Protocol (stdio)
|
MCP Server (Node.js)
| HTTPS REST API (Basic Auth)
|
WordPress Plugin
| Runs checks, reads files, queries DB, applies fixes
|
Client's WordPress Site安装 WordPress插件 在客户网站上。通过连接 MCP服务器 来自任何AI客户端。运行诊断程序、阅读插件/主题源代码、查询数据库和应用修复程序——所有这些都是对话式的。
快速开始
1.安装WordPress插件
上传 wp-mcp-audit/ 给你的客户 wp-content/plugins/ 目录并激活它。
要求: PHP 7.4+,WordPress 5.8+
该插件创建了一个“审计员”角色,并在激活时注册自定义功能。管理员自动获得所有功能。
2.创建应用程序密码
在客户端的WordPress管理中,转到 用户>个人资料>应用程序密码.创建API访问的密码。
3.配置MCP服务器
创建 ~/.wp-audit/sites.json:
{
"sites": [
{
"id": "client-acme",
"label": "ACME Corp Website",
"url": "https://acme.example.com",
"username": "audit-user",
"application_password": "xxxx xxxx xxxx xxxx",
"features": ["woocommerce"]
}
]
}4.添加到克劳德桌面
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"wp-audit": {
"command": "npx",
"args": ["-y", "mcp-server-wp-audit"],
"env": {
"WP_AUDIT_SITES_CONFIG": "~/.wp-audit/sites.json"
}
}
}
}或者从本地构建运行:
{
"mcpServers": {
"wp-audit": {
"command": "node",
"args": ["/path/to/mcp-server-wp-audit/dist/bin/wp-audit-mcp.js"],
"env": {
"WP_AUDIT_SITES_CONFIG": "~/.wp-audit/sites.json"
}
}
}
}5.开始审核
在Claude Desktop中,尝试:
“在客户端acme上运行完整诊断”
“客户acme有哪些关键问题?”
“清理客户端acme上过期的瞬态”
“阅读woocommerce的主插件文件并检查是否有任何问题”
“显示与缓存相关的wp_options行”
“修补我的孩子主题中的functions.php以修复损坏的过滤器”
______________________________________________________________________
项目结构
wordpress-mcp-audit/
├── wp-mcp-audit/ # WordPress Plugin (PHP)
│ ├── wp-mcp-audit.php # Plugin bootstrap
│ ├── uninstall.php # Cleanup on uninstall
│ ├── includes/
│ │ ├── class-autoloader.php # PSR-4 autoloader (no Composer needed)
│ │ └── class-plugin.php # Plugin singleton
│ └── src/
│ ├── Api/ # REST controllers (6 files)
│ ├── Checks/ # 48 diagnostic checks (9 categories)
│ ├── Fixes/ # 12 fix classes
│ ├── Security/ # API keys, rate limiter, audit log
│ ├── Admin/ # WP admin settings pages
│ ├── Abilities/ # Roles & capabilities
│ └── Registry/ # Check & fix registries
│
└── mcp-server-wp-audit/ # MCP Server (Node.js/TypeScript)
├── bin/wp-audit-mcp.ts # CLI entry point
└── src/
├── index.ts # Server init, tool registration
├── config/ # Multi-site config, types
├── client/ # REST API client
├── tools/ # 30 MCP tools
├── resources/ # Known conflicts, recommended settings
└── prompts/ # Guided audit workflow______________________________________________________________________
REST API端点
命名空间: wp-mcp-audit/v1
诊断和站点信息
| 方法 | 端点 | 权限 | 描述 |
|---|---|---|---|
| 得到 | /diagnostics | read | 运行所有48个检查 |
| 得到 | /diagnostics/summary | read | 严重性计数 |
| 得到 | /diagnostics/{category} | read | 对一个类别进行检查 |
| 得到 | /diagnostics/{category}/{check_id} | read | 运行一次检查 |
| 得到 | /site-info | read | WordPress网站概述 |
| 得到 | /site-info/environment | read | 服务器环境 |
修复
| 方法 | 端点 | 权限 | 描述 |
|---|---|---|---|
| 得到 | /fixes | fix_safe | 列出可用修复程序 |
| 职位 | /fixes/{fix_id}/preview | fix_safe | 试运行修复程序 |
| 职位 | /fixes/{fix_id}/apply | fix_safe\* | 应用修复程序 |
| 职位 | /fixes/{fix_id}/rollback | fix_safe | 回滚修复 |
\*需要风险修复 wp_mcp_audit_fix_risky.
文件访问
| 方法 | 端点 | 权限 | 描述 |
|---|---|---|---|
| 得到 | /files/plugins | read | 列出已安装的插件 |
| 得到 | /files/themes | read | 列出已安装的主题 |
| 得到 | /files/plugins/{slug} | read | 列出插件中的文件 |
| 得到 | /files/themes/{slug} | read | 列出主题中的文件 |
| 职位 | /files/read | read | 读取插件/主题文件 |
| 职位 | /files/write | fix_risky | 写入文件(带备份) |
| 职位 | /files/patch | fix_risky | 在文件中搜索和替换(带备份) |
| 职位 | /files/rollback | fix_risky | 从备份还原文件 |
数据库
| 方法 | 端点 | 权限 | 描述 |
|---|---|---|---|
| 得到 | /database/tables | read | 列出所有带尺寸的表格 |
| 得到 | /database/tables/{table}/schema | read | 显示表列和索引 |
| 得到 | /database/tables/{table}/sample | read | 预览表中的行 |
| 职位 | /database/query | manage | 运行只读SQL查询(仅限SELECT) |
| 职位 | /database/execute | fix_risky | 运行写SQL查询(插入/更新/删除) |
| 职位 | /database/options/get | read | 阅读特定的WP选项 |
| 职位 | /database/options/search | read | 按名称模式搜索选项 |
所有权限都以前缀 wp_mcp_audit_ (例如。, read = wp_mcp_audit_read).
______________________________________________________________________
MCP工具
MCP服务器中有30个可用工具:
诊断
| 工具 | 说明 |
|---|---|
run_diagnostics | 在网站上运行所有检查 |
run_category_diagnostics | 对特定类别运行检查 |
diagnostics_summary | 获取严重性计数 |
compare_diagnostics | 比较两个站点之间的诊断 |
check_plugin_conflicts | 检查已知的插件冲突 |
修复
| 工具 | 说明 |
|---|---|
list_fixes | 列出可用修复程序 |
preview_fix | 试运行修复程序 |
apply_fix | 应用修复(确认有风险) |
rollback_fix | 回滚以前应用的修复程序 |
站点信息
| 工具 | 说明 |
|---|---|
site_info | WordPress网站概述 |
environment_info | 服务器环境详细信息 |
check_recommended_settings | 将网站与推荐设置进行比较 |
文件访问
| 工具 | 说明 |
|---|---|
list_plugin_files | 列出插件或浏览插件中的文件 |
list_theme_files | 列出主题或浏览主题中的文件 |
read_file | 读取插件或主题文件的源代码 |
write_file | 将新内容写入文件(自动备份) |
patch_file | 在文件中搜索和替换(进行有针对性编辑的最安全方法) |
rollback_file | 从备份还原文件 |
数据库
| 工具 | 说明 |
|---|---|
db_query | 运行只读SQL查询(SELECT/SHOW/DESCRIBE) |
db_execute | 运行写SQL查询(插入/更新/删除,需要确认) |
db_tables | 列出所有具有大小的表,或显示特定表的架构 |
db_table_sample | 预览数据库表中的行 |
db_options | 阅读或搜索WordPress选项 |
多站点
| 工具 | 说明 |
|---|---|
list_sites | 列出已配置的站点 |
add_site | 在配置中添加新站点 |
batch_diagnostics | 跨多个站点运行诊断 |
WooCommerce
| 工具 | 说明 |
|---|---|
wc_health | WooCommerce健康状况摘要 |
wc_order_issues | WooCommerce订单问题 |
报告
| 工具 | 说明 |
|---|---|
generate_report | 生成格式化的审计报告 |
export_report | 将报告导出为JSON或markdown格式 |
______________________________________________________________________
诊断检查(48)
| 类别 | 检查 | 检查的内容 |
|---|---|---|
| 核心 | 6 | WP版本、待定更新、cron运行状况、调试设置、常量、文件系统 |
| 插件 | 5 | 冲突、过时版本、漏洞、已知冲突、非活动插件 |
| 主题 | 3 | WP兼容性,父主题,直接修改 |
| PHP程序 | 5 | PHP版本、错误报告、扩展、限制、错误日志 |
| 数据库 | 5 | 表完整性、大小、孤立数据、自动加载膨胀、表引擎 |
| 服务器 | 5 | Web服务器、SSL、.htaccess、磁盘空间、内存 |
| 安全 | 6 | 文件权限、用户枚举、XML-RPC、登录安全、salts、wp-config |
| WooCommerce | 8 | 状态、模板、网关、发货、API、数据库版本、调度程序、日志 |
| 演出 | 5 | 对象缓存、页面缓存、排队资产、查询计数、瞬态 |
每次检查都会返回一个标准化的结果:
{
"id": "wp-version",
"category": "core",
"label": "WordPress Version",
"status": "warning",
"severity": 7,
"description": "WordPress 6.4 is installed but 6.7 is available.",
"details": { "current": "6.4.3", "latest": "6.7.1" },
"fix": { "id": "manual-update", "type": "manual" },
"timestamp": "2026-02-08T12:00:00+00:00"
}状态值: good, warning, critical, info 严重程度:1(低)至10(严重)
______________________________________________________________________
修复(12)
自动修复(安全、可逆)
| 修复 | 说明 |
|---|---|
flush-cache | 刷新对象缓存、页面缓存、重写规则 |
toggle-plugin | 启用/禁用插件 |
update-option | 安全更新WordPress选项 |
optimize-tables | 在数据库表上运行OPTIMIZE TABLE |
clean-transients | 删除过期的瞬态 |
reschedule-cron | 修复卡住/过期的cron事件 |
wc-recount | WooCommerce:重新计算条款和订单统计数据 |
wc-clear-sessions | 清除过期的WooCommerce会话 |
手册(仅说明)
| 修复 | 说明 |
|---|---|
manual-update | 逐步更新说明 |
manual-server | PHP升级、文件权限、SSL说明 |
有风险(需要确认)
| 修复 | 说明 |
|---|---|
delete-inactive-plugins | 从文件系统中删除非活动插件 |
delete-orphaned-tables | 删除孤立的数据库表 |
所有自动修复程序都会在中创建备份 wp_options (前缀 _wp_mcp_audit_backup_,24小时到期)并支持回滚。
______________________________________________________________________
安全
认证
- WordPress应用程序密码 (HTTPS基本身份验证)-主要身份验证方法
- 自定义API密钥 通过
X-WP-Audit-Keyheader-可选,在WP-admin中管理
API键的前缀为 wmca_,通过哈希存储 wp_hash_password(),并支持细粒度权限(read, fix_safe, fix_risky, manage).
授权
具有专门“审计员”角色的定制功能:
| 能力 | 描述 | 审核员角色 |
|---|---|---|
wp_mcp_audit_read | 运行诊断程序,查看站点信息 | 是 |
wp_mcp_audit_fix_safe | 应用自动修复 | 是 |
wp_mcp_audit_fix_risky | 应用有风险的修复 | 否 |
wp_mcp_audit_manage | 管理API密钥,设置 | 否 |
管理员在插件激活时获得所有四种功能。
速率限制
基于传输,根据API密钥或IP地址:
- 阅读: 60个请求/分钟(可配置)
- 写道: 10个请求/分钟(可配置)
- 退货
429 Too Many Requests随着Retry-After超过标题时
审计日志
所有API访问都记录到自定义数据库表中({prefix}mcp_audit_log)与:
- 时间戳、用户ID、API密钥标签
- 端点、HTTP方法、IP地址
- 请求参数、响应状态
30天后通过WP Cron自动清理日志(可在设置中配置)。
______________________________________________________________________
WP管理页面
激活后,在下面找到这些 工具 在WordPress管理中:
- WP MCP审计 -启用/禁用API,配置速率限制,设置日志保留期
- API密钥 -使用per-key权限生成、查看和吊销API密钥
______________________________________________________________________
发展
MCP服务器
cd mcp-server-wp-audit
npm install
npm run build # Compile TypeScript
npm run dev # Watch mode
npm start # Run the server需要Node.js 18+。
WordPress插件
无需构建步骤。该插件包含自己的PSR-4自动加载器,在客户端站点上无需Composer即可工作。
对于使用Composer自动加载的开发:
cd wp-mcp-audit
composer install______________________________________________________________________
多站点管理
MCP服务器支持从单个配置管理多个WordPress站点。网站存储在 ~/.wp-audit/sites.json 默认情况下(可通过配置 WP_AUDIT_SITES_CONFIG 有人)。
{
"sites": [
{
"id": "client-acme",
"label": "ACME Corp Website",
"url": "https://acme.example.com",
"username": "audit-user",
"application_password": "xxxx xxxx xxxx xxxx",
"api_key": "wmca_optional_api_key",
"features": ["woocommerce"]
},
{
"id": "client-beta",
"label": "Beta Store",
"url": "https://beta.example.com",
"username": "audit-user",
"application_password": "yyyy yyyy yyyy yyyy",
"features": ["woocommerce"]
}
]
}使用 batch_diagnostics 一次在所有站点上运行检查,或 compare_diagnostics 并排比较两个站点。
______________________________________________________________________
卸载
当通过WordPress管理员删除插件时, uninstall.php 将:
- 放下
{prefix}mcp_audit_log桌子 - 删除全部
_wp_mcp_audit_*选项(备份、设置、API密钥) - 从所有角色中删除审核员角色和所有自定义功能
______________________________________________________________________
许可证
- WordPress插件:GPL-2.0或更高版本
- MCP服务器:MIT
______________________________________________________________________
由...建造 OBS技术
