健康数据协议服务器

一个为LLM应用提供Senechal API健康数据的模型上下文协议服务器。

  • by mattjoyce
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mattjoyce/senechal-mcp

使用说明

Senechal MCP服务器

模型上下文协议(MCP)服务器,作为Senechal项目的伙伴,从Senechal API向LLM应用程序提供健康数据。

概述

该服务器为LLM提供了一个标准化接口,用于从Senechal API访问健康数据。它揭示了:

  • 资源:可以加载到LLM上下文中的健康数据
  • 工具:LLM可以调用以获取健康数据的函数
  • 提示:用于分析健康数据的可重用模板

安装

  1. 克隆此存储库
  2. 创建虚拟环境:
    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装依赖项:
    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上运行时,请确保:

  1. 在配置中使用反斜杠或正确转义的路径
  2. 在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.py

MCP Inspector开发模式

mcp dev senechal_mcp_server.py

在Claude桌面中安装

服务器包括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 -获取健康统计数据

更新日志

看 更改日志.md.