技術

WordPress MCP Adapter を入れてみたけど、abilities が空で詰んでいる話

2025年11月21日 BY iminai73

やりたかったこと

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 スクリプトで使うもの)がインストールされます。

② Composer (PHP) 依存関係のインストール

次に PHP 側のライブラリを入れます。

自分の環境には composer コマンドが入っていなかったので、
まずは composer.phar をダウンロードしました。

その上で、プロジェクトディレクトリ内で以下を実行:

これで、本番用の PHP ライブラリが vendor ディレクトリ以下にインストールされます。

  • --no-dev … 開発用依存を省く
  • --optimize-autoloader … オートローダーを最適化するオプション

とりあえず「本番向けっぽい」オプションを付けた形です。

③ プラグイン ZIP の作成と WordPress へのインストール

依存関係が入ったら、MCP Adapter の npm スクリプトでプラグイン 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 なタイプでした。

やったこととしては、

  1. GitHub ページから ZIP をダウンロード
  2. WordPress の「プラグイン > 新規追加」から ZIP をアップロード
  3. 有効化ボタンをクリック

だけです。

現時点での設定状況

Abilities API に関しては、プラグインのインストールと有効化以外に特別な設定はしていません。

つまりこの状態では、
Abilities API の“土台”は入っているけれど、具体的な ability(hello-world 的なもの)はまだ自分では登録していない状態です。

このへんが、のちほど出てくる「abilities が空配列」問題にも関係してきそうな気がしています。


MCP クライアント側の設定(mcpServers)

実際に書いている MCP 設定

MCP 側(クライアント側)では、
@automattic/mcp-wordpress-remote を使って WordPress に接続する形にしています。

設定はだいたいこんな感じ:

ポイントとしては、

  • WP_API_URL … MCP Adapter が提供するエンドポイントを指定

    https://サイトURL/wp-json/mcp/mcp-adapter-default-server
  • WP_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以降を普通に待つか…