MCP Adapter 开发文档

基础示例

Estimated reading: 8 minutes 3 views 贡献人员

基础示例

本指南提供了使用 WordPress MCP Adapter 创建 MCP 工具、资源和提示词的简单工作示例。

示例 1:工具 – 创建文章

工具执行操作并返回结果。这是一个简单的文章创建工具:

<?php
// 注册能力
add_action( 'wp_abilities_api_init', function() {
    wp_register_ability( 'my-plugin/create-post', [
        'label' => '创建文章',
        'description' => '使用指定内容创建新的 WordPress 文章',
        'input_schema' => [
            'type' => 'object',
            'properties' => [
                'title' => [
                    'type' => 'string',
                    'description' => '文章标题',
                    'minLength' => 1,
                    'maxLength' => 200
                ],
                'content' => [
                    'type' => 'string',
                    'description' => '文章内容(允许 HTML)',
                    'minLength' => 1
                ],
                'status' => [
                    'type' => 'string',
                    'description' => '文章状态',
                    'enum' => ['draft', 'publish'],
                    'default' => 'draft'
                ],
                'category' => [
                    'type' => 'string',
                    'description' => '分类名称(可选)'
                ]
            ],
            'required' => ['title', 'content']
        ],
        'output_schema' => [
            'type' => 'object',
            'properties' => [
                'post_id' => [
                    'type' => 'integer',
                    'description' => '创建的文章 ID'
                ],
                'post_url' => [
                    'type' => 'string',
                    'description' => '创建的文章 URL'
                ],
                'edit_url' => [
                    'type' => 'string',
                    'description' => '后台编辑 URL'
                ]
            ]
        ],
        'execute_callback' => function( $input ) {
            $post_data = [
                'post_title'   => sanitize_text_field( $input['title'] ),
                'post_content' => wp_kses_post( $input['content'] ),
                'post_status'  => in_array( $input['status'], ['draft', 'publish'] ) ? $input['status'] : 'draft',
                'post_type'    => 'post'
            ];
            
            // 如果提供了分类,处理分类
            if ( ! empty( $input['category'] ) ) {
                $category = get_category_by_slug( sanitize_title( $input['category'] ) );
                if ( ! $category ) {
                    // 如果分类不存在则创建
                    $category_id = wp_create_category( $input['category'] );
                } else {
                    $category_id = $category->term_id;
                }
                $post_data['post_category'] = [ $category_id ];
            }
            
            $post_id = wp_insert_post( $post_data );
            
            if ( is_wp_error( $post_id ) ) {
                throw new Exception( '创建文章失败: ' . $post_id->get_error_message() );
            }
            
            return [
                'post_id' => $post_id,
                'post_url' => get_permalink( $post_id ),
                'edit_url' => get_edit_post_link( $post_id, 'raw' )
            ];
        },
        'permission_callback' => function() {
            return current_user_can( 'publish_posts' );
        },
        'meta' => [
            'annotations' => [
                'priority' => 2.0,
                'readOnlyHint' => false,
                'destructiveHint' => false
            ],
            'mcp' => [
                'public' => true  // 通过 MCP 暴露此能力
            ]
        ]
    ]);
});

该能力通过默认 MCP 服务器在 /wp-json/mcp/mcp-adapter-default-server 上自动可用。

测试工具

# 使用 WP-CLI 创建草稿文章
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"my-plugin-create-post","arguments":{"title":"我的第一篇 MCP 文章","content":"这篇文章是使用 MCP 创建的!","status":"draft"}}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

示例 2:资源 – 站点配置

资源提供数据访问。它们需要在能力元数据中包含 uri

<?php
// 将能力注册为资源
add_action( 'wp_abilities_api_init', function() {
    wp_register_ability( 'my-plugin/site-config', [
        'label' => '站点配置',
        'description' => 'WordPress 站点配置和设置',
        'execute_callback' => function() {
            return [
                'site_name' => get_bloginfo( 'name' ),
                'site_url' => get_site_url(),
                'admin_email' => get_option( 'admin_email' ),
                'timezone' => get_option( 'timezone_string' ),
                'date_format' => get_option( 'date_format' ),
                'wordpress_version' => get_bloginfo( 'version' )
            ];
        },
        'permission_callback' => function() {
            return current_user_can( 'manage_options' );
        },
        'meta' => [
            'uri' => 'wordpress://site/config',  // 资源需要此属性
            'annotations' => [
                'readOnlyHint' => true,
                'idempotentHint' => true,
                'audience' => ['user', 'assistant'],
                'priority' => 0.8
            ],
            'mcp' => [
                'public' => true,      // 通过 MCP 暴露此能力
                'type'   => 'resource' // 标记为资源以便自动发现
            ]
        ]
    ]);
});

该能力通过默认 MCP 服务器自动可用。

测试资源

# 读取站点配置资源
echo '{"jsonrpc":"2.0","id":1,"method":"resources/read","params":{"uri":"wordpress://site/config"}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

# 列出所有可用资源
echo '{"jsonrpc":"2.0","id":1,"method":"resources/list","params":{}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

示例 3:提示词 – 代码审查

提示词为语言模型生成结构化消息:

<?php
// 将能力注册为提示词
add_action( 'wp_abilities_api_init', function() {
    wp_register_ability( 'my-plugin/code-review', [
        'label' => '代码审查提示词',
        'description' => '生成具有特定重点领域的代码审查提示词',
        'execute_callback' => function( $input ) {
            $code = $input['code'] ?? '';
            $focus = $input['focus'] ?? ['security', 'performance'];
            
            return [
                'messages' => [
                    [
                        'role' => 'user',
                        'content' => [
                            'type' => 'text',
                            'text' => "请审查此代码,重点关注: " . implode(', ', $focus) . "nn```n" . $code . "n```",
                            'annotations' => [
                                'audience' => ['assistant'],
                                'priority' => 0.9
                            ]
                        ]
                    ]
                ]
            ];
        },
        'permission_callback' => function() {
            return current_user_can( 'edit_posts' );
        },
        'meta' => [
            'arguments' => [
                [
                    'name' => 'code',
                    'description' => '要审查的代码',
                    'required' => true
                ],
                [
                    'name' => 'focus',
                    'description' => '审查期间要重点关注的领域',
                    'required' => false
                ]
            ],
            'annotations' => [
                'readOnlyHint' => true,
                'idempotentHint' => true
            ],
            'mcp' => [
                'public' => true,   // 通过 MCP 暴露此能力
                'type'   => 'prompt' // 标记为提示词以便自动发现
            ]
        ]
    ]);
});

该能力通过默认 MCP 服务器自动可用。

测试提示词

# 获取代码审查提示词
echo '{"jsonrpc":"2.0","id":1,"method":"prompts/get","params":{"name":"my-plugin-code-review","arguments":{"code":"function hello() { console.log("world"); }","focus":["security","performance"]}}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

# 列出所有可用提示词
echo '{"jsonrpc":"2.0","id":1,"method":"prompts/list","params":{}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

关键点

默认服务器

MCP Adapter 自动创建一个默认服务器,暴露所有已注册的能力:

  • 端点: /wp-json/mcp/mcp-adapter-default-server
  • 服务器 ID: mcp-adapter-default-server
  • 自动注册: 所有能力立即可用

组件类型

  • 工具: 执行操作(如 tools/call
  • 资源: 提供数据访问(如 resources/read)- 需要 meta.uri
  • 提示词: 生成消息(如 prompts/get)- 返回 messages 数组

注解

所有 MCP 组件都可以在 meta.annotations 中包含元数据,这些元数据暗示客户端应如何处理它们。

有关注解的完整详细信息、语义和使用指南,请参阅 MCP 架构规范的注解部分:https://modelcontextprotocol.io/specification/2025-06-18/schema#annotations

测试

使用 WP-CLI 与默认服务器配合:

# 列出所有可用工具
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

# 列出所有可用资源  
echo '{"jsonrpc":"2.0","id":1,"method":"resources/list","params":{}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

# 列出所有可用提示词
echo '{"jsonrpc":"2.0","id":1,"method":"prompts/list","params":{}}' | wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server

下一步

这些示例为使用 WordPress 能力构建 MCP 集成提供了基础。

留下第一个评论