
AIエージェント(MCP)だけで、CMSのスキーマから記事投稿まで作った
平原 典彦 — Tesseraを開発しているエンジニア。ヘッドレスCMSとAI連携に関心があります。
Tesseraには、Claude CodeやCursorのようなAIエージェントからCMSを直接操作できるMCPサーバーがあります。今回、その機能だけを使って——管理画面を一度も開かずに——このブログをまるごと立ち上げてみました。スキーマの設計から記事の投稿、画像のアップロードまで、すべてAIエージェントの操作です。
MCPとは
MCP(Model Context Protocol)は、AIエージェントに「使える道具(ツール)」を渡すための仕組みです。TesseraはMCPサーバーとして、スキーマ変更の提案・コンテンツの作成/更新・アセットのアップロードといったツールを公開しています。Claude Codeから見ると、Tesseraが「操作できるCMS」として繋がっている状態になります。
1. スキーマを「提案」する
まずブログに必要なスキーマ(著者・カテゴリ・記事)を作ります。AIエージェントは propose_content_type_change ツールで変更案を送りますが、ここがTesseraの肝で——提案は即座には反映されません。
- 送られた定義はバリデーション(予約語・整合性・既存スキーマとの衝突)を通り、
- 承認待ち(pending)としてステージングされ、
- 人間が管理画面で差分を確認して承認するまで反映されない
AIに任せても、確定させるのは人間。この「提案→承認」の分離があるので、エージェントにスキーマをいじらせても壊れません。実際、記事はカテゴリを参照し、カテゴリは自己参照で階層を持つ——といったリレーションも、提案の時点で整合性がチェックされます。
2. 記事を投稿する
スキーマが承認されたら、create_entry / update_entry でコンテンツを入れます。著者やカテゴリへの参照も、IDを渡すだけ。この記事も、タイトル・本文(Markdown)・カテゴリ・著者を指定して投稿しました。
3. 画像をアップロードする
upload_asset で画像も入ります。おもしろいのは、AIエージェントの実行環境からファイルのバイト列さえ渡せれば、管理画面のアップロードUIを一切触らずにメディアが登録される点です。この記事のアイキャッチも、その経路で入れました。
なぜこれが効くのか
コードの実装は、もうAIエージェントに任せられます。それなのに、コンテンツの入れ物であるCMSだけは、いまも人が管理画面を開いてスキーマを設定している——Tesseraは、その最後の手作業をなくすために作りました。
「記事に著者とタグを足したい」と開発フローの中で伝えれば、AIエージェントがスキーマの変更案を出し、あなたが承認する。管理画面とコードエディタを行き来する必要はありません。
このブログは、その考え方の実証そのものです。