AIから記事を投稿・更新できるWordPressプラグイン

contact

WordPress の記事を AI に手伝ってもらう場合,作成した文章を管理画面へコピーしたり,WordPress 側で修正した内容をもう一度 AI へ渡したりする必要があり,意外に手間がかかる.

WordPressとMCPクライアントを安全につなぐRectus Content Access for MCP

そこで,Codex や Claude Code などの MCP に対応した AI から WordPress の記事を直接読み取り,作成,更新できるプラグイン「Rectus Content Access for MCP」を作成した.

以下はバージョン 0.5.2 時点の説明である.

Rectus Content Access for MCP とは

Rectus Content Access for MCP は,Codex や Claude Code などの MCP に対応した AI から,WordPress の記事を直接読み取り・作成・更新できるようにする WordPress プラグインである.記事の処理は WordPress 内で完結し,別の Node.js サーバーを立ち上げたり,プラグイン作者が運営する外部サービスへ記事を預けたりする必要はない.

WordPress 側で利用を許可した投稿タイプだけを扱えるため,通常の投稿や固定ページだけでなく,必要に応じてカスタム投稿タイプにも利用できる.

AIからWordPressの記事を作成・更新できる

Rectus Content Access for MCP を使うと,MCP に対応した AI から以下の操作ができる.

  • 投稿,固定ページ,許可したカスタム投稿タイプの一覧取得
  • 公開状態,文字列,カテゴリーやタグ,更新順などによる記事の絞り込み
  • 既存記事のタイトル,本文,抜粋,スラッグ,カテゴリーやタグの読み取り
  • 新しい記事の作成と既存記事の更新
  • 既存のカテゴリーやタグを再利用した分類
  • Codex・Claude CodeからのREST直接画像アップロード
  • 直接送信に対応しないクライアント向けのBase64画像アップロード
  • サーバー上の画像の取り込み,メディア一覧取得,選択したメディアの完全削除
  • 画像の登録とアイキャッチ画像の設定・解除
  • JSON-LD,ショートコード,エスケープ文字を保持した本文保存

「このページと同じ構成で新しい固定ページを作成する」「既存記事の内容を確認して説明を追加する」といった依頼を,AIとの会話から進めやすくなる.

現在対応しているのは,WordPress 標準のタイトル,本文,抜粋,公開状態,カテゴリー,タグ,投稿タイプに割り当てられたカスタムタクソノミーなどである.スラッグは新規作成時に指定でき,記事取得時にも確認できるが,バージョン 0.5.2 の記事更新機能では変更しない.タグなどを更新する場合は指定した語句の集合へ置き換える方式で,項目を省略すれば変更せず,空の配列を指定すればすべて外れる.ACF など各プラグインが追加する独自のカスタムフィールドは,バージョン 0.5.2 では対象としていない.

MCPとは

MCP は Model Context Protocol の略で,AI と外部のシステムが機能や情報をやり取りするための共通規格である.AI に WordPress の管理者パスワードを教えて管理画面を操作させるのではなく,「記事を取得する」「記事を作成する」「画像を登録する」といった操作を,決められた機能として呼び出せるようにする.

Rectus Content Access for MCP は,WordPress の記事操作を MCP の機能として登録する.MCP クライアントから届いた要求は,プラグインに同梱した WordPress 公式の MCP Adapter を通して WordPress 上で処理される.WordPress サーバー側に Node.js を用意したり,プラグイン作者が運営する外部サービスへ記事を預けたりする必要はない.

Node.jsなどの追加インストールが不要

WordPress が動作する PHP 環境があれば利用でき,WordPress サーバーへ Node.js,npm,Composer などの追加ランタイムやパッケージをインストールする必要はない.別の Node.js サーバーを立ち上げたり,記事を外部サービスへ送信したりせず,WordPress 内で処理を完結できる点が特徴である.

画像をモデルの入力へ入れずにアップロード

Codex と Claude Code では,MCP の画像アップロードチケット機能から5分間有効な1回限りのチケットを取得し,画像を multipart/form-data で同じ WordPress サイトの専用 REST API へ直接送る.画像の Base64 文字列を AI のモデルコンテキストや MCP の JSON-RPC メッセージへ入れないため,大きな画像でもトークンを大量に消費しない.追加の Application Password や別の WordPress ログイン設定も不要である.

REST への直接送信に対応していない MCP クライアントは Base64 画像アップロードを利用できる.画像が WordPress サーバーの uploads/mcp-inbox にある場合は,メディアインポート機能から取り込むこともできる.

メディア一覧機能では,画像などを検索して添付 ID,ファイル名,URL,削除権限を確認できる.完全削除には,一覧で確認した添付 ID,一致するファイル名,明示的な確認の3つが必要で,接続した WordPress ユーザーに削除権限がある場合だけ実行される.削除すると元ファイルと WordPress が生成した画像サイズも消えるが,記事本文に書かれた既存 URL は自動では書き換えない.

JSON-LDやショートコードを保持

本文は,接続を許可した WordPress ユーザーの権限に従って保存する.管理者など unfiltered_html 権限を持つユーザーの場合は,WordPress のエディターと同様に,script 要素を含む JSON-LD,ショートコード,バックスラッシュ,JSON 内のエスケープ文字を保持する.unfiltered_html 権限を持たないユーザーの場合は,WordPress 標準の wp_kses_post() による制限を受ける.

バージョン 0.5.2 では,作成・更新後に保存された本文を照合する.WordPress 側のフィルターなどで本文が予期せず変化した場合は,保存できたように見える成功応答を返さず,エラーとして通知する.

接続を許可する投稿タイプを選べる

投稿と固定ページは最初から利用できるが,カスタム投稿タイプは管理者が設定画面で明示的に許可したものだけが対象となる.

さらに,記事の作成,編集,公開,カテゴリーやタグの設定は,接続を許可した WordPress ユーザーが元々持っている権限の範囲に限られる.プラグインを入れたからといって,そのユーザーに許可されていない記事を AI が編集できるようになるわけではない.

OAuth 2.1とPKCEで安全に接続

接続には OAuth 2.1 を使用する.ブラウザで WordPress にログインして接続を承認するため,WordPress のユーザー名やパスワードを MCP クライアントへ登録する必要はない.

バージョン 0.5.2 は Dynamic Client Registration(DCR)に対応している.DCR を利用するクライアントには個別の client ID を発行するが,client secret は発行せず,公開クライアントとして扱う.HTTPS のクライアントメタデータ URL を client ID として利用する方式にも対応している.

Codex や Claude Code のようなデスクトップアプリでは,固定した client secret を安全に隠しておくことが難しい.そこで PKCE の S256 方式を必須とし,認証を始めたクライアントと認証コードをトークンへ交換するクライアントが同じであることを確認する.途中で認証コードだけを取得されても,PKCE の検証情報がなければアクセストークンへ交換できない.

アクセストークンの有効期間は1時間で,期限が切れた場合はリフレッシュトークンを使って自動的に更新する.リフレッシュトークンは30日間有効で,使用するたびに新しいものへ交換される.同じクライアント資格情報を使う複数の処理がほぼ同時に更新した場合に,片方の接続まで失効させないよう,使用済みリフレッシュトークンには短い重複利用猶予を設けている.WordPress 側には認証コードやトークンの実体ではなく SHA-256 ハッシュだけを保存し,不要になった接続は設定画面から解除できる.

Codex・Claude Codeなどを同時に接続できる

以前は,同じ WordPress ユーザーで複数の MCP クライアントが接続すると,セッション一覧全体を1つのユーザーメタデータとして更新する処理が競合し,新しい接続が前の接続を消してしまう場合があった.バージョン 0.5.2 では,MCP の HTTP セッションをセッションごとに独立したユーザーメタデータへ保存する.これにより Codex,Claude Code,その他のクライアントが同じ WordPress ユーザーで同時に接続しても,別の接続を上書きしない.

セッションはユーザーごとに既定で最大32件まで保持し,24時間利用されなかったセッションは整理される.各 OAuth クライアントには別の client ID とトークン系列を持たせられるため,Codex と Claude Code はそれぞれ独立した接続として管理できる.

Codex・Claude Codeから簡単に接続

WordPress 管理画面の「設定」→「Rectus Content Access for MCP」を開くと,サイトごとに用意された Codex と Claude Code の接続コマンドが表示される.

利用するクライアントのコマンドをコピーして一度実行し,ブラウザで WordPress にログインして接続を許可すれば準備は完了する.同じパソコンでは保存された OAuth の認証情報が再利用され,期限が切れたアクセストークンも自動的に更新される.

設定画面では,MCP の接続先,OAuth の接続準備状態,利用を許可する投稿タイプ,接続済みクライアントを確認できる.複数の WordPress サイトを登録しても設定名が衝突しないよう,MCP サーバー名はサイトのドメインとパスから自動的に作られる.

インストール

WordPress 公式プラグインディレクトリで公開済みである.WordPress にログインして,

プラグイン→プラグインを追加

にいって,「Rectus Content Access for MCP」といれて検索する.

出てきたら,【今すぐインストール】を押す.

その後,【有効化】を押し,「設定」→「Rectus Content Access for MCP」を開けば接続設定を始めることができる.

動作条件は WordPress 6.9 以上,PHP 7.4 以上である.MCP クライアントとの接続には HTTPS が必要となる.

Rectus Content Access for MCPについて

ご質問ございましたら,以下のフォームからお問い合わせください.

Pagetop