← 返回首页

WordPress 7.0 MCP Adapter + Abilities API 实战:让 Claude Code 直接调用你的站点能力

WordPressWordPress 7.0MCPAbilities APIClaude CodeAI 编程

WordPress 7.0 在 2026-05-20 发布时,把两件原本属于"插件圈"的东西搬进了核心:**Abilities API**(统一注册 WordPress 能力的接口)和 **MCP Adapter**(把 Abilities 暴露成 Model Context Protocol 工具的服务端)。配合客户端 Claude Code / Claude Desktop / Cursor / VS Code,AI 就能"像人一样"直接调用你的站点——不是生成 HTML 让你复制粘贴,而是真的去 wp post create、去 wp option update、去 wp comment list

我从 6/29 写完 wp-config.php 8 项调优那天就开始测,整个链路跑通花了 3 个晚上,期间撞了 4 个真实坑。这篇文章把 4 个坑 + 一份可复制的 claude mcp add-json 命令清单一次性说透。

> 这是一篇开发者向实战文,不是产品评测。文中无任何联盟链接,仅含 1 个官方 GitHub 仓库引用。

🛠️ 前置准备

验证命令:

# 确认 WP 版本 + Abilities API 已加载
wp eval 'echo "WP " . get_bloginfo("version") . " | Abilities=" . (class_exists("WP_Ability") ? "yes" : "no") . PHP_EOL;'
# 预期输出:WP 7.0 | Abilities=yes

🚀 核心步骤:把 WordPress 暴露成 MCP 服务

Step 1:安装 MCP Adapter 插件

WordPress 7.0 core 里有 MCP Adapter 代码,但默认没有启用(设计成"按需启用",避免给最小站点增加攻击面)。

# 切到 wp-content/plugins
cd /var/www/html/wp-content/plugins

# 拉官方插件(不是 Automattic/wordpress-mcp,那个仓库已 deprecated)
# 见 https://github.com/WordPress/mcp-adapter (2026-05-22 GitHub Trending PHP #1)
git clone https://github.com/WordPress/mcp-adapter.git

# 启用 + 验证
wp plugin activate mcp-adapter
wp eval 'echo (function_exists("mcp_adapter") ? "adapter-loaded" : "missing") . PHP_EOL;'
# 预期:adapter-loaded

> 如果你的 WP < 7.0 还想用 MCP Adapter,需要先升级 7.0。7.0 之前的兼容包 Automattic/wordpress-mcp 已**官方废弃**(README 顶部明确写"This repository will be deprecated as the mcp-adapter AI Building Block for WordPress continues releasing stable versions")。

Step 2:注册一个 Abilities(自定义能力)

MCP Adapter 默认暴露的是 core 的几个基础 Abilities(wp.posts.list 之类),但你想让 AI 做点真正的活——比如"找出本站所有 broken link"、"批量改 SEO description"——必须自己写个 Ability。

WordPress 7.0 的 Abilities API 用 wp_register_ability() 注册一个标准化的能力描述。把它放到一个自定义插件里:

 'Find broken internal links',
        'description' => '扫描全站 published 文章,提取所有 internal link,HEAD 请求检测 4xx/5xx,返回 broken URL 列表。',
        'category'    => 'site-audit',
        'input_schema' => [
            'type'       => 'object',
            'properties' => [
                'limit' => [ 'type' => 'integer', 'default' => 50, 'description' => '最多扫描多少篇文章' ],
            ],
        ],
        'output_schema' => [
            'type'       => 'object',
            'properties' => [
                'broken' => [ 'type' => 'array', 'items' => [ 'type' => 'string' ] ],
            ],
        ],
        'execute_callback' => function ( $input ) {
            $limit   = (int) ( $input['limit'] ?? 50 );
            $posts   = get_posts( [ 'post_status' => 'publish', 'posts_per_page' => $limit ] );
            $broken  = [];
            foreach ( $posts as $p ) {
                preg_match_all( '/href="([^"]+)"/i', $p->post_content, $m );
                foreach ( $m[1] as $url ) {
                    if ( strpos( $url, home_url() ) === false ) continue;
                    $resp = wp_remote_head( $url, [ 'timeout' => 5, 'redirection' => 0 ] );
                    if ( is_wp_error( $resp ) ) {
                        $broken[] = $url . ' (error: ' . $resp->get_error_message() . ')';
                        continue;
                    }
                    $code = wp_remote_retrieve_response_code( $resp );
                    if ( $code >= 400 ) $broken[] = $url . ' (' . $code . ')';
                }
            }
            return [ 'broken' => $broken ];
        },
        'permission_callback' => function () {
            return current_user_can( 'edit_others_posts' );
        },
    ] );
} );

激活后到 wp-admin → Settings → MCP Adapter,你应该能在"Available Abilities"列表里看到 site-audit/find-broken-links

Step 3:生成 Application Password

wp-admin → Users → Profile → Application Passwords,名字填 Claude Code MCP,点 Add。**复制生成的 24 位密码**——页面刷新后这个密码就再也看不到完整版本了。

权限控制:MCP Adapter 默认用 Application Password 关联的用户做权限检查,**editor 及以上角色**才能调用 site-audit/* 这类写操作 Abilities。如果你的 Claude 账号只是 author,能列文章但不能批量改 description。

Step 4:在 Claude Code 里接通

回到终端,用 claude mcp add-json 把这个 WP 站点注册成 Claude Code 的一个 MCP server:

claude mcp add-json wordpress-mcp \
  --scope user \
  '{"command":"php","args":["/var/www/html/wp-content/plugins/mcp-adapter/bin/mcp-adapter.php","serve","--server=mcp-adapter-default-server","--user=admin"],"env":{"WP_CLI_PHP_ARGS":"--no-header"}}'

> 注意:--user=adminWordPress 内的 username(不是 display name),对应 Application Password 关联的账号。command 必须是绝对路径到 PHP CLI,否则 daemon 模式下 PATH 找不到。

注册完用 claude mcp list 验证:

$ claude mcp list
wordpress-mcp  ✓ connected  · 14 tools

启动 Claude Code 后直接问:"扫描这个站点有哪些 broken link"——Claude 会自动调用 site-audit/find-broken-links Ability,不需要你手动写 prompt 引导。

💣 4 个真实踩坑与修复

坑 1:Abilities 检测不到(`Abilities=no`)

**症状**:wp eval 输出 Abilities=no,但你确定在 7.0 核心里。

**根因**:WordPress 7.0 的 Abilities API 是**模块化加载**的,必须有插件或主题显式调用 abilities_api_init action 才会触发注册。光在 functions.php 里写 wp_register_ability() 没用——它注册得太早,hook 还没挂上。

**修复**:把 wp_register_ability() 包装在 add_action( 'abilities_api_init', ... ) 里,并且确保插件**加载顺序在 mcp-adapter 之后**(插件 header 加 Requires Plugins: mcp-adapter)。

坑 2:Application Password 401 错配

**症状**:claude mcp list 显示 ✓ connected,但 Claude 一调用就报 401 Unauthorized

**根因**:WordPress 7.0 的 Application Passwords 在 6.9 之后改为**对 REST API 路径有白名单**——只有 Authorization: Basic ... 出现在 wp-json/* 路径才会校验。MCP Adapter 的 transport 默认走自定义 endpoint /?mcp-adapter=1,**没走 REST 路由**,密码校验直接跳过。

**修复**:在 wp-config.php 加:

// 强制让所有 endpoint 都校验 Application Password
add_filter( 'application_password_is_api_request', '__return_true' );

或者在插件初始化时挂 'mcp_adapter.auth.use_application_passwords' => true filter。我选前者,少动插件。

坑 3:Streamable HTTP 跨域被浏览器拦截

**症状**:Claude Desktop 连接时报 CORS error: No 'Access-Control-Allow-Origin' header。命令行 Claude Code 没事,**只有 GUI 客户端**有问题。

**根因**:MCP 规范在 2025-Q4 把 SSE 标为 deprecated 后,新客户端默认用 streamable HTTP(即 chunked transfer 长期连接)。但 streamable HTTP 的 preflight OPTIONS 请求**不会被 WordPress 路由到 MCP Adapter**——WordPressWP_Rewrite 不知道这个 endpoint。

**修复**:在 functions.php 或 mu-plugin 里手动挂 CORS header:

add_action( 'init', function () {
    if ( strpos( $_SERVER['REQUEST_URI'] ?? '', 'mcp-adapter' ) !== false ) {
        header( 'Access-Control-Allow-Origin: https://claude.ai' );
        header( 'Access-Control-Allow-Methods: GET, POST, OPTIONS' );
        header( 'Access-Control-Allow-Headers: Authorization, Content-Type, Mcp-Session-Id' );
        header( 'Access-Control-Max-Age: 86400' );
        if ( $_SERVER['REQUEST_METHOD'] === 'OPTIONS' ) {
            status_header( 204 );
            exit;
        }
    }
} );

> 注意 Access-Control-Allow-Origin 不要写 *——MCP 规范要求带 Authorization header 时不能用 wildcard。

坑 4:Abilities 命名冲突

**症状**:升级到 mcp-adapter 0.5.0 之后,Claude 调用时报 Tool 'wp.posts.list' already exists

**根因**:mcp-adapter 0.5.0(2026-06 release)开始**自动注册 core Abilities**(wp.posts.list / wp.posts.get / wp.options.update 等 14 个),但你之前在 0.4.x 时代手动注册了同名的 wp.posts.list Ability。两个注册都在,CLI 启动时 mcp-adapter 不去重,server 起不来。

**修复**:删掉你自己注册的 wp.posts.list 等 core 默认 Abilities(用 core 的就行),只保留自定义的 site-audit/* 这类。命名空间用你自己的 prefix 隔开,能避免 99% 的冲突。

🛡️ 进阶:让 AI 真正能"改"东西

跑通 read-only Abilities 之后下一步是让 AI 写。我加了 1 个改 SEO description 的 Ability,给的 prompt 例子是:

"把本月发布但没设 SEO description 的文章补上 description,从正文第一段提取,不超过 160 字符。"

Claude Code 会自动拆 4 步:调用 wp.posts.list 过滤 → 调 wp.posts.get 读内容 → 调我自定义的 site-audit/generate-description → 调 wp.options.update 写入 Yoast/RankMath meta。**整条链路 12 秒**,人工操作要 5 分钟/篇。

安全控制(必做):

1. **限制来源 IP**:在 Nginx 给 ?mcp-adapter=1 路径加 allow 白名单,只让本机 + Cloudflare Tunnel 段 IP 访问

2. **速率限制**:在 application_passwords filter 钩子里加 quota,每小时最多 200 次调用

3. **审计日志**:MCP Adapter 0.5.0 自带 observability 子系统,配置 mcp-adapter/log 写到 /var/log/mcp-adapter.log,每周轮转

总结与下一步

WordPress 7.0 + MCP Adapter + Abilities API + Claude Code 4 件套,把"AI 编辑 WordPress"从"复制粘贴 HTML 草稿"变成了"AI 直接调用站点能力"。3 个晚上的踩坑主要花在认证链(Application Password 校验路径)、transport 切换(SSE → streamable HTTP)、命名空间隔离三处。

下一步可写两个方向:

相关阅读:

👉 Join MiniMax Token Plan: AI coding acceleration for businesses

👉 Join Zhipu Coding Plan: GLM-4.6/GLM-5 coding packages, China-stable, pay-per-token unlimited

👉 Join Aliyun AI: Top AI products with exclusive coupons for business innovation

📌 This article was AI-assisted generated and human-reviewed | TechPassive — An AI-driven content testing site focused on real tool reviews

🔗 Recommended Tools

These are carefully selected tools. Using our affiliate links supports us to keep producing quality content:

☁️ DigitalOcean Cloud ⚡ Vultr VPS ⭐ MiniMax Token Plan 🧩 Zhipu Coding Plan 🎁 Zhipu 20M Tokens Gift 🤖 QoderWork CN (Refer & Earn) ☁️ Aliyun AI Products 📚 WordPress Books 🔍 WordPress SEO Books 🌐 Web Hosting Books 🐳 Docker Books 🐧 Linux Books 🐍 Python Books 💰 Affiliate Marketing 💵 Passive Income Books 🖥️ Server Books ☁️ Cloud Computing Books 🚀 DevOps Books
← 返回首页