使用说明
WordPress MCP服务器
用于WordPress集成的强大、安全的模型上下文协议(MCP)服务器。该服务器允许Claude Desktop和Claude Code通过REST API与WordPress网站交互,提供全面的错误处理、安全最佳实践和类型安全。
特性
- ✅ 完整的WordPress集成:创建、更新、删除和列出帖子
- 🔒 安全第一:应用程序密码验证、标准TLS验证、输入验证
- 🛡️ 稳健的错误处理:全面的错误捕捉和用户友好的消息
- 📝 类型安全:带Zod验证的完整TypeScript实现
- 🚀 演出:可配置超时、连接测试、优化请求
- 📊 监控:具有可配置级别的结构化日志记录
- 🔄 MCP兼容性:适用于Claude Desktop和Claude Code(基于Stdio)
- 🔌 标准运输:使用标准输入/输出进行JSON-RPC 2.0通信
快速开始
系统要求
必修的:
- Node.js 18.0.0或更高版本 ⚠️ 强制性的 -Claude Desktop使用Node.js来执行此MCP服务器
- 下载:https://nodejs.org/
- 快速安装命令:
- macOS(Homebrew):
brew install node - macOS/Linux(nvm):
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && source ~/.nvm/nvm.sh && nvm install --lts - 窗户(翼子板):
winget install OpenJS.NodeJS.LTS
- macOS(Homebrew):
- 验证:运行
node --version在您的终端
- npm (节点包管理器)-通常与Node.js一起安装
- 验证:运行
npm --version在您的终端
- 验证:运行
- WordPress网站 启用REST API
- 您的WordPress应用程序密码 (在下面的设置说明中创建)
没有安装Node.js,Claude Desktop无法运行此服务器。
方法1:克劳德桌面(推荐)
这是将WordPress MCP服务器与Claude Desktop一起使用的最简单方法。
步骤1:构建和设置服务器
⚠️ 此步骤是必需的。 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编译为JavaScriptdist/文件夹- 这两个步骤都是 强制性的 让Claude Desktop执行服务器
步骤2:创建WordPress应用程序密码
- 转到您的WordPress管理员:
Users > Profile - 滚动到“应用程序密码”
- 输入类似“Claude Desktop MCP”的名称
- 点击“添加新应用程序密码”
- 复制生成的密码(下一步您将需要它)
步骤3:获取你的WordPress REST API URL
你的WordPress REST API URL通常是:
https://your-site.com
(The /wp-json/wp/v2/ 部分由服务器自动添加)
步骤4:添加到Claude桌面配置
打开您的Claude Desktop配置文件:
- Mac/Linux:
~/.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中创建的应用程序密码
步骤5:重新启动克劳德桌面
在更新配置之后, 完全关闭并重新启动Claude Desktop 以使更改生效。
WordPress工具将在Claude中可用。如果您收到“连接失败”错误:
- 验证是否安装了Node.js:
node --version应显示18.0.0或更高 - 验证路径
dist/index.js配置正确 - 验证您是否完成了步骤1(npm安装和npm运行构建)
方法2:命令行/测试
要在本地或自动化脚本中测试服务器:
使用环境变量
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
使用.env文件
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来说:
- 选项1(推荐): 在中设置凭据
env领域claude_desktop_config.json(见上述方法1,步骤4) - 选项2: 设置系统范围的环境变量:
-
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以使更改生效。
-
视窗:设置>系统>环境变量>新用户变量:
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).
-
手动请求测试
# Initialize the server:
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0.0"}}}' | npm start
# List available tools:
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | npm start
# Test WordPress connection:
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"test_wordpress_connection","arguments":{}}}' | npm start
方法三:开发模式
对于热重载开发:
npm run dev
然后在另一个终端中,使用MCP请求进行测试,如方法2所示。
日志记录和调试
基于文件的日志记录
此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 -控制详细程度
设置日志记录级别(错误、警告、信息、调试):
{
"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.log - 或设置
DISABLE_LOGGING=true如果不需要记录
运输与兼容性
基于标准的通信
此MCP服务器使用 标准输入/输出 用于JSON-RPC 2.0通信。服务器从标准输入读取JSON-RPC请求,并将响应写入标准输出。该设计实现了与Claude工具的直接流程集成。
兼容客户端
- ✅ Claude桌面版:通过进程生成提供全面支持
- ✅ 克劳德代码:通过stdio管道提供全面支持
- ❌ HTTP/REST工具:不兼容(无HTTP端点)
- ❌ 基于浏览器的工具:不兼容(需要执行本机进程)
- ❌ 网络服务:不兼容(没有HTTP服务器)
为什么只有Stdio?
Stdio运输提供:
- 直接过程沟通 无网络开销
- 安全凭据 -环境变量保持在本地,从不通过网络传输
- 紧密集成 使用Claude Desktop/Code的子流程执行模型
- 简洁 -无需HTTP服务器、端口绑定或网络配置
未来交通选择
对于其他传输方法(HTTP/SSE),需要单独的实现。目前,该服务器专注于与Claude的原生工具进行最佳集成。
可用工具
create_wordpress_post
创建一个新的WordPress帖子。
参数:
title(必填):帖子标题(最多255个字符)content(必填):发布内容(HTML或纯文本)status:职位状态(publish,draft,private)-默认值:draftexcerpt:文章摘录(可选)categories:类别ID数组(可选)tags:标签ID数组(可选)
例子:
Create a new blog post with the title "Hello World" and content "This is my first post using the MCP server!"
update_wordpress_post
更新现有的WordPress帖子。
参数:
id(必填):要更新的帖子IDtitle:新标题(可选)content:新内容(可选)status:新状态(可选)excerpt:新摘录(可选)categories:新类别ID(可选)tags:新标签ID(可选)
例子:
Update post ID 123 to change the status to "publish" and update the title to "Updated Title"
delete_wordpress_post
删除WordPress帖子。
参数:
id(必填):要删除的帖子IDforce:永久删除(true)或移至垃圾桶(false)-默认值:false
例子:
Delete post ID 456, moving it to trash
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
例子:
List the 5 most recent published posts with content
get_wordpress_post
按ID获取一篇包含完整内容的WordPress帖子。
参数:
id(必填):要检索的帖子IDcontext:请求的上下文(view,embed,edit)-默认值:edit
例子:
Get post ID 123 with full details
get_wordpress_categories
获取具有可选分页的WordPress内容组织类别。
参数:
per_page:每页结果(1-100)-默认值:100page:页码-默认值:1
退货: 类别列表,包括名称、标题、描述和帖子数量。
注: 大的 per_page 值可能导致较大的响应大小。为了获得最佳性能,对类别/标签使用per_page:10-20。
例子:
Get WordPress categories (first page with 100 results)
Get WordPress categories page 2
Get WordPress categories page 1 with 50 results per page
get_wordpress_tags
获取WordPress标签,用于使用可选分页进行内容标记。
参数:
per_page:每页结果(1-100)-默认值:100page:页码-默认值:1
退货: 带有名称、slug、描述和帖子数的标签列表。
注: 大的 per_page 值可能导致较大的响应大小。为了获得最佳性能,对类别/标签使用per_page:10-20。
例子:
Get WordPress tags (first page with 100 results)
Get WordPress tags page 2
Get WordPress tags page 1 with 50 results per page
test_wordpress_connection
测试WordPress API连接和身份验证。
例子:
Test the WordPress connection
安全特性
- 应用程序密码验证:安全、可撤销的身份验证
- TLS证书验证:使用Node/Axios标准TLS验证;没有不安全的覆盖
- 输入验证:使用Zod模式进行全面验证
- 限速意识:正确处理WordPress速率限制
- 错误清理:防止敏感信息泄露
- 超时保护:可配置的请求超时
配置选项
环境变量 .env:
# Required
WORDPRESS_URL=https://your-site.com
WORDPRESS_USERNAME=your-username
WORDPRESS_APP_PASSWORD=your-app-password
# Optional
MCP_SERVER_NAME=wordpress-mcp
MCP_SERVER_VERSION=1.0.0
LOG_LEVEL=info # error, warn, info, debug
REQUEST_TIMEOUT=30000 # milliseconds
发展
# Install dependencies
npm install
# Development with hot reload
npm run dev
# Build for production
npm run build
# Run linting
npm run lint
# Type checking
npm run type-check
故障排除
常见问题
-
身份验证失败(401)
- 验证用户名和应用程序密码
- 检查WordPress中是否启用了应用程序密码
-
拒绝许可(403)
- 确保用户拥有
publish_posts能力 - 尝试使用管理员角色
- 确保用户拥有
-
找不到REST API(404)
- 验证WordPress REST API是否已启用
- 检查安全插件是否阻止API访问
-
连接超时
- 增加
REQUEST_TIMEOUT价值 - 检查WordPress网站的可访问性
- 增加
-
超出费率限制(429)
- 在发出更多请求之前等待
- 考虑实现请求排队
调试模式
启用带有详细输出的调试日志记录:
# Development mode with hot reload and debug logging
LOG_LEVEL=debug npm run dev
# Or production mode with debug logging
LOG_LEVEL=debug npm start
测试连接
使用内置连接测试:
# Calls the built-in MCP tool over stdin to verify credentials/connectivity
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"test_wordpress_connection","arguments":{}}}' | npm start
建筑
src/index.ts:主MCP服务器实现,有8个可用工具src/wordpress-api.ts:WordPress REST API客户端,具有安全功能和类型安全src/types.ts:TypeScript接口和Zod验证模式(WordPressPost、WordPressCategory、WordPressTag等)src/logger.ts:具有可配置日志级别的结构化日志记录实施
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
- 分叉存储库
- 创建要素分支
- 通过测试进行更改
- 跑
npm run lint和npm run type-check - 提交拉取请求
支持
对于问题和疑问:
- 检查故障排除部分
- 验证您的WordPress配置
- 启用调试日志记录的测试
- 查看服务器日志以获取详细的错误信息
关于作者
- 主页:https://mindsnapz.de
- 应用程序:https://mindsnapz.de/pomodash/
