1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてのmicroCMS MCP、最後は「書けません」で成功した

1
Posted at

この記事は、microCMS Advent Calendar 2026の7日目の記事です。MCPを試す前編と、本社の表示を作る後編の2本でお届けします。

AIに文章を作ってもらい、最後は人がCMSへコピーする。

そういう分業だと、AIの横に人力の搬入口が付きます。文章を書く人は増えたのに、入力する人は増えていません。

microCMSは今回が初利用です。Hobbyプランでサービスを作るところから始め、MCPも試しました。「この内容で下書きを登録して」と頼んだら、CMSに入るところまでやってもらいます。

接続できて、既存の内容を読めて、下書きも作れました。ただ、試しているうちに、もう一つ確認したいことが出てきました。

「下書きで」と頼むことと、下書きしか作れない権限を渡すことは、別でした。

この記事では、Claude Codeから4件の下書きを作り、最後にPOST権限を外すまでを扱います。自然言語で登録できる便利さと、どこで操作を止めるかを、一緒に試した記録です。

まず、搬入先の欄を作る

題材は、個人開発のAfter 6 Giftで扱っているギフト紹介です。Hobbyプランで実験用のサービスを作り、その中に、複数の商品を保存するリスト形式のAPI gifts を用意しました。公開中のサイトには接続していません。

管理画面で入力項目を決め、まず2件を手で登録します。入力した内容をAPIで取り出せることを確かめてから、次はこの入力をAIに任せてみます。

フィールドID 入れる内容
name 商品名
giftReason 公開用の紹介文
editorialNotes 制作側が読む注意書き

たとえば、商品の楽しさは紹介したい。一方で「効能は言い切らないこと」は、書く側への注意です。後者まで商品説明に入れると、店頭のPOPが急に店長へ話しかけます。

今回は欄を分けたうえで、AIにどこまで振り分けてもらえるかを試します。

APIキーのContent API権限は、次の設定にしました。

範囲 許可した操作
デフォルト権限 GET
gifts の個別権限 GET、POST。POSTは実験中だけ

読み取りから始め、作成を試す間だけ gifts へPOSTできるようにしています。更新や削除まで、まとめて許可する必要はありません。

最初は、搬入口までたどり着かなかった

microCMS MCPは、microCMS側でホストされているMCPサーバーです。対応するAIクライアントに接続先とAPIキーを設定すると、コンテンツを取得・操作できます。試した時点ではベータ版で、認証はHTTP Bearer方式です。microCMS MCPの公式資料

最初に試したClaudeデスクトップアプリのカスタムコネクタでは、「接続の問題」が出ました。

最初の接続で表示された画面

Claudeデスクトップアプリで表示された「接続の問題」

ここでは、同じ「認証できない」に見えるものを分けました。

試した経路 結果
curlから、キーを付けずに接続 401
curlから、Bearer認証を付けて接続 200でサーバー情報を取得
Claude Codeから接続 接続できた

認証付きの要求に応答することは確認できました。デスクトップアプリでつながらなかった原因までは特定していません。以降は、接続できたClaude Codeを使います。

設定コマンドは次の形です。山括弧の部分は、自分の値に置き換えます。

claude mcp add --transport http microcms \
  "https://mcp.microcms.io/mcp/<サービスID>" \
  --header "Authorization: Bearer <APIキー>"

同名の登録が残っているときは、対象の設定を確認してから claude mcp remove microcms で削除し、登録し直しました。また、途中で出たClaude Code自身のログインの問題は、/login で解消しています。microCMSのキーを交換する話とは分けました。

このコマンドで渡した認証ヘッダーは、Claude Codeの設定に保存されます。端末の設定やシェル履歴も、キーを管理する場所になります。実キーを共有ログやGitへ持ち込まないようにします。

AIには、制作メモも見えていた

接続後、まず「giftsの一覧を取得して」と頼みました。先に入れておいた2件が、紹介文と制作メモの両方を含む表で返ってきます。

下書きを作るために既存の書き分けを見てもらうので、今回は必要な動きです。ただ、欄に「制作メモ(公開しない)」という名前を付けても、取得権限が変わるわけではありません。

MCPは、設定したAPIキーで許可された操作を実行します。「お客さんには見せない」と書いた連絡ノートを、鍵を渡した相手から隠せるわけではありません。

ここで分けているのは、文の用途です。AIにも渡したくない情報は、このキーで取得できる範囲に置かないことにしました。

一続きの文を渡すと、別々の欄に入った

下書きの登録は、こう頼みました。

「手のひらサイズで飾りやすい。効能は言い切らないこと。」という内容で、
「小さな多肉植物の置物」をgiftsに下書きで登録して

商品名と文章は渡していますが、二つの文をどのフィールドへ入れるかまでは指定していません。

Claude Codeが選んだのは、microcms_create_content_draft でした。呼び出し記録を整理すると、次の形です。

{
  "tool": "microcms_create_content_draft",
  "endpoint": "gifts",
  "content": {
    "name": "小さな多肉植物の置物",
    "giftReason": "手のひらサイズで飾りやすい。",
    "editorialNotes": "効能は言い切らないこと。"
  }
}

下書き中の置物。公開用の紹介文と制作メモが別々に登録されている

管理画面でも、下書き中の状態と、二つの欄への振り分けを確認できました。文章そのものは渡した内容のままです。AIが担当したのは、文の仕分けと登録でした。

ただ、この入力は分けやすい。「〜こと。」という注意書きが後ろにあります。そこで、順番や書き方を変えて、3件追加しました。以下の商品名と文は実験用の入力です。

商品名 渡した文 登録結果
ミニ観葉植物の鉢 水やりは月1回でよく、忙しい人にも贈りやすい。仕入れ先はまだ決めていない。 前半が紹介文。命令形ではない「仕入れ先はまだ決めていない。」が制作メモ
木製のペン立て アフィリエイトの料率は低め。木の手ざわりがあって、机に置くと落ち着く。 先頭が制作メモ。後ろの文が紹介文
ハンドタオルのセット 3,000円前後で、気をつかわせない価格。相手の好みが分からないときの候補。 両方が紹介文。制作メモは空文字

最初の置物を含め、4件とも意図した欄に入り、同じ下書き作成ツールが使われました。ハンドタオルでは、制作メモの欄を埋めるために文をひねり出すこともありませんでした。

確認できたのは、この短い4入力です。長文や、私自身も公開してよいか迷う文まで判定できるとは言えません。分類を間違えた文は、そのまま公開用の欄へ入ります。下書きで止めて、中身を読む工程は残します。

搬入は任せられました。検品まで済んだことにはなりません。

「下書きで」は、鍵に書いていなかった

MCPには、公開状態で作るツールと下書きで作るツールが、別々にあります。

ツール 作成時の状態 必要なContent API権限
microcms_create_content_published 公開中 POST
microcms_create_content_draft 下書き POST

Content APIでも、POSTに status=draft を付けると下書きになり、指定しなければ公開中で作成されます。コンテンツ作成APIの仕様

つまり、POST権限のあるAPIキーは、それだけでは下書き専用になりません。

今回の4件では、「下書きで」と指示して、AIが下書き用のツールを選びました。公開作成ツールをClaude Code側で拒否する設定は、まだ入れていません。

「確認してから店頭へ出してね」と頼みながら、店頭へ出せる鍵も渡していたわけです。鍵が、会話の続きを覚えてくれるわけではありません。

常用するなら、ここにクライアント側の制限を足します。公開状態での新規作成だけでなく、下書きの公開、公開予約、公開済み本文の更新、削除も対象にします。Claude Codeに microcms という名前で接続した場合の設定例です。

{
  "permissions": {
    "deny": [
      "mcp__microcms__microcms_create_content_published",
      "mcp__microcms__microcms_create_contents_bulk_published",
      "mcp__microcms__microcms_patch_content_status",
      "mcp__microcms__microcms_update_content_reservation",
      "mcp__microcms__microcms_update_content",
      "mcp__microcms__microcms_delete_content"
    ]
  }
}

これは今回の実験には未適用の設定例です。使うときは .claude/settings.json など、利用する範囲の設定へ統合し、/mcp で実際のツール名、/permissions でルールを確認します。接続名を変えた場合は、ルールの接続名も合わせます。Claude Codeの権限設定

公開状態の変更と予約設定は、マネジメントAPIのツールです。キーの設定画面でも、Content APIとは別のタブで操作権限を選びます。冒頭のGET・POSTの表だけで、すべての操作権限を説明したことにはなりません。常用時には、こちらも必要な操作だけに絞ります。APIキーの権限設定

また、この deny が制限するのは、設定を適用したClaude Codeから呼ぶ上の6ツールです。同じキーを別のクライアントやBashのHTTP要求から使う経路まで、MCPの拒否ルールで止めることはできません。ツールの追加・変更時には対象を見直し、API側の権限も絞る必要があります。

最後は、同じ依頼を断ってもらう

実験後の11月8日、gifts の個別権限からPOSTを外しました。

そのあと、同じ形で下書き登録を頼むと、AIは再び microcms_create_content_draft を呼びました。今度は権限エラーになり、登録できませんでした。

頼み方を変えて、書かないように説得した結果ではありません。今度はmicroCMS側の権限が、同じ操作を拒否しています。確認できたのは、同じ下書き作成ツールによる新規作成を止められたことです。

「AIへの指示」「クライアントのツール制限」「APIキーの権限」。似た話に見えて、判断・制御する場所が違いました。

任せること・止めたいこと 担当する仕組みや人 今回の結果・範囲
下書き用のツールを選ぶ AIが指示を読んで選択する 短い4入力では、下書きとして意図した欄に登録された
公開・更新・削除につながる対象ツールを使わせない Claude Codeの権限ルール 6ツールの拒否設定例。実環境では未適用
gifts への新規作成を止める microCMSのAPIキー権限 POSTを外し、同じ下書きツールからの作成拒否を確認
紹介文として出してよいか決める 人による内容確認 AIの振り分けとは別に、公開前の工程として残す

公式は、AI操作専用のキーと、必要最小限の権限・ツールを組み合わせることを勧めています。一方、今回使ったHobbyプランのAPIキーは1個です。常用の書き込み経路に育てるときは、用途別にキーを分けられる構成を選ぶつもりです。APIキーの権限と個数

今回のように期間を区切って試す場合も、作成のために追加した権限は、実験の終わりに戻す。その確認まで、試す手順に入れました。

初めて試したmicroCMS MCPで、AIに登録を頼めるようになりました。最後は、その依頼を断れるところまで確かめました。

「登録できませんでした」。今回は、そこまでできれば合格です。


続編は、本社の表示側です。 自然文から項目へ登録できる流れを試して、スプレッドシートとGASで試作していた本社にも使えそうだと思いました。8日目の「社員は私ひとりなのに、本社を作った――microCMSで『取得成功』を『進捗あり』にしない」へ続きます。掲載先は同じカレンダーです。

検証条件とAIの利用

MCPの初回接続と1件目の登録は2026年11月4日、追加3件とPOST撤去後の拒否は11月8日に確認しました。Claude Codeを使用し、記録上の表示モデルは claude-sonnet-4-6 です。試した時点のmicroCMS MCPはベータ版です。

本稿の構成・推敲にはClaudeとChatGPTを使用しています。

参考資料
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?