使用说明
WordPress MCP服务器
Node.js服务器,使用模型上下文协议(MCP)包装了Wordpress REST API。 可以在AI代理中查看、创建、修改和删除您的Wordpress帖子。
项目结构
├── src/
│ ├── config.ts # 환경 변수 로드 및 설정 타입 정의
│ ├── logger.ts # stderr 기반 로거 (STDIO 모드 안전)
│ ├── wordpress-client.ts # WordPress REST API 클라이언트
│ ├── server.ts # MCP 서버 생성 + Tool 등록 (공통 로직)
│ ├── stdio.ts # STDIO 전송 방식 진입점
│ └── sse.ts # Streamable HTTP + 레거시 SSE 전송 방식 진입점
├── dist/ # TypeScript 빌드 출력
├── .env.example # 환경 변수 예시
├── package.json
└── tsconfig.json
体系结构
┌─────────────┐ ┌──────────────────────────┐
│ stdio.ts │ │ sse.ts │
│ (StdioTx) │ │ (Express) │
│ │ │ ┌─────────────────────┐ │
│ │ │ │ Streamable HTTP │ │
│ │ │ │ POST|GET|DELETE /mcp │ │
│ │ │ ├─────────────────────┤ │
│ │ │ │ Legacy SSE │ │
│ │ │ │ GET /sse │ │
│ │ │ │ POST /messages │ │
│ │ │ └─────────────────────┘ │
└──────┬──────┘ └────────────┬─────────────┘
│ │
└───────────┬─────────────┘
│
┌───────▼───────┐
│ server.ts │
│ (McpServer + │
│ Tool 정의) │
└───────┬───────┘
│
┌─────────▼─────────┐
│ wordpress-client │
│ (REST API 호출) │
└─────────┬─────────┘
│
┌───────▼───────┐
│ WordPress │
│ /wp-json/v2 │
└───────────────┘
server.ts的 createServer()是公共逻辑层,STDIO和SSE使用相同。
前提条件
- Node.js 18+
- 访问网站(REST API激活状态)
- Wordpress应用程序密码或Bearer Token
WordPress应用程序密码발급
- 访问管理器>用户>配置文件
- 在“应用程序密码”部分输入名称并创建
- 复制显示的密码(保留空白)
安装
npm install
npm run build
设置环境变量
cp .env.example .env
.env 编辑文件:
# WordPress 사이트 URL (trailing slash 없이)
WORDPRESS_BASE_URL=https://your-wordpress-site.com
# 인증 방식 1: Application Password (권장)
WORDPRESS_USERNAME=admin
WORDPRESS_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx
# 인증 방식 2: Bearer Token (Application Password 대신 사용)
# WORDPRESS_TOKEN=your-bearer-token
# SSE 서버 포트 (기본값: 3000)
SSE_PORT=3000
# 자체 서명 인증서 허용 (로컬 HTTPS 개발 환경에서 사용)
# WORDPRESS_TLS_REJECT_UNAUTHORIZED=false
| 变量 | 必需 | 说明 |
|---|---|---|
WORDPRESS_BASE_URL |
O | Word网站URL |
WORDPRESS_USERNAME △使用应用密码 |
||
WORDPRESS_APP_PASSWORD △使用应用密码 |
||
WORDPRESS_TOKEN △使用Bearer Token时 |
||
SSE_PORT |
X | SSE服务器端口(默认值:3000) |
WORDPRESS_TLS_REJECT_UNAUTHORIZED 十、 false 设置时允许自签名证书 |
WORDPRESS_TOKEN如果启用,请使用Bearer身份验证,否则 WORDPRESS_USERNAME + WORDPRESS_APP_PASSWORD使用Basic认证。
执行
STDIO模式
如何在本地MCP客户端(Claude Desktop、Claude Code等)上使用。
# 빌드 후 실행
npm run start:stdio
# 개발 모드 (tsx 직접 실행)
npm run dev:stdio
SSE(HTTP)模式
通过HTTP从远程MCP客户端连接。 流式HTTP(最新)和 传统SSE(兼容旧版客户端)同时支持两种协议。
# 빌드 후 실행
npm run start:sse
# 개발 모드
npm run dev:sse
服务器启动后可用的端点:
Streamable HTTP(最新协议)
| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/mcp JSON-RPC请求处理(初始化+工具调用) |
|
GET |
/mcp |
SSE流(服务器→客户端通知) |
DELETE |
/mcp |
终止会话 |
Legacy SSE(与旧版客户端兼容)
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/sse |
SSE流连接(创建会话) |
POST |
/messages?sessionId=... 发送JSON-RPC消息 |
共同
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/health |
检查服务器状态 |
客户端设置
克劳德桌面版
claude_desktop_config.json:
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["/절대경로/wordpress-mcp-server/dist/stdio.js"],
"env": {
"WORDPRESS_BASE_URL": "https://your-site.com",
"WORDPRESS_USERNAME": "admin",
"WORDPRESS_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
}
}
}
}
克劳德代码
claude mcp add wordpress -- node /절대경로/wordpress-mcp-server/dist/stdio.js
或 .mcp.json:
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["/절대경로/wordpress-mcp-server/dist/stdio.js"],
"env": {
"WORDPRESS_BASE_URL": "https://your-site.com",
"WORDPRESS_USERNAME": "admin",
"WORDPRESS_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx",
"WORDPRESS_TLS_REJECT_UNAUTHORIZED": "false"
}
}
}
}
SSE模式客户端连接
运行SSE服务器后,从MCP客户端连接:
# Streamable HTTP 지원 클라이언트 (최신)
http://localhost:3000/mcp
# Legacy SSE 지원 클라이언트 (구버전)
http://localhost:3000/sse
MCP工具
listPost
查询帖子列表。支持分页、搜索和状态过滤器。
参数类型必需说明
|----------|------|------|------|
| page |number|X|页码(默认值:1)|
| per_page | number | X |每页的帖子数(默认值:10,最大值:100)|
| search | string | X搜索词|
| status |枚举|X| publish, draft, pending, private, trash |
| orderby |枚举|X| date, id, title, slug, modified |
| order |枚举|X| asc, desc |
Getpost
用ID查询一个帖子。
参数类型必需说明
|----------|------|------|------|
| id | number | O |帖子ID |
createPost
创建新帖子。
参数类型必需说明
|----------|------|------|------|
| title | string | O |帖子标题|
| content | string | O |帖子内容(可HTML)|
| status |枚举|X| publish, draft, pending, private (默认值: draft) |
| excerpt | string | X |帖子摘要|
| categories | number[]X|类别ID数组|
| tags | number[]X|标签ID数组|
更新帖子
修改现有帖子。只更改传递的字段。
参数类型必需说明
|----------|------|------|------|
| id | number | O要修改的帖子ID |
| title | string | X |要更改的标题|
| content |string|X|要更改的内容(可HTML)|
| status |枚举|X| publish, draft, pending, private |
| excerpt |string|X|要更改的摘要|
| categories | number[]X|要更改的类别ID数组|
| tags |number[]X|要更改的标签ID数组|
删除帖子
删除帖子。
参数类型必需说明
|----------|------|------|------|
| id | number | O |要删除的帖子ID |
| force |布尔值|X| true永久删除双面, false移动废纸篓(默认: false) |
技术堆栈
| 项目 | 使用技巧 |
|---|---|
| 运行时Node.js 18+ | |
| 语言TypeScript(ESM) | |
| MCP-SDK | @modelcontextprotocol/sdk ^1.26.0 |
| HTTP客户端 | Node.js内置 fetch |
| 验证方案 | zod |
SSE服务器Express+ StreamableHTTPServerTransport + SSEServerTransport |
|
| WordPress API | /wp-json/wp/v2 (REST API v2) |
确定主要设计
- 公共逻辑分离:
server.ts的createServer(config)函数生成McpServer实例和所有Tool。STDIO和SSE入口点只有传输方式不同。 - stderr日志记录:在STDIO模式下,stdout仅用于JSON-RPC协议消息,因此所有日志
console.error(stderr)输出。 - 双传输协议:SSE服务器可流HTTP(
/mcp)和传统SSE(/sse+/messages)同时提供。最新客户端和旧版客户端都兼容。 - 会话管理:两种传输方式都创建独立于客户端的会话。Streamable HTTP
mcp-session-id标题,传统SSEsessionId通过查询参数识别会话。 - 错误处理:解析Wordpress API错误响应(4xx,5xx)以获得MCP
isError: true作为结果返回。代理可以理解错误内容并做出反应。
