Claude CodeでWordPressブログをMCPサーバー経由で管理していたところ、ある日突然MCPツールが一切使えなくなりました。3日前まで正常に動作していたのに、再起動しても一向に接続できない状態が続きました。この記事では、原因究明から解決までの全過程を記録しています。
症状:MCPツールが読み込まれない
![]()
Claude Codeを起動してもWordPress関連のMCPツールが一切表示されない状態でした。設定ファイル(~/.claude/settings.json)を確認すると、WordPressサーバーの設定自体は存在しています。設定はあるのにツールが現れない場合、MCPサーバー自体が起動できていないか、WordPress側への接続に失敗しているサインです。
{
"mcpServers": {
"wordpress-mcp-nkzw": {
"command": "powershell.exe",
"env": {
"WP_API_URL": "https://nkzw.jp",
"JWT_TOKEN": "(トークン)"
}
}
}
}
MCPサーバーの起動テスト
![]()
npxコマンドでMCPサーバーを手動起動してみると、MCPプロトコルの初期化レスポンスは返ってくるものの、接続ステータスに「Connection Failed」と記録されていました。capabilities.tools が空になっているのが決定的な証拠です。MCPサーバー自体は起動していますが、WordPress側への接続に失敗しているため、利用可能なツールが0件になっていました。
{
"serverInfo": { "name": "WordPress MCP Remote Proxy", "version": "0.2.19" },
"capabilities": { "tools": {} },
"instructions": "MCP WordPress Remote Proxy Server (Connection Failed)"
}
REST APIの疎通確認
![]()
WordPressのREST APIに直接アクセスして状態を確認します。/wp-json/ は 200 OK で正常でしたが、/wp-json/jwt-auth/v1/token/validate は 404、/wp-json/wp/v2/users/me は 401 が返ってきました。REST APIのルート一覧を確認すると、jwt-auth/v1 ネームスペース自体は登録されており、JWTプラグインはインストール・有効化されているものの、トークンを使った認証が通らない状態でした。
エンドポイント
ステータス
結果
/wp-json/
200 OK
? REST API 正常
/wp-json/jwt-auth/v1/token/validate
404
? ルートなし
/wp-json/wp/v2/users/me + Bearer
401
? 認証失敗
JWTトークンの認証エラーを特定する
![]()
設定済みのJWTトークンで認証付きAPIを叩くと rest_not_logged_in(401) が返ってきました。トークン発行APIを試すと今度は jwt_auth_bad_config エラーが返ってきました。これはJWTプラグインに必要な設定が不足していることを意味します。.htaccess の Authorization ヘッダーパススルー設定はすでに正しく入っていました。問題は wp-config.php に JWT_AUTH_SECRET_KEY が定義されていないことでした。
wp-config.phpにJWT_AUTH_SECRET_KEYを追加する
![]()
JWTプラグインは、wp-config.php への秘密鍵の定義が必須です。<?php タグの直後、データベース設定より前に以下を追記します。秘密鍵は WordPress Secret Key Generator で生成したランダムな文字列を使います。
<?php
define('JWT_AUTH_SECRET_KEY', '(任意のランダムな秘密鍵)');
define('JWT_AUTH_CORS_ENABLE', true);
// ** MySQL 設定 ** //
追記後にトークン発行を試みると、まだ同じエラーが返ってきました。
OPcacheが原因だった!
![]()
設定ファイルを正しく書き換えたのに変化がない場合、PHPのOPcache が古いファイルをキャッシュし続けている可能性があります。OPcacheとは、PHPファイルを一度コンパイルした結果をメモリにキャッシュして処理を高速化する仕組みです。ファイルを更新しても、キャッシュのTTLが切れるまでは古いバイトコードが実行され続けます。
状況
動作
OPcache有効・キャッシュあり
古いwp-config.php(秘密鍵未定義)が使われる
OPcacheクリア後
新しいwp-config.phpが読み込まれ定数が認識される
共有ホスティングの場合はコントロールパネルからOPcacheをリセットするか、以下の一時ファイルを設置してリセットします(使用後は必ず削除してください)。
<?php
// opcache-reset.php(使用後は必ず削除)
if (function_exists('opcache_reset')) {
opcache_reset();
echo 'OPcache cleared.';
}
新しいJWTトークンの発行と接続確認
![]()
OPcacheの問題が解消されると、トークン発行APIが正常に応答するようになりました。
POST /wp-json/jwt-auth/v1/token
Body: username=(ユーザー名)&password=(パスワード)
→ 200 OK
{ "token": "eyJ0eXAiOiJKV1Qi...", "user_display_name": "..." }
発行されたトークンで認証確認を行うと、無事に200レスポンスが返ってきました。新しいトークンを settings.json の JWT_TOKEN に設定してClaude Codeを再起動すると、MCPサーバーが正常に起動し、WordPressのツール群がすべて使えるようになりました。
?? 今回発行したトークンの有効期限は 7日間 です。期限が切れると再び接続できなくなるため、定期的なトークン更新が必要です。
まとめ:トラブルシューティングチェックリスト
![]()
WordPress MCPが接続できない場合は、以下の順番で確認してください。
- settings.jsonの確認:WP_API_URLとJWT_TOKENが正しく設定されているか
- REST APIの疎通確認:
/wp-json/にアクセスして200が返るか - JWTプラグインの確認:
jwt-auth/v1ネームスペースが存在するか - JWT_AUTH_SECRET_KEYの設定:
wp-config.phpに定義されているか - OPcacheのクリア:ファイル更新後にキャッシュが残っていないか
- トークンの再発行:新しいJWTトークンを発行してsettings.jsonを更新する
JWTトークンには有効期限があります(デフォルトは7日間)。期限切れによる接続断を防ぐために、定期的なトークン更新の仕組みを設けることを推奨します。
更新履歴
第1稿投稿 2026年4月19日 12時30分(記事コンテンツアップ)
