🚚

microCMS MCPサーバーを利用して、複数環境を跨いだデータ移行した話

に公開

この記事は microCMSでやってみた!AI活用からユースケースまで大募集 by microCMS Advent Calendar 2025
21日目の記事です。

microCMS MCPサーバーを利用して、複数環境を跨いだデータ移行した話

microCMSを使って開発をしていると、「開発環境で作ったデータを本番環境に持っていきたい」という場面に遭遇します。しかし、標準機能だけでは意外とこれが難しいのです。
今回は、MCPサーバーを Cursor に接続し、AIとの対話を通して柔軟かつ効率的にデータ移行を行ったフローを共有します。

背景:なぜこの構成が必要だったか

microCMSで「複数環境」をどう作るか

microCMSには「複数環境」機能がありますが、仕様を確認すると以下の制約があります。

  • 本番環境 → 開発環境 のデータコピーは可能
  • 開発環境 → 本番環境 のデータコピーは不可

今回は、開発環境で作り込んだデータを本番に反映させる必要がありました。公式ブログでも、「複数環境」機能が推奨されていました。しかし、開発環境を先に構築し、のちに本番環境を作るという順番では進めづらい構成です。

また、他の選択肢として、1つのサービス内で、APIを環境ごとに重複して作るという方法もありますが、権限管理が脆弱ですし、環境を跨いで操作ミスが起こりやすい構成となってしまいます。

参考:1つのサービスで複数サイトを管理するか、サイトごとにサービスを用意するか、どちらがいいですか?

そのため、今回は消去法で開発サイト用サービスと本番サイト用サービスを別々に用意する構成を採用しました。

データ移行の流れ

サービスの用意自体はすぐに終わります。

参考:サービスの作成

APIスキーマ(データ構造)については、microCMSの管理画面からAPI定義JSONをエクスポートし、本番環境でインポートするだけで完了しました。

参考:APIスキーマのエクスポート/インポート

最大の問題は、コンテンツデータとメディア(画像)データの移行です。ここでMCPサーバーの出番となります。

1. 環境構築:CursorにmicroCMS MCPサーバーを接続

まずはCursorでmicroCMSを操作できるように準備します。

参考:microCMS MCP Server

.cursor/mcp.jsonファイルを以下のように編集します。<MICROCMS_SERVICE_ID><MICROCMS_API_KEY>は、microCMSの管理画面から取得できます。

{
  "mcpServers": {
    "microcms": {
      "command": "npx",
      "args": [
        "-y",
        "microcms-mcp-server@latest",
        "--service-id", "<MICROCMS_SERVICE_ID>",
        "--api-key", "<MICROCMS_API_KEY>"
      ]
    }
  }
}

参考:APIキー(APIの認証と権限管理)

2. CSVを介した「半」自動化

理想的には「MCPサーバー経由で開発環境からデータを吸い出し、そのまま本番環境へ書き込む」というダイレクトな移行をしたかったのですが、現状のMCPサーバーの仕様(設定)では、一度に接続できるmicroCMSサービスは1つに限られるようでした。

そのため、以下の戦略を取りました。

  1. 開発環境に接続し、MCP経由でデータをCSVとして出力(バックアップ)
  2. 本番環境の管理画面から、そのCSVをインポート

少しアナログな手順が挟まりますが、このCSV生成プロセスにおいてMCPとCursorを効率的に活用することができました。

3. 作成するCSVのコンテキストを伝える

単に「データを出して」と指示するのではなく、以下の情報をCursorのコンテキスト(チャット欄)にあらかじめ読み込ませました。

  • microCMSのAPI定義JSON(データの構造を理解させるため)
  • インポート用CSVの雛形(microCMSが要求するフォーマットを理解させるため)

これにより、Cursorは「どのような構造のデータを」「どのような形式で出力すればインポートできるか」を完全に理解します。結果として、インポート時にエラーが出ない、完璧に整形されたCSVを一発で生成することに成功しました。

4. 移行時のポイントと注意点

実際の移行作業で注意した点は以下の通りです。

コンテンツIDの統一

開発環境と本番環境で {content_id} を一致させるように指示しました。CSVでインポートする際にもID列に開発環境のIDをそのまま入れておけば、一致させることができます。

IDが変わってしまうと、記事間の参照(Relation)を張り直すのが非常に手間になるため、とても大事です。

参考:コンテンツのCSVインポート

画像データの扱い(パスの置換)

画像データのバックアップに関しては、MCPサーバー経由でバイナリを扱うと時間がかかるため、今回はサードパーティ製のバックアップツールを利用して一括ダウンロード・アップロードを行いました。

参考:コンテンツのエクスポート(バックアップ)、インポート方法は?

※注意: このようなツールを利用する際は、microCMSのAPIレートリミット(秒間リクエスト制限など)を遵守し、短時間に大量のリクエストを送ってサーバーに過度な負荷をかけないよう、設定や実行速度に十分注意してください。

ただし、本番環境にアップロードすると画像のURLが開発環境と変わります。

例)画像のファイルパスの例
https://images.microcms-assets.io/assets/xxxxx/yyyyy/{filename}.png

filename部分は維持できるものの、xxxxx/yyyyyの部分は開発環境と本番環境で異なるため、CSVを手作業で編集する必要があります。そこで、コンテンツのインポート用CSVを作成する際に、本番環境のxxxxx/yyyyyに置換するように指示しました。

データの選別

「開発環境にはあるが、本番には移行したくないテストデータ」も存在します。これもCSVを手作業で編集するのではなく、Cursorに対して「XXという条件のデータは除外して」と自然言語でフィルタリングを依頼することで解決しました。

課題と今後の展望

MCPサーバーの複数接続

今回、CSVファイルを経由せざるを得なかったのは「接続先が1つに限られる」という点がボトルネックでした。
技術的には、別名でMCPサーバーを登録すれば(例: microcms-dev, microcms-prod)、Cursor内で2つの環境を同時に操作し、データを直接パイプラインのように流し込める可能性があります。

移行するコンテンツが少ない場合には、かなり柔軟にデータを扱えるようになるはずです。

まとめ:非エンジニアにも広がる可能性

microCMSはコンテンツのインポート機能は優秀ですが、CSVエクスポート機能が標準で備わっていません(※記事執筆時点)。通常、これを行うにはエンジニアがAPIを叩くスクリプトを書くか、外部ツールに頼る必要があります。

しかし、MCPサーバーを使えば、自然言語だけで非常に柔軟なカスタムCSV(バックアップ) を作り出すことができます。

「APIを呼び出す」というエンジニアリングが必要な部分をブラックボックス化し、チャットで「この形式でデータちょうだい」と言うだけで済むこのワークフローは、非エンジニアの運用担当者にとっても強力な武器になると感じました。

免責事項

本記事で紹介しているデータ移行手順やMCPサーバー、サードパーティツールの利用は、執筆時点での仕様に基づくものです。ツールの利用にあたっては、microCMSの利用規約を遵守し、ご自身の責任において実行してください。特にAPIの大量アクセスによるサーバー負荷には十分ご配慮ください。

GitHubで編集を提案

Discussion