アフィリエイト広告を利用しています

Claude CodeからWordPressに下書き投稿する方法|パスワードをAIに渡さないMCPプロキシ設計

Claude Code で書いた記事を、そのまま WordPress に下書き投稿できたら便利だと思いませんか?

REST API にアプリケーションパスワードで認証すれば、技術的にはサクッとできます。でも、ちょっと待ってください。

パスワードをどこに置くか、これがなかなか悩ましいんです。

MCP プロキシに認証情報を閉じ込めることで、Claude Code にパスワードを一切見せずに WordPress 連携ができました。

.env にパスワードを書く? それ、丸見えです

M1 Mac mini で AI エージェントノードを構築しています。前回は cage による多層防御を設定しました。今回は WordPress との連携です。

よくある方法として、.env ファイルにパスワードを書いて op run -- claude で Claude Code 全体をラップするやり方があります。

でも、これだと $WP_API_PASSWORD が Claude Code プロセスの環境変数に入ってしまうんですよね。

printenv を叩けば丸見え

なんでやねん、という感じです。

エラーログやデバッグ出力にも混入する可能性があります。そもそもセキュリティキットで .env の読み取りは deny にしているので、.env 方式は使えません。

MCP プロキシに認証情報を閉じ込める

というわけで、WordPress 公式の MCP プロキシ(@automattic/mcp-wordpress-remote)を使う方法にたどり着きました。

構成はこんな感じです。

Claude Code(シークレットなし)
    │ MCP Protocol (stdio) ← コンテンツデータのみ
    ▼
wp-mcp-mono96.sh(別プロセス)
    │ ← キーチェーン → サービスアカウントトークン → 1Password → 認証情報
    ▼
@automattic/mcp-wordpress-remote
    │ ← 認証情報はこのプロセスにのみ存在
    │ HTTPS + Application Password
    ▼
WordPress(mono96.jp)

Claude Code は「記事を作って」「カテゴリ一覧を取得して」といった操作を MCP ツール経由で依頼します。プロキシが認証ヘッダを付与して WordPress REST API に送信してくれます。

ポイントは、Claude Code のメモリに認証情報が混入する経路が物理的に存在しないということ。これ、めちゃくちゃ大事です。

1Password サービスアカウントで「金庫の鍵」を制限する

1Password の「Development」vault に WordPress の認証情報を保存して、サービスアカウント(読み取り専用)で取得する構成にしました。

このサービスアカウントは Development vault しかアクセスできません。万が一トークンが漏洩しても、被害範囲が限定されるという感じです。

サービスアカウントトークン自体は macOS キーチェーンに保存しています。これは「金庫の鍵」であり「金庫の中身」ではない、という考え方ですね。

MCP シークレット管理ポリシーをルール化した

この構成をルールとして CLAUDE.md に明記しました。今後追加するすべての MCP サーバーにも適用します。

  • 認証情報は 1Password の Development vault にのみ保存
  • MCP プロキシへの注入はサービスアカウント経由の op run で行う
  • サービスアカウントは Development vault の読み取り専用に制限
  • Claude Code プロセスには一切の認証情報を渡さない
  • curl / wget での直接 API アクセスを禁止

ルールとして書き出しておくと、あとから MCP サーバーを追加するときにも迷わなくなります。

ハマりポイント3つ

実際にやってみると、3つハマりました。正直、ドキドキしながらの作業でした。

1. OAUTH_ENABLED=false が必要

@automattic/mcp-wordpress-remote はデフォルトで OAuth 認証を使おうとします。

Application Password を使うには .env.tplOAUTH_ENABLED=false を明示する必要がありました。これ、ドキュメントを読んでもパッとわからなかったんですよね。

2. mcp-adapter(新版)は Abilities が空

WordPress 公式の mcp-adapter プラグイン(Abilities API ベース)を入れてみたんですが、discover-abilities空リストを返します。ツールが一つもない。

調べてみると、mcp-adapter は Abilities API のブリッジであり、プラグインやテーマが wp_register_ability() で設定しないと何も動かない仕組みでした。投稿の CRUD ツールは内蔵されていません。

旧版の wordpress-mcp(Automattic/wordpress-mcp)に切り替えたら即動きました。 こちらは投稿・ページ・カテゴリ等の CRUD ツールが最初から入っています。あっ、こっちか、という感じです。

3. キーチェーンに長いトークンを保存できない

1Password サービスアカウントトークンは 800文字超えでして。security add-generic-password -w の対話式入力だと 128文字で切れてしまいます。SSH でも VNC のターミナルでも同じ。

解決策は nano でファイルに貼り付けてから、こう実行します。

security add-generic-password -w "$(cat /tmp/sa-token.txt)"

ファイルは rm -P で上書き削除。地味なハマりポイントで、かなりの時間を持っていかれました。

現在の構成まとめ

項目
WordPress プラグインwordpress-mcp(旧版)
MCP プロキシ@automattic/mcp-wordpress-remote
認証方式Application Password
シークレット管理1Password Development vault(読み取り専用サービスアカウント)
トークン保管macOS キーチェーン
Claude Code に見える情報コンテンツデータのみ(タイトル・本文・カテゴリ等)
Claude Code に見えない情報ユーザー名・パスワード・URL

AI エージェントに認証情報を渡さない設計、ぜひお試しください。

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告