WordPress MCP服务器插件

Newspack Lit MCP是一个WordPress插件,通过Abilities API和MCP Adapter提供MCP服务器功能,支持JSON文件的读写操作,适用于WordPress站点数据迁移和管理。

  • by Automattic
  • PHP
  • 本地部署
  • 更新于
在 GitHub 查看 Automattic/newspack-lit-mcp

使用说明

Newspack Lit MCP 翻译为中文是:“Newspack 文字版 MCP(或:Newspack 文本 MCP)”。不过,这里的“Lit”在特定上下文中可能有特定含义,比如在出版或媒体领域可能指“文学版”、“文字版”或类似的意思,但如果没有具体上下文,通常可以简化为“文字版”或根据具体情况调整翻译。而“MCP”可能是一个特定项目、系统或概念的缩写,具体含义需根据上下文确定。在这里,我将其保留为“MCP”以保持原样

Newspack发布与基础设施MCP服务器插件是一个基于Abilities API和MCP适配器构建的WordPress MCP服务器,用于迁移操作。此插件展示了如何创建一个MCP服务器,该服务器能够将WordPress功能作为MCP工具暴露出来。

重要提示: 这个早期版本是一个说明性的概念验证(POC),其传输机制(认证)和功能元素(工具及效果价值)均有待改进。

关键特性

  • 两种MCP工具可供选择:
    • lit-mcp-read-json-file - 从(某处)读取JSON文件 wp-content/uploads/mcp_data/
    • lit-mcp-write-json-file - 将JSON内容写入文件中 wp-content/uploads/mcp_data/ 目录
  • 现代WordPress架构:
    • 使用能力API进行能力注册和管理
    • 使用MCP适配器实现MCP服务器功能
    • 使用适当的JSON-RPC处理的REST传输
    • 错误处理和可观测性
  • 安全:
    • 基本HTTP身份验证支持
    • WordPress用户权限检查(edit_posts (必填)
    • 适当的权限验证
  • 数据管理:
    • 存储在文件中的 wp-content/uploads/mcp_data/ 目录
    • 自动创建目录
    • JSON验证和格式化美化打印

要求

安装

  1. 安装依赖项 (通过 WP-CLI):

    wp plugin install https://github.com/WordPress/abilities-api/releases/latest/download/abilities-api.zip --activate
    wp plugin install https://github.com/WordPress/mcp-adapter/releases/latest/download/mcp-adapter.zip --activate
    
  2. 安装Lit MCP:

    # Clone or copy the plugin to your plugins directory
    wp plugin activate lit-mcp
    
  3. 安装 Composer 依赖项:

    cd /path/to/wordpress/wp-content/plugins/lit-mcp
    composer install
    

MCP 配置

  • Claude 桌面版

将此配置添加到您的MCP设置文件中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上)。

  • Cursor 集成开发环境(IDE)

将此配置添加到您的 .cursor/mcp.json 文件。

注: 更新路径为 mcp-command.php 以匹配您的安装目录。

{
  "mcpServers": {
    "newspack-lit-mcp": {
      "command": "php",
      "args": [
        "/usr/local/var/www/newspack-ai.test/public/wp-content/plugins/newspack-lit-mcp/mcp-command.php"
      ]
    }
  }
}

测试服务器可用性

测试MCP服务器有两种方法:

选项1:命令行MCP服务器(推荐用于MCP客户端)

这个(或:该) mcp-command.php 该脚本提供了一个基于标准输入输出(stdio)的MCP服务器,该服务器可与Claude Desktop及其他MCP客户端协同工作。

测试命令行服务器:

# Test initialization
echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}},"id":1}' | \
php /usr/local/var/www/newspack-ai.test/public/wp-content/plugins/newspack-lit-mcp/mcp-command.php | jq .

# Test tools list
echo '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}' | \
php /usr/local/var/www/newspack-ai.test/public/wp-content/plugins/newspack-lit-mcp/mcp-command.php | jq .

# Test writing a file
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"lit-mcp-write-json-file","arguments":{"filename":"test.json","content":{"hello":"world"}}},"id":3}' | \
php /usr/local/var/www/newspack-ai.test/public/wp-content/plugins/newspack-lit-mcp/mcp-command.php | jq .

# Test reading a file
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"lit-mcp-read-json-file","arguments":{"filename":"test.json"}},"id":4}' | \
php /usr/local/var/www/newspack-ai.test/public/wp-content/plugins/newspack-lit-mcp/mcp-command.php | jq .

多请求测试:

cat > /tmp/test_mcp.txt << 'EOF'
{"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}},"jsonrpc":"2.0","id":0}
{"method":"notifications/initialized","jsonrpc":"2.0"}
{"method":"tools/list","params":{},"jsonrpc":"2.0","id":1}
{"method":"prompts/list","params":{},"jsonrpc":"2.0","id":2}
{"method":"resources/list","params":{},"jsonrpc":"2.0","id":3}
EOF

php /usr/local/var/www/newspack-ai.test/public/wp-content/plugins/newspack-lit-mcp/mcp-command.php < /tmp/test_mcp.txt | jq .

选项2:直接HTTP REST API

您也可以通过向WordPress REST API端点发送HTTP请求,直接与MCP服务器进行交互。 这绕过了命令行服务器,直接访问WordPress REST API端点。

初始化:

curl -k -u admin:pass \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}' \
https://newspack-ai.test/wp-json/lit-mcp/jsonrpc/streamable | \
jq .

工具列表:

curl -k -u admin:pass \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}' \
https://newspack-ai.test/wp-json/lit-mcp/jsonrpc/streamable | \
jq .

写入JSON文件:

curl -k -u admin:pass \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"lit-mcp-write-json-file","arguments":{"filename":"test.json","content":{"message":"Hello World"}}},"id":3}' \
https://newspack-ai.test/wp-json/lit-mcp/jsonrpc/streamable | \
jq .

读取JSON文件:

curl -k -u admin:pass \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"lit-mcp-read-json-file","arguments":{"filename":"test.json"}},"id":4}' \
https://newspack-ai.test/wp-json/lit-mcp/jsonrpc/streamable | \
jq .

故障排除

  • 连接超时:

    • 验证WordPress网站是否正在运行且可访问
    • 检查URL中的 mcp-command.php 与您的网站相匹配
    • 确保凭据(用户名/密码)正确无误 mcp-command.php
  • “HTTP请求失败”错误:

    • 检查WordPress是否返回了非200的状态码
    • 验证基本身份验证凭据 mcp-command.php
    • 使用curl直接测试REST API终端点
  • 401 未授权错误:

    • 确保WordPress用户已 edit_posts 能力
    • 检查基本身份验证凭据是否正确
    • 验证用户是否存在且密码正确
  • 404 未找到错误:

    • 确保插件已激活
    • 检查Abilities API和MCP Adapter插件是否已激活
    • 验证URL路径是否正确/wp-json/lit-mcp/jsonrpc/streamable)
  • 500 内部服务器错误:

    • 检查WordPress调试日志以查找具体错误信息
    • 确保 wp-content/uploads/mcp_data/ 目录可写
    • 验证所有依赖项都已正确安装

调试信息

  • 检查WordPress调试日志: /wp-content/debug.log
  • 验证插件激活: wp plugin list
  • 能力测试注册:检查能力是否出现在WordPress管理后台
  • 手动测试命令行服务器:使用上述“用法”部分中的测试命令
  • 检查Claude Desktop日志: ~/Library/Logs/Claude/mcp*.log 在 macOS 上

技术细节

建筑学

  • WordPress 插件通过“Abilities API”注册能力,并通过MCP适配器暴露它们
  • 命令行包装器: mcp-command.php 是一个最小化的标准输入输出(stdio)包装器,它:
    • 从标准输入读取JSON-RPC消息(每行一个)
    • 通过HTTP将它们转发到WordPress REST API
    • 将响应返回到标准输出(每行一个)
    • 过滤掉通知中的空响应
  • 数据目录文件存储在 wp-content/uploads/mcp_data/
  • 文件格式带有格式化打印的JSON文件
  • 认证使用WordPress用户验证进行基本HTTP身份验证
  • 权限需要 edit_posts WordPress功能
  • 交通可流式传输的传输方式(针对MCP客户端,使用stdio包装器的HTTP上的JSON-RPC 2.0)

mcp-command.php 实现

命令包装器的设计有意保持简洁:

  • 没有WordPress引导文件避免直接加载WordPress以防止输出污染
  • 清洁的stdio协议只有JSON响应会输出到标准输出,其他内容则不会
  • 错误抑制禁用所有PHP错误/警告/通知以保持输出整洁
  • HTTP代理模式将所有协议逻辑转发到WordPress REST API
  • 通知处理过滤掉JSON-RPC通知中的空响应