WordPress MCP Adapter を入れてみたけど、abilities が空で詰んでいる話
※この記事は未解決のハマりログです
やりたかったこと
WordPress に MCP Adapter と Abilities API を入れて、「Claude DesktopやVSCodeなどのMCPから WordPress の機能をいい感じに操作してみたい」というのが目標でした。
ローカルじゃなく、実際に動いている WordPress サイトに対して、
- 記事を取ってきたり
- ちょっとした処理を投げたり
みたいなことができたら便利だよね、というノリです。
先に結論を書くと、この記事の時点ではまだ問題は解決していません。
- MCP Adapter プラグインはビルドしてインストール済み
- Abilities API プラグインもインストール&有効化済み
- MCP 側からもサーバーとツールは認識されている
……ところまでは行ったのですが、
いざ abilities を取得しようとすると空配列が返ってくる、というところで止まっています。
なのでここでは、
- ここまでにやったセットアップの手順
- いま実際に起きている症状
- 現時点で自分が怪しいと思っているポイント
を、そのまま「途中経過のメモ」として残しておきます。
同じところでハマっている人の参考になったり、
詳しい人が読んで「ここじゃね?」と気づいてくれたら嬉しい、くらいの温度感です。
MCP Adapter プラグインのビルド手順メモ
GitHub の開発リポジトリから取得
MCP Adapter 自体は WordPress.org の公式プラグインディレクトリにはまだなく、
https://github.com/WordPress/mcp-adapter
こちらに開発中のリポジトリが置いてあります。
ただ、このリポジトリをそのまま ZIP にしてアップロードしても、
そのままでは WordPress プラグインとしては動きません。
そのため、ローカルにGitリポジトリをクローン後にビルドプロセスを実行して、
最終的に WordPress にインストールできる mcp-adapter.zip を自前で作成しました。ここら辺はGoogle Antigravityに聞くという体でほぼ全て任せてました。作業者の意味…
① npm 依存関係のインストール
まずは Node 周りの依存関係を入れます。
- リポジトリをクローンしてカレントディレクトリを移動
- そこで以下を実行:
npm install
これでビルドに必要なツール類(npm スクリプトで使うもの)がインストールされます。
② Composer (PHP) 依存関係のインストール
次に PHP 側のライブラリを入れます。
自分の環境には composer コマンドが入っていなかったので、
まずは composer.phar をダウンロードしました。
その上で、プロジェクトディレクトリ内で以下を実行:
php composer.phar install --no-dev --optimize-autoloader
これで、本番用の PHP ライブラリが vendor ディレクトリ以下にインストールされます。
--no-dev… 開発用依存を省く--optimize-autoloader… オートローダーを最適化するオプション
とりあえず「本番向けっぽい」オプションを付けた形です。
③ プラグイン ZIP の作成と WordPress へのインストール
依存関係が入ったら、MCP Adapter の npm スクリプトでプラグイン ZIP を生成します。
npm run plugin-zip
これを実行すると、
mcp-adapter.zip が生成されるので、あとは普通のプラグインと同じようにインストールしました。
Abilities API プラグインの導入メモ
GitHub から Download ZIP → 有効化
MCP Adapter とセットで使う Abilities API は、こちらのリポジトリにあります。
https://github.com/WordPress/abilities-api
こちらは MCP Adapter と違って、
GitHub の Download ZIP をそのままプラグインとして入れれば OK なタイプでした。
やったこととしては、
- GitHub ページから ZIP をダウンロード
- WordPress の「プラグイン > 新規追加」から ZIP をアップロード
- 有効化ボタンをクリック
だけです。
現時点での設定状況
Abilities API に関しては、プラグインのインストールと有効化以外に特別な設定はしていません。
つまりこの状態では、
Abilities API の“土台”は入っているけれど、具体的な ability(hello-world 的なもの)はまだ自分では登録していない状態です。
このへんが、のちほど出てくる「abilities が空配列」問題にも関係してきそうな気がしています。
MCP クライアント側の設定(mcpServers)
実際に書いている MCP 設定
MCP 側(クライアント側)では、
@automattic/mcp-wordpress-remote を使って WordPress に接続する形にしています。
設定はだいたいこんな感じ:
{
"mcpServers": {
"wordpress-http-default": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "https://WordPressのサイトURL/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "ユーザー名",
"WP_API_PASSWORD": "アプリケーションパスワード(※上記のユーザーで発行したもの)"
}
}
}
}
ポイントとしては、
WP_API_URL… MCP Adapter が提供するエンドポイントを指定https://サイトURL/wp-json/mcp/mcp-adapter-default-serverWP_API_USERNAME… WordPress のユーザー名WP_API_PASSWORD… そのユーザーで発行したアプリケーションパスワード
MCP サーバーと各ツールは認識されている
この設定で MCP クライアント側から接続してみると、
- MCP サーバー自体は認識される
- ツールやリソースも「存在している」ことまでは確認できる
というところまでは成功しています。
つまり、「まったく繋がっていない」状態ではない ところまでは辿り着けました。
ただ、ここからが本題で、
いざ abilities を取ろうとすると空配列になってしまう、という問題にぶつかっています。
abilities が空配列で返ってくる問題
実際に起きている症状(abilities 空)
MCP サーバーとツールは認識されているのに、
実際に abilities を問い合わせると 空の配列 が返ってきます。
MCPサーバーと各ツールが認識された。しかし…
いざ実行すると abilities が空配列で返ってくる。
という状態。
「MCP Adapter と Abilities API も入れてるのに、なんで ability が 0 件なんだ?」というのが、今の素直な感想です。
405 エラー(Method Not Allowed)の発生
さらに、エンドポイントを直接叩いてみたときに、
405 エラー(Method Not Allowed) が返ってきました。
405エラー(メソッドは使用できません)が返ってきました。
これはエンドポイントが存在するものの、GETメソッドではなく、おそらくPOSTメソッドを期待しているということです。
- エンドポイント自体(URL)は存在している
- ただし、GET でアクセスすると 405 を返す
という挙動なので、
「エンドポイントはあるけど、MCP 的には POST 前提で動くものをブラウザから生 GET している」
という可能性が高そうです。
ここはまだ完全に切り分けきれていないですが、
少なくとも 405 が出ている=abilities が空になっている直接の原因 というよりは、
- 「本来の使い方(JSON-RPC の POST)じゃない叩き方をしたときの副産物」
に近い気がしています。
現時点で立てている仮説
abilities が空になっている理由として、現時点で自分が疑っているのはこのあたりです:
- WordPress 側の MCP Adapter プラグインに「機能(abilities)」が登録されていない
- または MCP サーバーの実装がまだ完全ではなく、Abilities API 側の登録を拾えていない
- そもそも WordPress サイト側で、MCP Adapter プラグインに実際の機能(例:
hello-worldなど)を登録する必要があるが、開発版等の理由から現状そこまでやっていない
実際に WordPress 側で見ておきたい場所
現時点で「ここは一度ちゃんと確認しておきたい」と思ってメモしているのはこのあたり:
/wp-content/plugins/mcp-adapter/includes/Abilities/以下のファイル構成
→ Abilities 関連のクラスや定義が正しい形式で書かれているか- プラグインのオートローダーが、Abilities に関するクラスを正しく登録しているか
- WordPress のデバッグログ(
wp-content/debug.logなど)に、
MCP Adapter / Abilities API 関連のエラーが出ていないか
また、内部で使われていそうな
mcp_wordpress-htt_mcp-adapter-discover-abilities
的な処理が空配列を返しているということは、
- WordPress 側の MCP Adapter が Abilities を見つけられていない
- もしくは Abilities の登録プロセスに何らかの問題がある
可能性が高いのかな、という感触です。
ひとまずのまとめと今後やるつもりのこと
現時点では、
- MCP Adapter / Abilities API のインストール&有効化
- MCP クライアント側からの接続(サーバー/ツール認識)
までは到達しているものの、
- abilities を取得しようとすると空配列
- エンドポイントに GET でアクセスすると 405
という状態で止まっています。
WordPress 側で今後やるつもりのこととしては:
- WordPress のログ(デバッグログ)をちゃんと確認する
- MCP Adapter / Abilities API プラグインの再登録を試す
- 自作の小さな ability(たとえば
hello-world的なもの)を 1 個だけ登録してみて、
それが abilities 一覧に出てくるかテストする
あたりを、少しずつ潰していく予定です。
この記事は、ひとまず 「abilities が空のまま沼っている地点でのメモ」 なので、
今後進展があったら「解決編」か、この記事の続きとして追記するかもしれません。それか素直にWordPressの6.9以降を普通に待つか…