mattjoyce
服务介绍
Senechal MCP 服务器
这是一个与 Senechal 项目配套的模型上下文协议 (MCP) 服务器,它从 Senechal API 提供健康数据给 LLM 应用程序。
概述
该服务器为 LLM 提供了一个标准化接口,以访问来自 Senechal API 的健康数据。它公开了以下内容:
- 资源:可以加载到 LLM 上下文中的健康数据
- 工具:LLM 可调用以获取健康数据的功能
- 提示:用于分析健康数据的可重用模板
安装
-
克隆此仓库
-
创建虚拟环境:
bash
python -m venv venv
source venv/bin/activate # 在 Windows 上: venvScriptsactivate -
安装依赖项:
bash
pip install -r requirements.txt
配置
将 .env.example 文件复制为 .env 并添加您的 Senechal API 密钥和 URL:
必需:Senechal API 密钥
SENECHAL_API_KEY=your_api_key_here
必需:API 基础 URL
SENECHAL_API_BASE_URL=https://your-api-host/api/senechal
API 密钥和 API URL 对于服务器运行都是必需的。
Windows 配置
在 Windows 上运行时,请确保:
- 在配置中使用反斜杠或正确转义的路径
- 在
claude-desktop-config.json中使用 Python 虚拟环境的完整路径:
json
{
"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 文件,因此您需要在配置中显式设置它们。
使用
测试客户端/服务器设置
测试设置最简单的方法是运行示例客户端:
bash
在一个终端中启动服务器
python senechal_mcp_server.py
在另一个终端中运行示例客户端
python example_client.py
启动服务器
bash
python senechal_mcp_server.py
开发模式与 MCP Inspector
bash
mcp dev senechal_mcp_server.py
在 Claude Desktop 中安装
服务器包括一个适用于 Claude Desktop 的配置文件:
bash
mcp install senechal_mcp_server.py
然后您可以在 Claude Desktop 的工具菜单中选择“Senechal Health”。
可用资源
-
senechal://health/summary/{period}- 获取日、周、月或年的健康摘要- 示例:
senechal://health/summary/day?span=7&metrics=all - 参数:
period:day, week, month, yearspan:周期数(默认值:1)metrics:逗号分隔的指标列表或 "all"(默认值)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:分组间隔 - day, week, month(默认值:day)
- 示例:
-
senechal://health/stats- 获取健康指标的统计分析- 示例:
senechal://health/stats?days=30&types=1,2,3 - 参数:
days:分析期天数(默认值:30)types:可选的逗号分隔的测量类型 ID 列表
- 示例:
可用工具
-
fetch_health_summary- 为特定时间段获取健康摘要- 参数:
period(必需):day, week, month, yearmetrics(可选):逗号分隔的指标列表或 "all"(默认值)-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天)的趋势
- 预期与来自健康趋势端点的数据一起使用
示例交互
加载健康摘要数据
python
在LLM应用程序中,加载一周的健康摘要
content, mime_type = await session.read_resource("senechal://health/summary/day?span=7")
调用健康数据工具
python
在LLM对话中
result = await session.call_tool(
"fetch_health_trends",
arguments={
"days": 30,
"interval": "day"
}
)
结合工具和资源的更复杂示例
profile = await session.call_tool("fetch_health_profile")
trends = await session.call_tool(
"fetch_health_trends",
arguments={"days": 90, "interval": "week"}
)
使用健康分析提示
python
获取用于分析健康数据的提示
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- 获取健康统计数据