Senechal MCP サーバー
Senechal プロジェクトの補助として機能し、Senechal API から LLM アプリケーションにヘルスデータを提供するモデル コンテキスト プロトコル (MCP) サーバー。
概要
このサーバーは、LLMがSenechal APIから健康データにアクセスするための標準化されたインターフェースを提供します。以下の情報が公開されます。
リソース: LLM のコンテキストにロードできる健康データ
ツール: LLM が健康データを取得するために呼び出すことができる関数
プロンプト: 健康データを分析するための再利用可能なテンプレート
Related MCP server: OpenAPI MCP Server
インストール
このリポジトリをクローンする
仮想環境を作成します。
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate依存関係をインストールします:
pip install -r requirements.txt
構成
.env.exampleファイルを.envにコピーし、Senechal API キーと URL を追加します。
# Required: Senechal API Key
SENECHAL_API_KEY=your_api_key_here
# Required: API base URL
SENECHAL_API_BASE_URL=https://your-api-host/api/senechalサーバーが機能するには、API キーと API URL の両方が必要です。
Windows 構成
Windows で実行する場合は、次の点に注意してください。
設定ではバックスラッシュまたは適切にエスケープされたパスを使用します
claude-desktop-config.json で Python 仮想環境へのフル パスを使用します。
{
"mcpServers": {
"senechal-health": {
"command": "C:\\path\\to\\venv\\Scripts\\python.exe",
"args": [
"C:\\path\\to\\senechal_mcp_server.py"
],
"env": {
"SENECHAL_API_KEY": "your_api_key_here"
}
}
}
}MCP 構成の環境変数は.envファイルを使用しないため、構成で明示的に設定する必要があることに注意してください。
使用法
クライアント/サーバー設定のテスト
セットアップをテストする最も簡単な方法は、サンプル クライアントを実行することです。
# In one terminal, start the server
python senechal_mcp_server.py
# In another terminal, run the example client
python example_client.pyサーバーを起動する
python senechal_mcp_server.pyMCP Inspectorを使用した開発モード
mcp dev senechal_mcp_server.pyClaude Desktopにインストール
サーバーには、Claude Desktop の構成ファイルが含まれています。
mcp install senechal_mcp_server.pyその後、Claude Desktop のツール メニューから「Senechal Health」を選択できます。
利用可能なリソース
senechal://health/summary/{period}- 日、週、月、または年の健康状態の概要を取得します例:
senechal://health/summary/day?span=7&metrics=allパラメータ:
period: 日、週、月、年span: 期間数(デフォルト: 1)metrics: カンマ区切りのリストまたは「すべて」(デフォルト)offset: 現在からオフセットする期間数(デフォルト: 0)
senechal://health/profile- ユーザーの健康プロフィールを取得する人口統計、医薬品、サプリメントに関する情報が含まれています
senechal://health/current- 現在の健康測定値を取得する例:
senechal://health/current?types=1,2,3パラメータ:
types: 測定タイプIDのコンマ区切りリスト(オプション)
senechal://health/trends- 健康のトレンドを時系列で把握例:
senechal://health/trends?days=30&types=1,2,3&interval=dayパラメータ:
days: 分析する日数(デフォルト: 30)types: 測定タイプIDのコンマ区切りリスト(オプション)interval: グループ化間隔 - 日、週、月(デフォルト: 日)
senechal://health/stats- 健康指標の統計分析を取得します例:
senechal://health/stats?days=30&types=1,2,3パラメータ:
days: 分析期間(日数)(デフォルト: 30)types: 測定タイプIDのコンマ区切りリスト(オプション)
利用可能なツール
fetch_health_summary- 特定の期間のヘルスサマリーを取得しますパラメータ:
period(必須): 日、週、月、年metrics(オプション):カンマ区切りのメトリックまたは「すべて」(デフォルト)span(オプション):返される期間の数(デフォルト:1)offset(オプション):オフセットする期間数(デフォルト:0)
fetch_health_profile- ユーザーの健康プロファイルを取得するパラメータは必要ありません
fetch_current_health- 最新の健康測定値を取得するパラメータ:
types(オプション):フィルタリングする測定タイプIDのリスト
fetch_health_trends- 健康傾向データを取得するパラメータ:
days(オプション):分析する日数(デフォルト:30)types(オプション):フィルタリングする測定タイプIDのリストinterval(オプション):グループ化間隔 - 日、週、月(デフォルト:日)
fetch_health_stats- 健康指標の統計分析を取得しますパラメータ:
days(オプション):分析期間(日数)(デフォルト:30)types(オプション):フィルタリングする測定タイプIDのリスト
利用可能なプロンプト
analyze_health_summary- ヘルスサマリーを分析するためのプロンプト異常な指標や傾向を特定し、アクションを提案するためのテンプレートを提供します
senechal://health/summary/day?span=7のデータで使用することを目的としています
compare_health_trends- 異なる期間の健康傾向を比較するためのプロンプト異なる期間(7、30、90日)にわたる傾向を比較するためのテンプレートを提供します
健康トレンドエンドポイントからのデータで使用することを意図しています
やり取りの例
健康概要データの読み込み
# In an LLM application, load a week of health summaries
content, mime_type = await session.read_resource("senechal://health/summary/day?span=7")健康データツールを呼び出す
# In an LLM conversation
result = await session.call_tool(
"fetch_health_trends",
arguments={
"days": 30,
"interval": "day"
}
)
# More complex example combining tools and resources
profile = await session.call_tool("fetch_health_profile")
trends = await session.call_tool(
"fetch_health_trends",
arguments={"days": 90, "interval": "week"}
)健康分析プロンプトの使用
# Get a prompt for analyzing health data
prompt_result = await session.get_prompt("analyze_health_summary")
for message in prompt_result.messages:
print(f"[{message.role}]: {message.content.text}")完全な動作例については、 example_client.pyファイルを参照してください。
APIエンドポイント
Senechal MCP サーバーは、次の Senechal API エンドポイントと通信します。
/health/summary/{period}- ヘルスサマリーを取得する/health/profile- 健康プロファイルを取得する/health/current- 現在の測定値を取得する/health/trends- 健康トレンドを入手/health/stats- 健康統計情報を取得する