🔨

MCPを使ったテストデータ作成の効率化

に公開

作成したModelContext Protocol(MCP)を使ってLLMと連携し、テストデータを簡単に作成できるようにしてみたので、その手順をまとめます。

スマートマットクラウドの基本構造

弊社のスマートマットクラウドではIoT機器「スマートマット」に載せた商品等の重量を定期的に自動計測・通信することで在庫管理や、在庫の改善サポートするプロダクトです。

テスト環境でこの重量データを効率よく再現するにはどうすればよいかが課題でした。

テストデータ作成の課題と解決策

テストデータを作成する際に、毎回JSONデータを編集して送信するのが非常に手間だったため、日本語テキストでパラメーター等を指示し、データ編集からデータ送信までを簡単に行えるようにすることを目指しました。そこで、MCPサーバーの作成を始めました。

処理の大まかな流れは以下の通りです。

MCPサーバーの作成方法

今回はClineに指示してMCPサーバーを作成しました。

まず、MCPサーバーの作成を依頼し、テキスト解析で必要となるパラメーターやJSONの雛形を与えました。最初の指示では曖昧な部分がありましたが、何度かやりとりを繰り返すことで、処理手順を明確にしていきました。

MCPサーバーで考慮した要素

  • JSONの雛形、初期値
  • テキストで指定する必須要件
    • データを送る対象のID
    • データを送る対象の数値
    • 日付(未入力なら現在時刻)
  • 各パラメーターの意味
  • エラー処理の要件
  • JSONのヘッダー

Claude DesktopでのMCPサーバー利用

MCPサーバーが完成したので、Claude Desktopで実際に使用してみました。今回作成したMCPサーバーでは、JSONヘッダー部分にSecret-Keyを設定する必要がありました。そのため、Claude Desktopの設定フォルダ内にclaude_desktop_config.jsonというファイルを作成し、Secret-Keyを設定しました。ファイル自体の作成は、Clineに指示すれば対応可能です。

実際に特定のIDに1000のデータを送信しようとすると、以下のようにテキストを解析し、データを送ってくれました。

テキストを解析し、データを送信します。IDや送信データを解析したテキストに基づいて変更し、必要に応じてタイムスタンプなども更新できます。

以下のような形式でデータが送信されます。(ダミーデータ)

"sentData": {
    "identifier": {
        "primaryID": "----3801",
        "secondaryID": "WXYZ-5432",
        "timestamp": "2025-04-02T15:30:45Z"
    },
    "metadata": {
        "version": 3,
        "status": "active",
        "data": 1000,
        "tags": ["test", "data", "complex"]
    },

単純なデータ送信であれば手作業でもそれほど差はありませんが、例えば「3月1日〜3月31日まで毎日送信」「指定したID100個に対してデータをそれぞれ送信」といった指示も可能です。これにより、JSON編集を行わずにテストデータの送信が容易になります。
テキストで指示するだけで誰でも簡単にテストデータを作成できるようになり、その可能性を感じます。

今後の課題

実際に何度か使ってみると、課題はいくつか見えてきました。

  • 送信前確認機能の追加
  • エラーデータの送信サポート
  • テキスト解析の精度向上

確認なしに作成されたJSONデータを送信してしまうと、想定外のデータを送ってしまったことがあったので確認フェーズの必要は感じました。また重量超過などのエラーの場合の特殊なデータのパラメータの処理やテキスト解析の判断なども必要でした。

株式会社エスマット

Discussion