WordPress MCPでClaude連携する手順|エックスサーバー編

WordPress のサイトと AI アシスタントが鍵付きの線で安全に接続されているイラスト 環境構築
自前運用の WordPress と Claude を MCP で連携する

はじめに

コピー&ペーストで編集する手間をなくし、Claude から WordPress の記事を操作したいと考えました。

調べると、Claude の WordPress.com 用コネクタは WordPress.com で作ったサイト専用で、レンタルサーバーに設置した WordPress では使えません。そこで、WordPress に MCP サーバーの役割を持たせるプラグインを入れ、Claude のカスタムコネクタとして接続する方法を採りました。

本記事では、エックスサーバー上の WordPress にプラグイン「Easy MCP AI」を導入し、WordPress MCP で Claude と連携して記事一覧を取得できるまでの手順を解説します。途中でつまずいた点も、原因と対処をあわせて紹介します。

Claude のチャット画面に、公開日とタイトルの表で記事一覧が表示されている
Claude のチャットから WordPress の記事一覧を取得できた画面

本記事のまとめ

  • WordPress は、MCP プラグインと Claude のカスタムコネクタで連携できる。Easy MCP AI なら OAuth のクライアント ID を入力せずに接続できる。
  • AI に渡すのは編集者ロールの専用ユーザーにし、「作成した記事は必ず下書き」「削除系ツールは無効」にしてから繋ぐ。
  • 接続前に、サイトアドレスの https://・Authorization ヘッダーの受け渡し・国外アクセス制限の 3 点を確認する
  • エックスサーバーでは REST API の国外アクセス制限が既定で有効なため、Claude からの接続が 403 になる。

WordPress を Claude に繋ぐ方法とプラグインの選び方

WordPress を Claude に繋ぐには、WordPress 自体を MCP サーバーにするプラグインが必要です。MCP(Model Context Protocol)は、AI アプリが外部ツールを呼び出すための共通規格のことです。MCP サーバーは、AI から呼び出せる操作(記事の取得や下書きの作成など)を提供する側を指します。

2026 年に入って WordPress 向けの MCP プラグインは一気に増えました。私が比較した候補は次のとおりです。

プラグイン特徴判断
Easy MCP AI244 ツールが既定で有効。OAuth 2.1 対応。WordPress 上の PHP だけで動く採用
Agent Abilities for MCP全 ability(AI に公開する機能の単位)が既定で OFF。設計は堅いが利用実績の情報が少ない見送り
Enable Abilities for MCP初回有効化で全 ability が ON になる。MCP Adapter(WordPress 公式の MCP 接続用プラグイン)が別途必要見送り
WPVibe外部のクラウドリレーとアカウント登録が必須。無料プランは操作回数に上限あり不採用

なお、以前は Automattic の wordpress-mcp を紹介する記事が多くありましたが、このリポジトリは 2026 年 1 月にアーカイブされ、WordPress 公式の MCP Adapter への移行が案内されています。古い手順を参考にする場合は注意してください。

どれも登場から日が浅く、インストール数は実績の指標として機能しません。そこで個人ブログという前提で、「参考情報の多さ」と「接続してすぐエージェントから動かせるか」を軸に選びました。

Easy MCP AI は MCP サーバーが WordPress 上の PHP として動き、外部の中継サービスやベンダーアカウントを必要としません。認証は OAuth 2.1 です。OAuth は、パスワードを渡さずに「この操作を許可する」と承認して接続する仕組みのことです。Claude の Web・デスクトップ・Cowork・Claude Code から同じ URL で接続できます。

仕様は Easy MCP AI の公式サイトWordPress.org のプラグインページで確認できます。

WordPress のプラグイン追加画面で Easy MCP AI を検索した結果の一覧
WordPress 管理画面の「プラグインを追加」で Easy MCP AI を検索した結果

導入前に決めた安全設計(専用ユーザー・下書き強制・ツール制限)

AI に書き込み権限を渡す前に、AI が使える機能と権限を絞り、AI が作った記事は必ず下書きになるように設定しました。本番サイトで直接試すため、ここを最初に固めています。

  • MCP 専用ユーザーを編集者ロールで作る。管理者アカウントは AI に渡しません。
  • Force Draft on Create を ON にする。AI が作成した投稿は、指定に関係なく下書きになります。この設定は既定で OFF です。
  • 監査ログと変更履歴を ON にする。ツール呼び出しと、AI による変更の前後の内容が記録されます。
  • 危険なツールをグローバルに無効化する(Disabled Tools)。
  • OAuth 承認に必要な権限を引き上げる。Minimum Capability to Authorize を publish_posts から edit_others_posts(編集者相当)に変更しました。

無効化したツールは次の 19 個です。削除系、ユーザー管理、サイト設定、テーマ編集をまとめて止めています。

wp_delete_post / wp_delete_page / wp_delete_media / wp_delete_comment
wp_delete_category / wp_delete_tag / wp_delete_block / wp_delete_cpt_item
wp_delete_menu / wp_delete_menu_item / wp_delete_revision / wp_delete_user_meta
wp_create_user / wp_update_user / wp_delete_user / wp_update_user_meta
wp_update_site_settings
wp_update_template / wp_update_global_styles
Easy MCP AI の設定画面。Force Draft on Create と Audit Log が有効で、削除系ツールが無効化されている
Easy MCP AI の設定画面(Force Draft on Create・監査ログ・変更履歴が ON の状態)

Easy MCP AI を導入して Diagnostics を通す

プラグインをインストールして有効化したら、Claude に接続する前に、Easy MCP AI の Diagnostics(診断)画面の指摘をすべて解消します。指摘が残ったままだと、接続や認証がどこで失敗しているのか切り分けにくくなるためです。

検証環境は WordPress 7.1.1、PHP 8.2、エックスサーバーのスタンダードプランです。PHP は FastCGI(fpm-fcgi)で動いていました。FastCGI は、Web サーバー(Apache)とは別のプロセスで PHP を動かす実行方式です。Apache に組み込んで PHP を動かす方式とはリクエスト情報の受け渡し方が異なり、これが 2 つ目の指摘に関係します。

診断では 3 つの指摘が出ましたが、対処後は 47 項目中 41 項目が通過し、失敗は 0 件になりました。残りのうち 5 件は時間のかかるチェックで未実行、1 件はサーバーの仕組み上この画面からは確認できないという判定です。

Easy MCP AI の Diagnostics。47 件中 41 件合格・失敗 0 と表示されている
Easy MCP AI の Diagnostics 結果(41 of 47 passed、none failed の表示)

HTTPS 判定で OAuth が失敗する: サイトアドレスを確認する

最初の指摘は、OAuth が使えないという致命的なものでした。

This site is not using HTTPS. The OAuth 2.1 specification requires it

ブラウザでは https で表示されているため、SSL 終端の問題を疑いたくなります。SSL 終端とは、HTTPS の暗号化を WordPress の手前にある別のサーバー(リバースプロキシ)で解く構成のことで、この場合 WordPress には http でアクセスが届くため、HTTPS と判定されないことがあります。しかし原因は、設定 → 一般 の「サイトアドレス (URL)」だけが http:// のままだったことでした。「WordPress アドレス (URL)」は https だったので気づきにくい状態です。

サイトアドレスを https に直して保存するだけで解消しました。エラー文は「HTTPS で配信してください」という定型文で、片方だけ http という実際の原因は示しません。wp-config.php を触る前に、一般設定の 2 つの URL を確認してください。

WordPress の一般設定。WordPress アドレスとサイトアドレスが両方 https になっている
設定 → 一般 の「WordPress アドレス」「サイトアドレス」欄(両方 https に直した状態)

Authorization ヘッダーの警告: FastCGI では CGIPassAuth を追記する

2 つ目は、Authorization ヘッダーを PHP に渡す rewrite が無いという警告です。Authorization ヘッダーは、Claude が OAuth で受け取った認証トークンを載せて送る HTTP ヘッダーです。これが PHP まで届かないと、接続できても「認証されていない」扱いになります。

rewrite ルールは、.htaccess に書くリクエストの書き換え設定です。パーマリンク設定を保存し直しても警告は消えず、.htaccess を見ると rewrite ルールは最初から入っていました。

原因は PHP の実行方式です。FastCGI で動くサイトでは、rewrite ルールではなく CGIPassAuth がヘッダーを PHP に渡しますCGIPassAuth は Apache の設定項目で、Authorization ヘッダーを CGI や FastCGI で動くプログラムへ渡すかどうかを決めます。そこで .htaccess の先頭に次を追記しました。

CGIPassAuth On

<IfModule mod_setenvif.c>
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>

追記後もサーバーエラーは出ず、判定は Warning から Skipped(FastCGI のためここからは確認できない)に変わりました。実際に接続したところトークンは正しく届いたので、この追記で足りています。エックスサーバーでは、サーバーパネルの「.htaccess編集」から編集すると安全です。

PHP のエラーがレスポンスに混ざる: display_errors を OFF にする

3 つ目は、PHP のエラー表示がレスポンスに混ざるという指摘です。display_errors は PHP のエラーを画面(レスポンス)に出力する設定で、ON のままだと MCP の応答にエラー文が混ざり、Claude が応答を読めなくなる恐れがあります。サーバーパネルの「php.ini設定」で display_errors を OFF にしました。wp-config.php の編集は不要でした。

エックスサーバーで REST API が 403 になる原因と対処

Diagnostics を通しても、Claude からは接続できませんでした。エックスサーバーの「国外アクセス制限」が REST API への接続を止めていたためです

REST API は、外部のプログラムから WordPress を操作するための窓口(/wp-json/ 以下の URL)です。Easy MCP AI の MCP サーバーもこの窓口の中にあるため、ここが塞がれると Claude は接続できません。403 は「アクセスが拒否された」ことを示す HTTP のステータスコードです。

カスタムコネクタを追加すると、「サーバーに接続しています」のあと 403 で失敗します。外部から確認すると、OAuth の情報を返す /.well-known/oauth-protected-resource は 200 で JSON を返すのに、/wp-json/ だけが 403 でした。日本のブラウザからは /wp-json/ も正常に表示されます。同じ切り分けは次のように再現できます(example.com は自分のドメインに置き換えてください)。

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/.well-known/oauth-protected-resource
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/wp-json/

海外やクラウド上の環境から実行して 200 と 403 に分かれれば、国外アクセス制限を疑ってよいでしょう。OAuth の情報を返すファイルは /wp-json/ の外に置かれるため、「入口の情報だけ取れて本体が 403」という紛らわしい状態になります。

エックスサーバーの「WordPressセキュリティ設定」には国外アクセス制限があり、REST API も対象です。公式マニュアルによると、国外 IP に加えて海外の主要クラウドサービスが持つ日本国内の IP アドレスからのアクセスも制限されます。Claude のサーバーからの接続は、これに該当したと考えられます。

対処として、国外アクセス制限のうち「REST API アクセス制限」だけを OFF にしました。ダッシュボード、XML-RPC、wlwmanifest.xml の制限は ON のまま残しています。

エックスサーバーの国外アクセス制限。REST API だけ OFF、他は ON
エックスサーバーの WordPressセキュリティ設定 → 国外アクセス制限(REST API のみ OFF の状態)

Claude にカスタムコネクタを追加して OAuth 承認する

Claude の設定からカスタムコネクタを追加します。入力するのは名前と URL だけです。

名前: 任意(例: my-blog)
URL: https://example.com/wp-json/easy-mcp-ai/v1/mcp
OAuth クライアント ID / シークレット: 空欄

クライアント ID とシークレットは空欄で構いません。Easy MCP AI は動的クライアント登録に対応しているためです。動的クライアント登録は、接続時に Claude が自分のクライアント情報を WordPress 側へ自動で登録する仕組みで、ID やシークレットを手で発行する必要がありません。

承認の前に、一度 WordPress からログアウトしてください。承認画面はブラウザの WordPress のログイン状態を使うため、管理者でログインしたまま承認すると管理者権限で繋がります。承認画面で専用ユーザーとしてサインインし、「Acting as」の表示でユーザー名と editor ロールを確認します。

スコープは、Claude に許可する操作の範囲です。承認画面下部の「Read Only」を押してすべて読み取りに揃えてから、書き込みを次の 5 つだけ追加しました。

  • Posts & Pages
  • Media
  • Taxonomies
  • Term Meta
  • All in One SEO

ユーザー管理、サイト設定、テーマ、コメント、メニューの書き込みは渡していません。読み取りはすべて許可しているので、変更履歴や監査ログも会話から参照できます。

Claude の OAuth 承認画面。editor として動くことと、要求された権限の一覧
OAuth 承認画面(「Acting as … (editor)」の表示とスコープ選択)

接続後、Claude から記事一覧の取得(wp_list_posts)と件数の取得(wp_count_posts)が正常に返ることを確認しました。Authorization ヘッダーも問題なく届いていました。

REST API を開くときの補償策

国外アクセス制限を外すと、海外からも REST API に届くようになります。ただしこの制限は国外だけが対象で、日本の IP からは元々開いていました。完全に守られていたものが開くのではなく、フィルタが 1 段粗くなると考えるのが正確です

それでも無策ではよくないので、主なリスク 2 つに対して補償策を入れました。1 つは /wp-json/wp/v2/users からのユーザー名の列挙、もう 1 つはプラグイン由来の未認証エンドポイントへの到達です。

  • プラグインを更新し、停止中のプラグインを削除する。
  • エックスサーバーの「ログイン試行回数制限」を ON にする。
  • XO Security(WordPress のセキュリティ設定プラグイン)で投稿者アーカイブの無効化、oEmbed(記事の埋め込み表示用データ)からのユーザー名削除、バージョン情報と readme.html の削除を ON にする。
  • 管理者の投稿者スラッグ(user_nicename)をログイン名と別の文字列に変える

最後の項目が最も効きます。/wp-json/wp/v2/users が返す slug は初期状態ではログイン名と同じなので、ここからログイン名が推測されます。スラッグを変えれば切り離せます。

XO Security の秘匿タブ。投稿者アーカイブの無効化などが ON
XO Security の「秘匿」タブ(投稿者アーカイブの無効化などを ON にした状態。補償策の具体的な設定箇所を示す)

逆に、XO Security で次の 3 つは ON にしてはいけません

  • 「REST API の無効化」: MCP が動かなくなります。
  • 「ログインページの変更」: OAuth の承認が wp-login.php へリダイレクトするため、失敗する恐れがあります。
  • 「2 要素認証」の編集者への適用: 専用ユーザーのサインインが止まります。

まとめ

Easy MCP AI を使うと、エックスサーバー上の WordPress を Claude から操作できるようになりました。編集者ロールの専用ユーザー・下書き強制・危険ツールの無効化を先に入れておけば、書き込み権限を渡しても事故の影響を小さく抑えられます

つまずきの多くは、サイトアドレスの https、FastCGI での Authorization ヘッダー、国外アクセス制限の 3 点に集約されます。接続できないときは、この順に確認してください。

これから試す方は、まず Read Only のスコープで記事一覧が取れるところまで確認し、必要になった書き込みだけを足していくのがおすすめです。