このプロジェクトは、Predict Droughts using Weather & Soil Dataを題材に、MCPを活用して自律的なデータ分析エージェントの構築を試みたものです。
-
リポジトリのクローン
git clone https://github.com/jintonic3561/comp_with_agent cd comp-with-agent
-
VSCode Devcontainerで環境起動
- VSCodeでプロジェクトフォルダを開く
- Ctrl+Shift+P → "Dev Containers: Reopen in Container" を選択
- コンテナが自動的に構築され、必要な依存関係がインストールされます
-
データをダウンロード
- Predict Droughts using Weather & Soil Dataからデータをダウンロード
data/
ディレクトリに展開
-
CLIエージェントを起動
claude
または
gemini
-
自然言語で分析を依頼!
MCPサーバとしてPython関数の実行環境をLLMに提供することで、エージェントがデータを眺めながら分析を深められるようにすることを目指します。
渡される関数の仕様を工夫することで、その出力もエージェントに自律的に利用してもらえるようにします。
詳細はカレーちゃんのAI道場LT資料をご覧ください。
カレーちゃんのAI道場についての詳細はこちらです。
MCPサーバーとツールのコンポーネント群
agent/
├── mcp/
│ ├── config.json # MCPサーバー設定
│ ├── servers/ # MCPサーバー実装
│ │ ├── data_information.py # データ情報提供サーバー
│ │ ├── analysis_executor.py # 分析実行サーバー
│ │ └── notebook_writer.py # ノートブック作成サーバー
│ └── components/ # ツール実装
│ ├── data_information/ # データ情報関連ツール
│ ├── analysis_executor/ # 分析実行ツール
│ └── notebook_writer/ # ノートブック操作ツール
-
data_information: データセットの構造と内容に関するメタデータを提供
list_available_data()
: 利用可能なデータ一覧get_data_description()
: データ詳細説明get_join_keys_info()
: データ結合キー情報get_problem_formulation()
: 問題設定
-
analysis_executor: データ分析関数の実行環境
execute_soil_analysis()
: 土壌データ分析execute_timeseries_analysis()
: 時系列データ分析execute_all_data_analysis()
: 全データ統合分析
-
notebook_writer: Jupyter Notebookの作成と管理
add_cell_to_notebook()
: ノートブックへのセル追加
分析対象データセット
サンプル分析の実行結果
それほど多くない変更で、異なるデータセットをこのプロジェクトで使用することができます。 以下の手順で改修を行ってください:
agent/mcp/components/data_information/tools.py
を編集します。
ご自身が取り組みたい問題設計やデータの説明をmd形式で返すようにすればOKです。
def list_available_data() -> List[str]:
# 新しいデータファイル名に更新
available_data = ["your_data1", "your_data2", "your_data3"]
return available_data
def get_data_description(data_type: str) -> str:
# 新しいデータセットの説明を追加
if data_type == "your_data_type":
return """
# あなたのデータセット
## データ概要
データの概要説明...
## 列の説明
| 列名 | データ型 | 説明 |
|------|---------|------|
| column1 | type | 説明 |
"""
...
agent/mcp/components/analysis_executor/tools.py
を編集します。
- ご自身のそれぞれのデータを読み込んで分析を行えるよう、各関数を修正します。
- 心臓部となる
_execute_function
関数はこのまま利用できるはずです。
/work/agent/mcp/servers
配下のpythonスクリプトのうち、前段で編集したツールが含まれるサーバスクリプトを編集します。
mcp.tool(your_tool_name)
の部分を、ご自身のツールに合わせて変更してください。
新しいデータセットをdata/
ディレクトリに配置します。
この時点で、Claude CodeやGemini CLIがツールを認識してくれるはずです。 彼らに話しかけて、実装したツールを読み込めているか確認してください。
このプロジェクトは GNU Affero General Public License v3.0 (AGPL-3.0) のもとで公開されています。
AGPLの条件に従う限り、自由に利用・改変・再配布が可能です。