一个强大且安全的Model Context Protocol (MCP)服务器,用于与WordPress集成。此服务器允许Claude Desktop和Claude Code通过REST API与WordPress站点进行交互,具有全面的错误处理、最佳的安全实践和类型安全性。
必需:
brew install nodecurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && source ~/.nvm/nvm.sh && nvm install --ltswinget install OpenJS.NodeJS.LTSnode --versionnpm --version如果没有安装Node.js,Claude Desktop无法运行此服务器。
这是使用WordPress MCP Server与Claude Desktop最简单的方法。
⚠️ 这一步是必需的。 Claude Desktop需要编译后的dist/文件夹和依赖项来运行。
git clone https://github.com/DannyyTv/WordPress-MCP-Server.git
cd WordPress-MCP-Server
npm install
npm run build
这些步骤的作用:
npm install - 下载所有所需的Node.js依赖项(服务器所需)npm run build - 将TypeScript编译到dist/文件夹中的JavaScript用户 > 个人资料你的WordPress REST API URL通常是:
https://your-site.com
(/wp-json/wp/v2/部分会由服务器自动添加)
打开你的Claude Desktop配置文件:
~/.config/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json在mcpServers下添加以下配置:
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["/Users/YOUR-USERNAME/WordPress-MCP-Server/dist/index.js"],
"env": {
"WORDPRESS_URL": "https://your-wordpress-site.com",
"WORDPRESS_USERNAME": "your-email@example.com",
"WORDPRESS_APP_PASSWORD": "your-application-password"
}
}
}
}
重要: 替换实际的WordPress凭证:
WORDPRESS_URL: 你的WordPress站点URL(例如,https://mindsnapz.de)WORDPRESS_USERNAME: 你的WordPress用户名或电子邮件WORDPRESS_APP_PASSWORD: 在步骤2中创建的应用密码更新配置后,完全关闭并重新启动Claude Desktop以使更改生效。
然后,WordPress工具将在Claude中可用。如果遇到“连接失败”错误:
node --version 应显示18.0.0或更高版本dist/index.js路径在配置中是否正确为了本地测试服务器或在自动化脚本中使用:
export WORDPRESS_URL=https://your-wordpress-site.com
export WORDPRESS_USERNAME=your-email@example.com
export WORDPRESS_APP_PASSWORD=your-application-password
npm run build
npm start
cp .env.example .env
编辑.env文件,填写你的WordPress凭证:
WORDPRESS_URL=https://your-wordpress-site.com
WORDPRESS_USERNAME=your-email@example.com
WORDPRESS_APP_PASSWORD=your-application-password
然后运行:
npm run build
npm start
注意:.env文件从进程的当前工作目录加载。如果GUI应用程序(如Claude Desktop)从不同的工作目录启动进程,则可能找不到.env文件。在这种情况下,请将变量设置为操作系统环境变量或确保进程从仓库目录运行。
对于Claude Desktop特别:
claude_desktop_config.json的env字段中设置凭证(参见方法1,步骤4)macOS:添加到~/.zprofile或~/.bash_profile:
export WORDPRESS_URL="https://your-site.com"
export WORDPRESS_USERNAME="your-email@example.com"
export WORDPRESS_APP_PASSWORD="your-app-password"
重启Claude Desktop以使更改生效。
Windows:设置 > 系统 > 环境变量 > 新用户变量:
WORDPRESS_URL = https://your-site.comWORDPRESS_USERNAME = your-email@example.comWORDPRESS_APP_PASSWORD = your-app-password重启Claude Desktop以使更改生效。
Linux:添加到~/.bashrc或~/.zshrc:
export WORDPRESS_URL="https://your-site.com"
export WORDPRESS_USERNAME="your-email@example.com"
export WORDPRESS_APP_PASSWORD="your-app-password"
重启Claude Desktop(或运行source ~/.bashrc)。
# 初始化服务器:
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0.0"}}}' | npm start
# 列出可用工具:
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | npm start
# 测试WordPress连接:
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"test_wordpress_connection","arguments":{}}}' | npm start
为了热重载开发:
npm run dev
然后在另一个终端中,按照方法2所示进行MCP请求测试。
此MCP服务器使用文件日志记录以防止干扰Stdio JSON-RPC通信。所有日志消息都写入日志文件而不是stdout/stderr。
默认日志文件位置:
~/.wordpress-mcp/server.log
实时查看日志:
tail -f ~/.wordpress-mcp/server.log
查看最近的日志:
cat ~/.wordpress-mcp/server.log
你可以使用环境变量自定义日志行为:
LOG_FILE - 自定义日志路径覆盖默认的日志文件位置:
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["/path/to/WordPress-MCP-Server/dist/index.js"],
"env": {
"WORDPRESS_URL": "https://your-site.com",
"WORDPRESS_USERNAME": "your-email@example.com",
"WORDPRESS_APP_PASSWORD": "your-app-password",
"LOG_FILE": "/custom/path/to/server.log"
}
}
}
}
DISABLE_LOGGING - 完全禁用日志关闭日志以减少开销:
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["/path/to/WordPress-MCP-Server/dist/index.js"],
"env": {
"WORDPRESS_URL": "https://your-site.com",
"WORDPRESS_USERNAME": "your-email@example.com",
"WORDPRESS_APP_PASSWORD": "your-app-password",
"DISABLE_LOGGING": "true"
}
}
}
}
LOG_LEVEL - 控制详细程度设置日志级别(error, warn, info, debug):
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["/path/to/WordPress-MCP-Server/dist/index.js"],
"env": {
"WORDPRESS_URL": "https://your-site.com",
"WORDPRESS_USERNAME": "your-email@example.com",
"WORDPRESS_APP_PASSWORD": "your-app-password",
"LOG_LEVEL": "debug"
}
}
}
}
问题:日志文件未创建
~/.wordpress-mcp/是否存在问题:写入日志时权限被拒绝
/tmp/wordpress-mcp-server.log~/.wordpress-mcp/的文件权限LOG_FILE路径问题:日志文件过大
> ~/.wordpress-mcp/server.logDISABLE_LOGGING=true,如果不需要日志此MCP服务器使用**Stdio(标准输入/输出)**进行JSON-RPC 2.0通信。服务器从标准输入读取JSON-RPC请求,并将响应写入标准输出。这种设计使得可以直接与Claude工具集成。
Stdio传输提供了:
对于其他传输方式(HTTP/SSE),需要单独实现。目前,此服务器专注于与Claude原生工具的最佳集成。
create_wordpress_post创建一个新的WordPress帖子。
参数:
title(必需):帖子标题(最多255个字符)content(必需):帖子内容(HTML或纯文本)status:帖子状态(publish, draft, private) - 默认:draftexcerpt:帖子摘要(可选)categories:类别ID数组(可选)tags:标签ID数组(可选)示例:
创建一个标题为“Hello World”的新博客帖子,内容为“这是使用MCP服务器发布的第一个帖子!”
update_wordpress_post更新现有的WordPress帖子。
参数:
id(必需):要更新的帖子IDtitle:新的标题(可选)content:新的内容(可选)status:新的状态(可选)excerpt:新的摘要(可选)categories:新的类别ID(可选)tags:新的标签ID(可选)示例:
更新帖子ID 123,将其状态更改为“publish”,并将标题更改为“更新后的标题”
delete_wordpress_post删除WordPress帖子。
参数:
id(必需):要删除的帖子IDforce:永久删除(true)或将帖子移至回收站(false) - 默认:false示例:
删除帖子ID 456,将其移至回收站
list_wordpress_posts列出WordPress帖子,带有过滤选项。
参数:
per_page:每页帖子数(1-100) - 默认:10page:页码 - 默认:1status:按状态筛选(publish, draft, private, pending, future, any) - 默认:anysearch:标题和内容的搜索词author:按作者ID筛选categories:按类别ID筛选tags:按标签ID筛选order:排序顺序(asc, desc) - 默认:descorderby:按字段排序(date, id, title, slug, modified) - 默认:dateinclude_content:在结果中包含帖子内容预览 - 默认:false示例:
列出最近发布的5篇帖子及其内容
get_wordpress_post通过ID获取单个WordPress帖子及其全部内容。
参数:
id(必需):要检索的帖子IDcontext:请求上下文(view, embed, edit) - 默认:edit示例:
获取帖子ID 123的全部详情
get_wordpress_categories获取WordPress类别,用于内容组织,带有可选分页。
参数:
per_page:每页结果数(1-100) - 默认:100page:页码 - 默认:1返回值: 类别列表,包括名称、slug、描述和帖子数量。
注意: 较大的per_page值可能导致较大的响应大小。为了最佳性能,使用per_page: 10-20用于类别/标签。
示例:
获取WordPress类别(第一页,100个结果)
获取WordPress类别第二页
获取WordPress类别第一页,每页50个结果
get_wordpress_tags获取WordPress标签,用于内容标记,带有可选分页。
参数:
per_page:每页结果数(1-100) - 默认:100page:页码 - 默认:1返回值: 标签列表,包括名称、slug、描述和帖子数量。
注意: 较大的per_page值可能导致较大的响应大小。为了最佳性能,使用per_page: 10-20用于类别/标签。
示例:
获取WordPress标签(第一页,100个结果)
获取WordPress标签第二页
获取WordPress标签第一页,每页50个结果
test_wordpress_connection测试WordPress API连接和身份验证。
示例:
测试WordPress连接
.env文件中的环境变量:
# 必需
WORDPRESS_URL=https://your-site.com
WORDPRESS_USERNAME=your-username
WORDPRESS_APP_PASSWORD=your-app-password
# 可选
MCP_SERVER_NAME=wordpress-mcp
MCP_SERVER_VERSION=1.0.0
LOG_LEVEL=info # error, warn, info, debug
REQUEST_TIMEOUT=30000 # 毫秒
# 安装依赖
npm install
# 开发模式带热重载
npm run dev
# 构建生产版本
npm run build
# 运行代码检查
npm run lint
# 类型检查
npm run type-check
身份验证失败(401)
权限被拒绝(403)
publish_posts权限REST API未找到(404)