なぜWordPressをMCPで直接動かさなかったのか

AI・自動化

前回、ブログを書くのが面倒なので、考えたことをChatGPTに話せば、そのままWordPressの下書きになる仕組みを作った。

最終的には、こんな構成になった。

ChatGPT
↓
GitHub Issue
↓
GitHub Actions
↓
FTP
↓
cron
↓
WordPress

ぱっと見では、少し大げさである。

そこで当然、こう思う。

ChatGPTからWordPressを触りたいなら、MCPで直接動かせばよかったんじゃないのか。

自分もそう思った。

というか、最初はそのつもりだった。

MCPでWordPressを操作できれば一番楽そうだった

MCPを使ってChatGPTからWordPressを直接操作できれば、かなり楽である。

「この記事をWordPressの下書きにして」

と言えば、そのまま投稿される。

ブログを書くのが面倒だから自動化しようとしているのに、自動化するための操作まで増やしたくない。

なので、まずはMCPで何とかしようと考えた。

GitHubを使うならCodexでいいのでは?

ここでもうひとつ疑問が出る。

GitHubを操作するなら、Codexを使えばいいのではないか。

これはその通りである。

実際、自分もプログラムを作るときには、CodexもClaude Codeも使う。

コードを書いたり、リポジトリを修正したり、開発作業を進めたりするなら、そちらを使うことも多い。

ただ、今回やりたいことは少し違った。

ブログの記事は、コードを書いている最中だけに生まれるわけではない。

普段ChatGPTと仕事の話をしていたり、何かを考えていたりする途中で、

「これ、ブログに書けるな」

と思う瞬間がある。

そのときに、CodexやClaude Codeを開いて、さっきまでの話を説明し直して、記事にして、WordPressに送って……となると、そこでまた一手間増える。

それでは、せっかく「ブログを書くのが面倒だから自動化する」という話なのに、あまり意味がない。

自分がやりたかったのは、

ChatGPTとの会話の途中で、そのまま「これ記事にして」と言えば終わること。

GitHubは記事を書く場所ではなく、そのための中継地点にすぎない。

CodexやClaude Codeができないから使わなかったわけではない。

記事が生まれる場所がChatGPTだったから、そこから動かしたかった。

できるだけ画面を移動したくない。

これも立派なものぐさである。

WordPress.comのMCPを試してみた

ChatGPT側からWordPressを操作できる仕組みを試してみた。

ところが、「ものくさたろう」はWordPress.comで運営しているサイトではない。

レンタルサーバーに自分でWordPressを設置している、いわゆるセルフホスト型のWordPressである。

今回試した仕組みでは、WordPress.com側との連携が前提になっていて、そのまま自分のWordPressを直接操作できるわけではなかった。

別の方法でつなぐことも考えられる。

ただ、ブログの記事を作るためだけに、そこへさらに仕組みを足すのも面倒だった。

ここでMCPはいったん諦めた。

ならWordPress REST APIでいい

次に考えたのがWordPress REST APIだった。

WordPressには投稿を作成するAPIがある。

なので、

GitHub Issue
↓
GitHub Actions
↓
WordPress REST API
↓
下書き作成

なら、かなり素直な構成になる。

実際に作ってみた。

ところが、うちのサーバーではREST APIへのアクセスが途中で止められた。

返ってきたのはWordPressのエラーではなく、

Please wait while your request is being verified...

というブラウザ確認用の画面だった。

WordPressに届く前に、サーバー側のセキュリティ機能に止められていたらしい。

ブラウザからアクセスする人間なら通る。

しかしGitHub Actionsはブラウザではない。

JavaScriptを実行して、人間らしく待ってくれるわけでもない。

困った。

REST APIにこだわる必要、なくない?

ここでようやく思った。

別にREST APIにこだわる必要なくない?

やりたいことは、WordPressのAPIを使うことではない。

WordPressに下書きを作りたいだけである。

サーバーにはFTPで普通にファイルを置ける。

それなら、

  1. GitHub ActionsからFTPでJSONを送る
  2. サーバー側のcronでPHPを動かす
  3. PHPからWordPressを読み込む
  4. wp_insert_post()で下書きを作る

これでいい。

外からWordPressを操作するから止められる。

だったら、WordPressが置いてあるサーバーの中からWordPressを操作すればいい。

結果として、

ChatGPT
↓
GitHub Issue
↓
GitHub Actions
↓
FTP
↓
サーバー内のPHP
↓
WordPress

という仕組みになった。

結局、MCPが悪かったわけではない

ここは少し重要だと思っている。

MCPを使わなかったのは、MCPが役に立たなかったからではない。

今回のWordPress環境では、MCPを使うために別の仕組みを足すより、すでに使えるFTPを使った方が早かっただけである。

REST APIも同じ。

普通ならREST APIを使う方がきれいだと思う。

でも、きれいな構成を作ることが目的ではない。

ブログを書くのを面倒ではなくすることが目的である。

その目的を達成できるなら、FTPでもcronでも構わない。

むしろ、昔からある地味な仕組みの方が、こういうとき妙に強かったりする。

ものぐさになるために、結構苦労した

ブログを書くのが面倒だった。

だから、自動化しようと思った。

自動化するためにMCPを試した。

うまくいかなかったのでREST APIを試した。

今度はWAFに止められた。

結局、FTPとcronを使う仕組みを作った。

振り返ってみると、

ブログを1本書くより、はるかに面倒なことをしている。

これは少しおかしい。

ただ、一度仕組みを作ってしまえば、次からは、

「これブログにしよう」

と言うだけで下書きができる。

同じ面倒を何度も繰り返さなくて済む。

どうやら自分は、面倒なことが嫌いなのではなく、

同じ面倒を何度もやるのが嫌いらしい。

ものぐさを実現するには、意外と苦労する。

それでも、その苦労を一度で終わらせられるなら、たぶんその方が楽なのである。