f0_make_randomvalues MCP Server
FGDB(Functional Graph Database)システムの f0_make_randomvalues 関数ブロックを、Model Context Protocol (MCP) サーバーとして実装したものです。
概要
このMCPサーバーは、乱数生成機能をClaude DesktopやClaude Codeなどのクライアントアプリケーションに提供します。
主な機能
- 乱数生成: 指定された範囲とパラメータで乱数を生成
- データ保存: 生成した乱数をCSVファイルに保存
- 統計分析: データの統計的特性を分析
- データ読み込み: 保存されたCSVファイルからデータを読み込み
- リソースアクセス: URI経由でデータやメタデータにアクセス
- プロンプトテンプレート: 一般的なワークフロー用のインタラクティブプロンプト
システム要件
- Python 3.8以上
- uv(推奨)またはpip
- Claude DesktopまたはClaude Code(MCPクライアントとして)
インストール
1. uvを使った環境構築
uvのインストール
Windows (PowerShell):
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
プロジェクトのセットアップ
# プロジェクトディレクトリに移動
cd /path/to/f0_ws
# 仮想環境の作成と依存関係のインストール
uv venv
uv pip install -r requirements.txt
2. pipを使った環境構築(代替方法)
# 仮想環境の作成
python -m venv venv
# 仮想環境の有効化
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 依存関係のインストール
pip install -r requirements.txt
設定
Claude Desktopでの設定
設定ファイルの場所
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
設定内容
claude_desktop_config.json に以下を追加:
{
"mcpServers": {
"f0_random": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\sengo\\Dropbox (旧)\\Dropbox\\FGDB\\workspace\\f0_ws\\mcp",
"run",
"python",
"server.py"
],
"env": {
"PYTHONPATH": "C:\\Users\\sengo\\Dropbox (旧)\\Dropbox\\FGDB\\workspace\\f0_ws\\mcp"
}
}
}
}
注意: パスは実際のインストール先に合わせて変更してください。
macOS/Linuxの例:
{
"mcpServers": {
"f0_random": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/f0_ws/mcp",
"run",
"python",
"server.py"
],
"env": {
"PYTHONPATH": "/absolute/path/to/f0_ws/mcp"
}
}
}
}
Claude Codeでの設定
Claude Codeの設定は、Claude Desktopと同じ設定ファイルを共有します。
設定手順
-
設定ファイルを開く
- Claude Code内で設定メニューを開く
- MCP設定セクションに移動
-
サーバーを追加 上記のClaude Desktop設定と同じJSON設定を追加
-
再起動 Claude Codeを再起動して設定を反映
使い方
基本的な使用例
1. 乱数を生成する
Claude Desktop/Codeで:
「10個の乱数を生成してください」
MCPサーバーが generate_random_numbers ツールを使用して乱数を生成します。
2. データを保存する
「生成した乱数をtest_data.csvに保存してください」
3. 統計分析を実行する
「データの統計分析を行ってください」
4. リソースにアクセスする
「現在のデータを確認してください」
サーバーが random://current リソースにアクセスします。
利用可能なツール
generate_random_numbers
乱数を生成します。
パラメータ:
count(int): 生成する乱数の個数(デフォルト: 5)min_value(int): 最小値(デフォルト: 0)max_value(int): 最大値(デフォルト: 999)seed(int, optional): 乱数シード(再現性のため)
戻り値:
{
"numbers": [404, 971, 885, ...],
"count": 10,
"min_value": 0,
"max_value": 999,
"timestamp": "2025-10-02T12:34:56.789012",
"seed": null
}
save_random_data
乱数データをCSVファイルに保存します。
パラメータ:
numbers(List[int]): 保存する整数のリストfilename(str): 出力ファイル名(デフォルト: "data.csv")
analyze_random_data
データの統計分析を実行します。
パラメータ:
numbers(List[int]): 分析する整数のリスト
戻り値:
{
"mean": 615.7,
"median": 618.0,
"std_dev": 234.5,
"variance": 55010.25,
"min": 328,
"max": 971,
"count": 10,
"sum": 6157,
"range": 643
}
load_data_from_csv
CSVファイルからデータを読み込みます。
パラメータ:
filename(str): 読み込むCSVファイル名
write_function_notation
FGDB関数記法をファイルに書き込みます。
パラメータ:
filename(str): 出力ファイル名(デフォルト: "func.txt")
利用可能なリソース
random://current
最後に生成された乱数データを取得します。
file://data/{filename}
保存されたCSVファイルからデータを読み込みます。
例: file://data/test_data.csv
meta://statistics
現在のデータの統計メタデータを取得します。
meta://files
データディレクトリ内の全ファイルをリストアップします。
meta://server-info
サーバー情報と機能一覧を取得します。
プロンプトテンプレート
Generate Test Dataset
テストデータセットを生成するためのガイド付きプロンプト。
パラメータ:
purpose: データセットの目的(デフォルト: "testing")size: サイズ - "small"(10), "medium"(100), "large"(1000)
Analyze Random Data
データ分析のためのステップバイステップガイド。
パラメータ:
data_source: "current"または保存されたファイル名
Create Reproducible Dataset
シードを使用して再現可能なデータセットを作成。
パラメータ:
seed: 乱数シード(デフォルト: 42)count: 生成する値の数(デフォルト: 100)
Batch Data Generation
複数バッチのデータを生成するワークフロー。
パラメータ:
num_batches: バッチ数(デフォルト: 5)batch_size: 各バッチのサイズ(デフォルト: 20)
Data Quality Check
データ品質チェックを実行するガイド。
パラメータ:
filename: チェックするCSVファイル(デフォルト: "data.csv")
開発とデバッグ
デバッグモードでの実行
cd mcp
uv run python server.py --debug
MCPインスペクターの使用
MCPインスペクターを使用してサーバーをテストできます:
npx @modelcontextprotocol/inspector uv --directory ./mcp run python server.py
ログの確認
macOS:
tail -f ~/Library/Logs/Claude/mcp-server-f0_random.log
Windows:
Get-Content "$env:APPDATA\Claude\Logs\mcp-server-f0_random.log" -Wait
プロジェクト構造
f0_ws/
├── mcp/ # MCPサーバー実装
│ ├── server.py # メインサーバー
│ ├── models.py # Pydanticデータモデル
│ ├── tools.py # ツール実装
│ ├── resources.py # リソースハンドラー
│ ├── prompts.py # プロンプトテンプレート
│ └── data/ # データ保存ディレクトリ
├── f0_make_randomvalues/ # オリジナルの関数ブロック
│ ├── func.py
│ └── lib.py
├── requirements.txt # Python依存関係
├── README.md # このファイル
└── mcp_specification.md # 技術仕様書
トラブルシューティング
サーバーが起動しない
-
Pythonバージョンを確認
python --version # 3.8以上が必要 -
依存関係を再インストール
uv pip install -r requirements.txt --force-reinstall -
パス設定を確認 設定ファイルのパスが絶対パスで正しいか確認
ツールが見つからない
-
Claude Desktop/Codeを再起動
-
設定ファイルの文法を確認 JSONが正しい形式か確認(カンマ、括弧など)
-
サーバーログを確認 エラーメッセージを確認
データが保存されない
-
書き込み権限を確認
# macOS/Linux ls -la mcp/data/ # Windows icacls mcp\data -
ディレクトリが存在するか確認
# 必要に応じて作成 mkdir -p mcp/data
セキュリティ考慮事項
- ファイルアクセスは
./dataディレクトリ内に制限されています - パストラバーサル攻撃を防ぐための検証が実装されています
- 許可された拡張子(.csv, .txt, .json)のみアクセス可能です
ライセンス
このプロジェクトはFGDBシステムの一部です。
参考資料
サポート
問題が発生した場合は、以下を確認してください:
- この README のトラブルシューティングセクション
mcp_specification.mdの技術仕様- サーバーログファイル
バージョン: 1.0.0 最終更新: 2025-10-02
