WordPress公式のMCP Adapterを試してみた|AIにサイトを触らせる境界の作り方

AIにWordPressの記事を書かせたい、と考えたことのある人は多いはずだ。

手軽なのは、WordPressのREST APIとアプリケーションパスワードをAIツールから使えるようにする方法である。実際それで動く。しかし、アプリケーションパスワードは操作ごとに権限を絞る仕組みではない。発行元のWordPressユーザーに許可された範囲で、投稿の公開や削除を含む広い操作ができる。

筆者が欲しかったのは、「何をどこまでやらせるか」を機能単位で決められる仕組みだった。それに答えるのが、WordPress公式の MCP Adapter である。

ただし、これは wordpress.org のプラグインディレクトリに並ぶ公式プラグインではない。管理画面の「プラグインを追加」で検索しても出てこない。Core AIチームがGitHubで公開しており、導入はリリースページ(https://github.com/WordPress/mcp-adapter/releases) から「mcp-adapter.zip」をダウンロードして行う。最新版のzip(https://github.com/WordPress/mcp-adapter/releases/latest/download/mcp-adapter.zip) を直接取得してもよい。

目次

そもそもMCPとは何か

MCP(Model Context Protocol) は、AIと外部サービスをつなぐための共通規格である。もともとAnthropicが公開したもので、いまはClaude・Codex・Cursorなど主要なAIツールが対応している。

イメージとしては AIにとってのUSB端子 が近い。以前はAIとサービスの組み合わせごとに専用の接続方法が必要だったが、端子の形を共通化すれば、対応するもの同士を同じ考え方でつなげられる。

WordPressとMCPをつなぐときは、次の3語を押さえればよい。

用語役割
MCPAIと外部サービスをつなぐ共通規格
Abilities APIWordPressに「外部から呼べる機能」を登録する仕組み。WordPress 6.9からコアに標準搭載された
MCP Adapter登録した機能をMCP経由で利用できるようにする公式パッケージ。コア未同梱で、GitHubからプラグインとして導入する

登録する1つ1つの機能を 能力(ability) と呼ぶ。「投稿一覧を返す」「指定した投稿の本文を書き換える」といった単位である。

なお、筆者が最初に検証したMCP Adapterは0.5.0だったが、執筆時点の最新版は 0.6.1 である。0.6系はWordPress 6.9以上が必須となり、WordPress 6.8と単体版Abilities APIを組み合わせる方法はサポート対象外になった。導入時は古い解説ではなく、必ずGitHubの公式リリース(https://github.com/WordPress/mcp-adapter/releases) の要件を確認したい。

MCP Adapterで作れる境界

MCP Adapterの魅力は、AIにMCP経由で見せる機能を自分で決められる点にある。

REST APIへ直接アクセスさせる場合、操作の可否は認証したWordPressユーザーの権限と各エンドポイントの権限判定に委ねられる。一方、MCP Adapterでは、AIクライアントに公開する能力を機能単位で絞り込める。

鍵をそのまま渡すのではなく、通ってよいドアを1枚ずつ作るイメージだ。「削除しないで」とプロンプトでお願いするのではなく、削除能力を用意しなければ、少なくともMCPの窓口からは削除できない。

ただし、これはMCP経由の操作範囲を狭める仕組みであり、アプリケーションパスワード自体を低権限に変えるものではない。AIが同じOSユーザーのシェルやファイルを自由に読める環境では、資格情報を別経路で取得される可能性がある。能力の制限と、資格情報の隔離は別々に考える必要がある。

実際に作った7つの能力

筆者は練習用のlogsサイトに、7つの能力を持つ小さなプラグインを作った。

能力できること
list-posts記事一覧を返す。本文は返さない
get-post記事を1本取得し、生のブロック本文を返す
create-post記事を必ず下書きで作成する
update-postタイトル・本文・抜粋だけを書き換える
list-terms利用できるカテゴリーとタグを調べる
list-mediaメディアライブラリを検索する
get-media画像の実寸とWordPressが生成した srcset を返す

安全弁は、運用ルールではなくコード側に持たせた。

  • 削除、ゴミ箱への移動、公開状態変更の能力は作らない
  • create-post は下書き固定にし、公開状態を受け取る項目自体を持たせない
  • カテゴリーとタグは既存のものだけを使い、勝手に分類を増やさない
  • update-post は取得時の更新日時を照合し、他所で編集されていたら上書きを拒否する
  • 更新直前の内容をリビジョンとして保存し、戻し先を確保する

そして、この記事自体もMCP経由で取得・編集している。WordPress管理画面を開かなくても、「読む・直す・書き戻す」という流れで更新できるようになった。

地味に効いたのは画像の能力だった

意外と効果が大きかったのが get-media である。

WordPressは画像をアップロードすると縮小版を自動生成するが、どのサイズが存在するかは画像によって異なる。筆者は以前、それを推測して srcset を手書きし、画像10本を404にしたことがある。高解像度端末でしか再現せず、発見も遅れた。

get-media は、WordPress自身が組み立てた srcset と、実在するサイズの寸法を返す。AIが推測しなくて済む窓口を用意することも、安全設計の一部なのだと実感した。

導入の全体像

導入作業は、大きく4段階に分かれる。

  1. WordPress 6.9以上へ更新し、GitHubの最新リリース(https://github.com/WordPress/mcp-adapter/releases/latest) からMCP Adapterを導入する
  2. 専用の低権限WordPressユーザーとアプリケーションパスワードを用意する
  3. wp_register_ability() で必要な能力だけを登録する
  4. MCPクライアントから接続し、能力の発見・仕様確認・実行を試す

プラグインの最小コード、クライアント設定、動作確認方法は、WordPress MCP Adapterの導入手順|Abilities APIで自作機能を安全に公開するに分けた。この記事では、実際につまずいた点をもう1つだけ残しておく。

つまずいたのは「一覧に出てこない」ことだった

能力を登録しても、既定サーバーのツール一覧に get-post などが1つずつ並ぶわけではない。MCP Adapterの既定サーバーは、次の3つの窓口を見せる設計になっている。

  • 公開されている能力を探す
  • 能力の入出力や権限を調べる
  • 能力名と入力値を指定して実行する

AIは「探す・調べる・実行する」という順番を踏む。能力が増えてもツール一覧が膨れない合理的な設計だが、知らずに触ると登録失敗だと誤解しやすい。

専用クライアントを使わず、Streamable HTTPを直接扱う場合はセッションにも注意が必要である。initialize の応答で Mcp-Session-Id が返されたら、以降のリクエストにはその値を付ける必要がある。

資格情報は「同じユーザーからも読ませない」

アプリケーションパスワードをGitリポジトリに置いてはいけない。さらに、ホームディレクトリのファイルを chmod 600 にするだけでも十分ではない。これは他のOSユーザーから守る設定であり、同じユーザー権限で動くAIツールへのアクセス制限にはならないからである。

実運用では、次を組み合わせたい。

  • WordPress側に専用の低権限ユーザーを作る
  • 資格情報をプロンプトやリポジトリへ書かない
  • MCP接続プロセスだけが資格情報を読める構成にする
  • AIツールのシェル・ファイルアクセス範囲を必要最小限にする
  • 不要になったアプリケーションパスワードは失効させる

MCP Adapterは強力な境界になる。しかし、その外側にある資格情報まで自動的に守ってくれるわけではない。

まとめ

  • MCP はAIと外部サービスをつなぐ共通規格である
  • WordPressでは Abilities API に機能を登録し、MCP Adapter がそれをAIへ公開する
  • 削除や公開の能力を作らなければ、MCP経由の操作範囲をコードで狭められる
  • 既定サーバーでは「探す・調べる・実行する」の3窓口を経由する
  • 能力を絞るだけでなく、低権限ユーザーと資格情報の隔離も必要である
  • AIに書かせることより先に、どこまで触らせるかを決めるほうが先である
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次