MCP Server Local WP 是一个基于 Model Context Protocol (MCP) 的服务器,它能让 Claude 和 Cursor 等 AI 助手直接以只读方式访问你通过 Local by Flywheel 创建的 WordPress 数据库。有了它,AI 无需再猜测表结构,也不用盲目编写 SQL 查询,就能直接理解你的实际数据。
将以下内容添加到你的 Cursor MCP 配置文件(.cursor/mcp.json)中:
{
"mcpServers": {
"mcp-local-wp": {
"command": "npx",
"args": [
"-y",
"@verygoodplugins/mcp-local-wp@latest"
]
}
}
}
在 macOS 系统中,将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json 文件中;在 Windows 系统中,添加到 %APPDATA%\\Claude\\claude_desktop_config.json 文件中:
{
"mcpServers": {
"mcp-local-wp": {
"command": "npx",
"args": [
"-y",
"@verygoodplugins/mcp-local-wp@latest"
]
}
}
}
git clone https://github.com/verygoodplugins/mcp-local-wp.git
cd mcp-local-wp
npm install
npm run build
{
"mcpServers": {
"mcp-local-wp": {
"command": "node",
"args": [
"/full/path/to/mcp-local-wp/dist/index.js"
]
}
}
}
对于非 Local 设置或自定义配置,可使用以下配置:
{
"mcpServers": {
"mcp-local-wp": {
"command": "npx",
"args": [
"-y",
"@verygoodplugins/mcp-local-wp@latest"
],
"env": {
"MYSQL_DB": "local",
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASS": "root"
}
}
}
}
获取最近发布的文章:
SELECT ID, post_title, post_date, post_status
FROM wp_posts
WHERE post_type = 'post' AND post_status = 'publish'
ORDER BY post_date DESC
LIMIT 5;
-- 查看所有表
SHOW TABLES;
-- 检查表结构
DESCRIBE wp_posts;
-- 获取表信息
SHOW TABLE STATUS LIKE 'wp_%';
-- 获取网站选项
SELECT option_name, option_value
FROM wp_options
WHERE option_name IN ('blogname', 'blogdescription', 'admin_email');
-- 查找激活的插件
SELECT option_value
FROM wp_options
WHERE option_name = 'active_plugins';
-- 获取用户信息
SELECT user_login, user_email, display_name
FROM wp_users
LIMIT 10;
-- 文章元数据
SELECT p.post_title, pm.meta_key, pm.meta_value
FROM wp_posts p
JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'post' AND pm.meta_key = '_edit_last';
使用原始的 mcp-server-mysql 与 Local by Flywheel 时,开发者会遇到以下挑战:
lx97vbzE7),当站点重启时这些标识符会改变。这个 MCP 服务器通过以下方式自动检测你正在运行的 Local by Flywheel MySQL 实例:
mysqld 实例。对本地 WordPress 数据库执行只读 SQL 查询。 输入字段:
sql(字符串):单个只读语句(SELECT/SHOW/DESCRIBE/EXPLAIN)params(字符串数组):? 占位符的可选参数值示例用法:
-- 带参数
SELECT * FROM wp_posts WHERE post_status = ? ORDER BY post_date DESC LIMIT ?;
-- params: ["publish", "5"]
-- 直接查询
SELECT option_name, option_value FROM wp_options WHERE option_name LIKE '%theme%';
SHOW TABLES;
DESCRIBE wp_users;
使用 INFORMATION_SCHEMA 检查数据库架构。
table 参数:返回该表的列和索引示例:
// 列出所有表
{
"tool": "mysql_schema",
"args": {}
}
// 检查特定表
{
"tool": "mysql_schema",
"args": { "table": "wp_posts" }
}
当首次尝试使用 mcp-server-mysql 与 Local by Flywheel 时,遇到了以下问题:
/Users/.../Local/run/lx97vbzE7/mysql/mysqld.sock)中的 lx97vbzE7 每次重启 Local 时都会改变。ps aux | grep mysqld | grep -v grep
通过此命令查找活动的 MySQL 实例并提取其配置文件路径。
// 从进程参数中:--defaults-file=/Users/.../Local/run/lx97vbzE7/conf/mysql/my.cnf
// 提取站点目录并构建套接字路径
const configPath = extractFromProcess();
const siteDir = path.dirname(path.dirname(path.dirname(configPath)));
const socketPath = path.join(siteDir, 'mysql/mysqld.sock');
local)。root/root)。~/Library/Application Support/Local/run/
├── lx97vbzE7/ # 动态站点 ID(重启时更改)
│ ├── conf/mysql/my.cnf # 读取此文件获取端口信息
│ └── mysql/mysqld.sock # 通过此套接字连接
└── WP7lolWDi/ # 另一个站点(如果有多个正在运行)
├── conf/mysql/my.cnf
└── mysql/mysqld.sock
服务器会智能地找到活动站点并连接到正确的 MySQL 实例。
本项目采用 GPL-3.0-or-later 许可证,详情请参阅 LICENSE 文件。作为一个专注于 WordPress 的工具,我们秉持 copyleft 理念,确保其对社区免费开放。
git clone https://github.com/verygoodplugins/mcp-local-wp.git
cd mcp-local-wp
npm install
npm run build
node dist/index.js
npm run dev
此命令会以 TypeScript 模式运行服务器,并监视更改。
npm run lintnpm run lint:fixnpm run formatnpm run format:check通过 ESLint + Prettier 统一 MCP 服务器的标准。
“未找到活动的 MySQL 进程”
“未找到 MySQL 套接字”
连接被拒绝
权限被拒绝
如果自动检测失败,你可以手动配置连接:
export MYSQL_SOCKET_PATH="/path/to/your/local/site/mysql/mysqld.sock"
export MYSQL_DB="local"
export MYSQL_USER="root"
export MYSQL_PASS="root"
通过设置 DEBUG 启用调试日志:
DEBUG=mcp-local-wp mcp-local-wp
欢迎贡献代码!请随时提交拉取请求。
git checkout -b feature/your-feature-name。npm run build。由 Jack Arturo 在 Very Good Plugins 用 ❤️ 构建 · 为开源社区精心打造