Model Context Protocol(MCP)は、AIを活用したツールと非公開のデータソースを安全に接続するためのオープン標準です。簡単に言えば、MCPはAIアシスタントとデータソースを安全につなぐ橋渡しの役割を果たし、AIモデルがシステム上で直接操作を実行できるようにします。これにより、APIやデータベースごとにカスタム連携を一から構築する手間を省くことができます。
MCPを利用すると、ClaudeやChatGPTなどのツールからデータに直接アクセスできるようになります。AIが推測に頼るのではなく、ファイルシステム、社内ドキュメント、データベースなどからリアルタイムで情報を取得し、普段使用しているアプリ上でさまざまな操作を実行できます。
オンラインビジネスにとっても、大きな可能性が広がります。WordPressサイトをClaude DesktopなどのMCPクライアントに接続することで両者が連携し、WordPressサイトに登録されたAbilitiesを通じてAIエージェントの機能を活用できるようになります。
少し複雑に感じるかもしれませんが、今回はWordPressサイトとClaude MCPクライアントの設定方法から、Claude Desktopを使ってサイト上で操作を実行する方法まで、手順を追ってご紹介します。
具体的な手順に入る前に、まずはModel Context Protocolの基本的な概念を押さえておきましょう。
MCPの基本概念と用語
Model Context Protocolを通じてWordPressサイトをAIモデルと連携する場合、どのようなコンポーネントが連携して動作するのかを理解しておくことが重要です。
MCPクライアント:AIホストをMCPサーバーに接続するソフトウェアコンポーネント。AIホストとは、Claude Desktopなど、ユーザーが実際に操作するアプリケーションを指し、MCPクライアントはサーバーとの接続を担うプロトコルレベルのコンポーネント。
MCPサーバー:標準化されたプロトコルを通じて、特定の機能をAIアプリケーションに提供するソフトウェアアプリケーション(またはプロセス)。ファイルシステムサーバー、データベースサーバー、カレンダーサーバーなどがある。
MCPアダプター:MCPクライアントとWordPressサイトのコアを双方向につなぐ変換レイヤー。WordPressサイトのAbilitiesをModel Context Protocolの仕様に変換することで、AIエージェントがサイトの機能をMCPツールとして検出・実行したり、サイトのデータをMCPリソースとして読み取ったりできるようになる。
Abilities API:WordPressコアとプラグインを含むすべてのコンポーネントが、その機能を人間とマシンの両方にとって理解しやすい統一された形式で公開できるようにするアーキテクチャレイヤー。開発者は、厳密な入出力スキーマを持つ標準化された自己記述型のアクションを登録でき、AIはそれらを検出して自律的に実行できる。

WordPressとMCPでできること
AIエージェントをWordPressサイトに接続すると、AIの機能を活用して、AIホストアプリケーションから直接データを読み取ったり、複雑な操作を実行したりできるようになります。
AIホストを通じて、コンテンツの管理、管理・メンテナンス作業、サイトの状態監視、ユーザー管理、商品カタログの更新、注文の分析など、さまざまな操作を行えます。単に個々の操作を実行するだけでなく、WordPress管理画面を開くことなく、サイトの運用全体を管理できるようになります。
たとえば、記事の長さやトーン、分析の詳しさなどの大まかな条件を指定して、AIに記事の下書きを作ってもらうなど。さらに、画像の生成やリアルタイムの計算を行い、割合や実数値をまとめた表を記事に追加するよう指示することも可能です。
さまざまな作業を自動化することで、運用効率も高まります。たとえば、新規ユーザーのオンボーディング時に組織内での役割に応じて権限を自動的に割り当てたり、過去四半期の商品別売上を分析したり、チーム向けのサマリーレポートを自動生成したりできます。
Abilities APIを活用すれば、さらに高度な自動化も可能で、WordPressをAIが管理する自動化ワークフローにシームレスに組み込まれた、AIエージェントのハブとして機能させることができます。AIエージェントは、市場動向、価格変動、気象状況などの外部情報を監視しながら、データベースから在庫状況や購入履歴を確認し、そのデータに基づいて自律的に判断を下します。
サイト所有者側が行うのは、AIエージェントに自然言語で指示を出すことのみで、その後はAIエージェントが一連の作業を組み合わせ、ワークフロー全体を実行します。
MCPを使用してAIエージェントをWordPressサイトに接続する方法
コードの記述や設定に入る前に、まずはシステム要件を確認しておきます。MCPを使用してWordPressサイトをAIクライアントに接続するには、以下が必要です。
- 開発用WordPressサイト:最低要件はWordPress 6.9だが、7.0以降の使用を推奨
- ローカル環境にインストールしたNode.js
- Claude Desktop:Anthropic公式のMCPホストアプリケーション
- 任意のコードエディター:このチュートリアルではVS Codeを使用
- テスト用のAPIクライアント(Postmanなど)
WordPressを設定する
WordPressのAbilities APIを使用するため、WordPress 6.9以降をインストールしたステージング環境または開発環境が必要です。ローカル環境で作業する場合は、URL書き換えが有効になっていることを確認してください。
ステップ1. WordPress MCP Adapterプラグインをインストールする
まず、GitHubからMCP Adapterのプラグインの.zipファイルをダウンロードし、WordPressサイトにインストールします。プラグインを有効化すると、デフォルトのMCPサーバーが自動的に登録され、以下のアドレスからアクセスできるようになります。
https://yoursite.com/wp-json/mcp/mcp-adapter-default-server
このサーバーへのリクエストには認証が必要です。認証せずにリクエストを送信すると、以下のレスポンスオブジェクトが返されます。
{"code":"rest_forbidden","message":"Sorry, you are not allowed to do that.","data":{"status":401}}
認証については、後ほどご説明します。
次に、mcp名前空間が正しく登録されていることを確認します。ブラウザまたはPostmanから、以下のリクエストを送信してください。
https://yoursite.com/wp-json/
レスポンス内にmcp名前空間があることを確認します。
{
"name": "WordPress 7.0",
"description": "",
"url": "http://yoursite.com",
"home": "https://yoursite.com",
"gmt_offset": "0",
"timezone_string": "",
"page_for_posts": 0,
"page_on_front": 345,
"show_on_front": "page",
"namespaces": [
"oembed/1.0",
"mcp",
"wp/v2",
"wp-site-health/v1",
"wp-block-editor/v1",
"wp-abilities/v1"
],
...
}
mcp名前空間が表示されていれば、MCPサーバーは正常に動作しています。表示されない場合は、プラグインが有効になっているか、対応するバージョンのWordPressを使用しているかを確認してください。
これでWordPressサイトをMCPサーバーとして利用する準備が完了です。続いて、Claude DesktopのMCPクライアントがサイトと通信して操作を実行できるよう、必要なAbilityを登録します。今回の例では、投稿の下書きを作成するAbilityを登録します。
ステップ2. プラグインでAbilityを登録する
任意のコードエディターを開き、新しいファイルを作成して、以下のコードを記述します。
<?php
/**
* Plugin Name: My MCP Test Plugin
* Description: Demonstration plugin for creating posts via MCP.
* Version: 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
add_action( 'wp_abilities_api_init', 'kinsta_mcp_register_simple_draft_ability' );
/**
* Registers a minimal ability to create post drafts.
* This acts as a formal contract between the underlying PHP logic and the AI client.
*
* @return void
*/
function kinsta_mcp_register_simple_draft_ability(): void {
if ( ! function_exists( 'wp_register_ability' ) ) {
return;
}
wp_register_ability(
'kinsta-plugin/create-draft',
array(
'category' => 'post',
'label' => __( 'Create Post Draft', 'kinsta-mcp-draft' ),
'description' => __( 'Creates a new post draft with a title and content provided by the AI agent.', 'kinsta-mcp-draft' ),
'input_schema' => array(
'type' => 'object',
'properties' => array(
'title' => array(
'type' => 'string',
'description' => __( 'The headline or title of the post draft.', 'kinsta-mcp-draft' ),
),
'content' => array(
'type' => 'string',
'description' => __( 'The body text or content generated for the draft.', 'kinsta-mcp-draft' ),
),
),
'required' => array( 'title', 'content' ), // Mandatory fields for the AI payload
),
'permission_callback' => function(): bool {
return current_user_can( 'edit_posts' );
},
'execute_callback' => function( array $args ): array {
$post_id = wp_insert_post( array(
'post_title' => sanitize_text_field( $args['title'] ),
'post_content' => wp_kses_post( $args['content'] ),
'post_status' => 'draft',
'post_type' => 'post',
) );
if ( is_wp_error( $post_id ) ) {
return array(
'success' => false,
'error' => $post_id->get_error_message()
);
}
return array(
'success' => true,
'message' => __( 'Draft saved successfully!', 'kinsta-mcp-draft' ),
'post_id' => $post_id
);
},
// Explicitly flag this ability as public to expose it through the default MCP Server
'meta' => array(
'mcp' => array(
'public' => true,
),
// Also expose within the native WordPress REST API
'show_in_rest' => true,
),
)
);
}
このプラグインの要点は以下のとおりです。
- Abilityの登録:
wp_register_ability()関数をwp_abilities_api_initアクションにフック - 1つ目の引数:名前空間を含むAbility名(
kinsta-plugin/create-draft)を指定 - 2つ目の引数:Abilityの設定パラメータを指定
input_schema:Abilityが受け取る入力形式を定義する配列。この例では、titleとcontentという2つの必須テキスト文字列を含むオブジェクトを受け取るpermission_callback:エージェントがAbilityの実行に必要な権限(edit_posts)を持っているかを確認する関数execute_callback:Abilityの実行時に呼び出されるコールバック関数。この例では、wp_insert_postを使用して新しい投稿の下書きを作成meta.mcp.public:MCP Adapterのデフォルトサーバー経由でAbilityを利用可能にするフラグ(詳しくはこちら)
ここでは、Abilities APIの詳細までは掘り下げませんが、気になる方はこちらのAbilities API入門をご覧ください。
最後にファイルを保存してzip形式に圧縮し、プラグインとしてサイトにアップロードします。有効化したら、次のステップに進みましょう。
ステップ3. アプリケーションパスワードを生成する
Postmanで一連の接続をテストする
Claude Desktopを設定する前に、Postmanを使用して一連の接続をテストしておくことをおすすめします。問題が発生した場合に、原因をすばやく特定しやすくなります。
ステップ1. 最初のハンドシェイクをテストする
まず、以下のPOSTリクエストを送信して、最初のハンドシェイクをテストします。
https://yoursite.com/wp-json/mcp/mcp-adapter-default-server
リクエストには認証が必要です。PostmanでHTTPリクエストを作成したら、「Authorization(認証)」>「Basic Auth(基本認証)」を選択し、WordPressのユーザー名とアプリケーションパスワードを入力します。

次に、以下のヘッダーを追加します。
Content-Type: application/json
Accept: application/json, text/event-stream

「Body(リクエストボディ)」タブに切り替え、「raw」>「JSON」を選択して、以下のリクエストボディを設定します。
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"postman","version":"1.0"}}}

「Send(送信)」をクリックします。MCPサーバーが正常に動作していれば、「200 OK」のステータスコードと、以下の画像のようなJSONレスポンスが表示されます。

レスポンスには「mcp-session-id」ヘッダーが含まれています。次のテストで使用するため、この値をコピーしておいてください。

ステップ 2. Abilityが認識されていることを確認する
次に、登録したAbilityが正しく認識されていることを確認します。先ほどと同じURLとBasic Authを使用し、設定済みのヘッダーに「mcp-session-id」ヘッダーを追加します。リクエストボディには、以下のJSONオブジェクトを使用します。
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"mcp-adapter-discover-abilities","arguments":{}}}
以下のスクリーンショットは、MCPサーバーのレスポンス本文です。

JSONレスポンスには、登録したAbilityの名前(今回の例ではkinsta-plugin/create-draft)が含まれているはずです。
ステップ 3. PostmanからAbilityを実行する
最後に、PostmanからAbilityを実行してみましょう。URL、Basic Auth、ヘッダーはそのままで、リクエストボディのみ以下の内容に変更します。
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"mcp-adapter-execute-ability","arguments":{"ability_name":"kinsta-plugin/create-draft","parameters":{"title":"Postman test","content":"Test content from Postman"}}}}

次に、WordPress管理画面を開いて、「Postman test」という下書きが作成されていることを確認します。
ここまで問題やエラーなく進められたら、最後のステップとなるClaude Desktopの設定に進みます。
Claude Desktopを設定する
次に、公式の@automattic/mcp-wordpress-remoteプロキシを使用して、Claude DesktopをWordPressサイトに接続します。このプロキシは、STDIO経由のMCP呼び出しを、WordPress REST APIへの認証済みHTTPリクエストに変換します。
ステップ 1. 設定ファイルを編集する
Claude Desktopから直接設定ファイルを開きます。画面左下にある自分の名前のアイコンをクリックし、「Settings(設定)」>「Developer(開発者)」>「Edit Config(設定ファイルを編集)」の順に移動します。

claude_desktop_config.jsonファイルが保存されている場所が開きます。ファイルを開き、現在の内容を以下のコードに置き換えます。
{
"mcpServers": {
"wordpress-kinsta": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "https://yoursite.com/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "your-wp-username",
"WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx",
"OAUTH_ENABLED": "false"
}
}
}
}
プレースホルダーを実際の情報に置き換えてからファイルを保存し、Claude Desktopを完全に終了してください。ウィンドウを閉じるだけでは、バックグラウンドで動作し続ける可能性があるため、システムトレイから終了してください。
ステップ 2. Claude Desktopで接続を確認する
Claude Desktopを再度開き、(自分の名前)>「Settings」>「Developer」に移動します。ここにローカルMCPサーバーの一覧が表示されます。ここまでの手順が正しく完了していれば、wordpress-kinstaサーバーの概要タブが表示され、ステータスが「running(稼働中)」になっていることを確認できます。

次に、wordpress-kinstaサーバーで利用できるツールの一覧を表示するようClaudeに指示します。Claude Desktopから、以下のように利用可能なツールの一覧が返されます。

前述のとおり、すべてのAbilityの識別子を把握しておく必要はありません。AIに実行してほしい内容を伝えるだけで、モデルが登録済みのAbilityを検出し、適切なAbilityとそのパラメータを特定したうえで、正しい値を使って実行します。

特定のAbilityについて詳しい情報を取得する際には、wordpress-kinsta MCPサーバーの「Get Ability Info(Ability情報を取得)」をClaudeが使用することへの許可を求められます。リクエストを承認すると、そのAbilityの詳細情報がClaudeに表示されます。

AIにAbilityの実行を依頼する
最後に、Claudeに最初のリクエストを送り、投稿の下書きを作成してみましょう。もちろん、具体的な条件を指定したプロンプトを使って、本文の生成もClaudeに依頼できます。以下はその一例です。

ClaudeによるAbilityの実行を許可すると、数秒後に結果が返されます。処理が完了すると、チャットには以下のような内容が表示されます。

次に、WordPress管理画面を開き、「投稿」画面に移動します。指定したタイトルで下書きが作成されていることを確認してください。下書きを開くと、エディターには以下のように生成された内容が表示されます。

わずか数秒で生成されたことを考えると、かなり完成度の高い仕上がりになっています。
ただし、生成されたコンテンツはすべてHTML形式です。これは、今回作成したプラグインに、コンテンツの各セクションをGutenbergブロックに変換する処理が含まれていないためです。

そこで今度は、コンテンツをGutenbergブロック形式にするようClaudeに指示して、同じリクエストを実行してみました。チャットには以下のような回答が返されました。

WordPressのコードエディターで下書きを確認すると、以下のように表示されます。

AIエージェントと連携するWordPressサイトには高性能なインフラが不可欠
Model Context Protocolを通じてWordPressサイトをAIモデルに接続すると、サイトの性質は大きく変わります。キャッシュから静的ページを配信したり、ユーザーからの個々のリクエストに応答したりするだけではありません。MCPを介してAIクライアントと通信するには、これまでとはまったく異なる種類のリクエスト負荷をWordPressで処理する必要があります。
AIエージェントは、わずか数秒の間に数十件ものRESTリクエストを実行することがあります。人間のユーザーでは考えられないほど短時間に、大量のリクエストが連続して発生することになります。さらに、MCPリクエストはページキャッシュを完全に迂回し、ハンドシェイクのたびにPHPスレッドを直接使用します。そのため、PHPとデータベースの処理性能が十分に最適化されていなければ、投稿の下書きをプログラムで作成するといった重要な処理の途中でタイムアウトが発生する可能性があります。
公開するAbilityでは、セキュリティも重要です。MCP経由で公開されるAbilityはそれぞれエンドポイントとなるため、適切に保護する必要があります。APIではpermission_callbackを定義でき、アプリケーションパスワードによるリクエストの認証も必須ですが、ウェブアプリケーションファイアウォール(WAF)、隔離コンテナ技術、SSL証明書の自動化、IPアドレスのブロックといった強固なセキュリティ対策を提供するサーバーサービスを利用することで、攻撃対象領域を大幅に縮小し、不正アクセスのリスクを軽減できます。
サイトに登録したAbilityを本番環境に導入する前にテストするには、本番サイトとまったく同じ技術スタックで動作し、HTTPSに対応したステージング環境が欠かせません。また、MCPを利用して信頼性の高いAI連携を構築するには、SSHやWP-CLIなどの開発者向けツールも重要です。
AIツールと継続的に通信するサイトでは、可観測性も重要になります。APMツールやサーバーログを利用できれば、バックグラウンドで何が起きているのかを把握し、HTTPリクエストがエラー表示なしに失敗する原因を調査したり、サイトのアーキテクチャ内でボトルネックになっている箇所を特定したりできます。
こうした理由から、現代のWordPressサイトに必要なアーキテクチャ、ツール、手厚いサポートを備えたインフラとサーバーサービスを選ぶことが、これまで以上に重要になっています。Kinstaでは、これらすべてを一元化されたコントロールパネルから利用できます。
ダッシュボードからサイトに直接アクセスし、パフォーマンス監視を開始したり、SSHのログイン情報を確認したり、サイトログをダウンロードしたり、専門知識を持つサポートチームに問い合わせたりできます。AIによる自動化でさらに高い処理能力が必要な場合は、PHPパフォーマンスを最適化したり、プレミアムステージング環境アドオンを追加したりすることで、テスト環境と本番環境の両方で高い応答性を確保できます。