WordPress MCP Adapterの導入手順|Abilities APIで自作機能を安全に公開する

WordPress公式の MCP Adapter を使うと、Abilities APIに登録した機能をClaude・Codex・Cursorなどから呼び出せるようになる。

しかし、プラグインを有効化しただけで記事編集ツールが自動的に生えるわけではない。WordPress側に能力を登録し、AI側にMCP接続を追加し、権限と資格情報の置き場所まで設計する必要がある。

この記事では、MCP Adapterを導入し、自作の能力をAIから呼べる状態にするまでを順番にまとめる。

目次

対応バージョンを確認する

執筆時点の最新版は MCP Adapter 0.6.1 で、WordPress 6.9以上が必要である。WordPress 6.8と単体版Abilities APIを組み合わせる構成は、0.6系ではサポート対象外になった。

古い記事では6.8向けの手順が残っているため、導入前に公式リリースページの必要条件を確認しておきたい。

1. 専用のWordPressユーザーを用意する

最初に考えるべきなのはプラグインではなく権限である。

アプリケーションパスワードは、それを発行したWordPressユーザーとして認証する。パスワードごとに「記事取得だけ」「下書き作成だけ」と細かく制限する仕組みではない。

そのため、普段使っている管理者ではなく、MCP接続専用の低権限ユーザーを作るのが安全である。必要な記事だけを扱える役割にし、不要な管理権限を与えない。

ユーザーのプロフィール画面からアプリケーションパスワードを発行したら、次のルールを守る。

  • Gitリポジトリや記事本文へ書かない
  • AIへのプロンプトへ直接貼らない
  • 不要になったらWordPress側で失効させる
  • 管理者ユーザーの資格情報を使い回さない

2. MCP Adapterを導入する

公式GitHubの最新リリースから mcp-adapter.zip を取得し、通常のWordPressプラグインとしてインストールする。WP-CLIを使える場合は、公式READMEにある次の方法も使える。

wp plugin install https://github.com/WordPress/mcp-adapter/releases/latest/download/mcp-adapter.zip --activate

プラグインを有効化すると、既定のMCPサーバーが次のエンドポイントに作られる。

https://example.com/wp-json/mcp/mcp-adapter-default-server

この時点では、まだ自分の記事操作能力は登録されていない。

3. 能力を登録するプラグインを書く

能力のカテゴリーは wp_abilities_api_categories_init、能力本体は wp_abilities_api_init で登録する。

次は、ログイン中のユーザーが編集権限を持つ場合だけ、サイト名を返す最小例である。

<?php
/**
 * Plugin Name: My MCP Abilities
 */

defined( 'ABSPATH' ) || exit;

add_action( 'wp_abilities_api_categories_init', 'my_mcp_register_category' );
add_action( 'wp_abilities_api_init', 'my_mcp_register_abilities' );

function my_mcp_register_category() {
    wp_register_ability_category(
        'my-site',
        array(
            'label'       => 'My Site',
            'description' => 'Abilities for my site.',
        )
    );
}

function my_mcp_register_abilities() {
    wp_register_ability(
        'my-site/get-site-name',
        array(
            'label'               => 'Get Site Name',
            'description'         => 'Return the WordPress site name.',
            'category'            => 'my-site',
            'output_schema'       => array(
                'type'       => 'object',
                'properties' => array(
                    'name' => array( 'type' => 'string' ),
                ),
            ),
            'permission_callback' => function() {
                return current_user_can( 'edit_posts' );
            },
            'execute_callback'    => function() {
                return array( 'name' => get_bloginfo( 'name' ) );
            },
            'meta'                => array(
                'mcp' => array( 'public' => true ),
            ),
        )
    );
}

ここで重要なのは次の4点である。

  • カテゴリー名と能力名は重複しない固有名にする
  • permission_callback で実行権限を必ず判定する
  • output_schema と、入力がある場合は input_schema を実際の値と一致させる
  • 既定サーバーから公開する能力には meta.mcp.public を設定する

投稿更新の能力を作る場合は、公開状態や削除まで一緒に扱う万能ツールにしないほうがよい。「本文だけ更新」「下書きだけ作成」のように目的を分けるほど、事故の範囲を小さくできる。

4. AIクライアントから接続する

リモートのWordPressへ接続する場合は、公式READMEで案内されている @automattic/mcp-wordpress-remote を利用できる。

設定に必要なのは、主に次の3つである。

WP_API_URL=https://example.com/wp-json/mcp/mcp-adapter-default-server
WP_API_USERNAME=専用ユーザー名
WP_API_PASSWORD=アプリケーションパスワード

実際の設定形式はClaude・Codex・Cursorで異なるが、接続先と資格情報は同じである。資格情報はクライアント設定をGit管理せず、MCP接続プロセスだけが読める場所に置く。

シェルから環境変数ファイルを source する構成では、スペースを含むアプリケーションパスワードを引用符で囲む必要がある。ただし、.env の読み方はツールによって異なるため、常にシングルクォートが必要とは限らない。

また、ファイルを chmod 600 にしても、同じOSユーザーとして動くAIツールがそのファイルを読めるなら秘密にはならない。AIのシェル・ファイルアクセス範囲も合わせて制限したい。

5. 能力を確認する

MCP Adapterの既定サーバーでは、自作能力が tools/list に1件ずつ並ぶわけではない。最初に見えるのは、次の3つの窓口である。

  1. mcp-adapter/discover-abilities で能力を探す
  2. mcp-adapter/get-ability-info で入出力と権限を確認する
  3. mcp-adapter/execute-ability で能力を実行する

先ほどの例なら、一覧に my-site/get-site-name が現れ、実行結果としてサイト名が返れば成功である。

HTTPを直接扱う場合、initialize の応答で Mcp-Session-Id が返されたら、以降のすべてのリクエストへ同じ値を付ける。これを忘れると、能力の登録が正しくてもリクエストが拒否される。

公開前の安全チェック

  • MCP専用の低権限WordPressユーザーを使っているか
  • 削除や公開など、不要な能力を登録していないか
  • 各能力に permission_callback があるか
  • 入出力スキーマと実際の値が一致しているか
  • 資格情報がGitやプロンプトに含まれていないか
  • AIが資格情報ファイルを直接読めない構成か
  • 書き込み能力を本番記事以外で試したか
  • アプリケーションパスワードをすぐ失効できる状態か

まとめ

MCP Adapterの導入で難しいのは、接続そのものよりも「どの能力を、どの権限で、どこまで公開するか」を決めることである。

低権限ユーザー、用途を絞った能力、資格情報の隔離を組み合わせれば、AIにWordPress全体を預けず、必要な仕事だけを任せられる。

最初は読み取り専用の小さな能力から始め、確認できた範囲だけ少しずつ広げるのが安全である。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次