健康数据访问服务

一个基于Python的模型上下文协议(MCP)服务器,提供对小米Notify应用健康数据的程序化访问,支持通过Google Drive集成下载SQLite备份数据库,并通过六种MCP工具在Windows上的Claude Desktop中访问健康指标。

  • by bjartenilsen
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bjartenilsen/Notify-for-Xiaomi-MCP-Server

使用说明

通知小米MCP服务器

基于Python的模型上下文协议(MCP)服务器,提供对小米应用程序Notify中健康数据的编程访问。服务器从Google Drive下载SQLite备份数据库,并通过Windows上Claude Desktop中可访问的六个MCP工具公开健康指标。

特性

  • Google Drive集成:使用OAuth2身份验证安全下载备份数据库
  • 健康数据访问:使用可读的时间戳查询睡眠、心率和活动数据
  • 数据库检查:列出所有表及其结构
  • 自定义查询:对数据库执行自定义SELECT查询
  • 只读访问:确保备份数据保持不变
  • 挪威错误消息:挪威语清晰、可操作的错误信息

MCP工具

  1. nxk_sync_database:从Google Drive下载最新的备份数据库
  2. nxk_list_tables:列出所有表及其结构和行数
  3. nxk_get_sleep:检索具有可读时间戳的睡眠数据
  4. nxk_get_heart_rate:检索心率测量值
  5. nxk_get_活动:检索活动数据(步数、卡路里、距离)
  6. nxk_query:执行自定义SELECT查询

需求

  • Python 3.10或更高版本
  • 启用了Drive API的Google Cloud项目
  • OAuth2凭据(credentials.json)
  • 通知小米应用程序并备份到谷歌云端硬盘

安装

  1. 克隆此存储库:
git clone <repository-url>
cd notify-xiaomi-mcp-server
  1. 创建虚拟环境并安装依赖项:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .
  1. 对于开发,请使用dev依赖项进行安装:
pip install -e ".[dev]"

设置

1.获得Google Drive API证书

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用Google Drive API
  4. 创建OAuth2凭据(桌面应用程序类型)
  5. 下载凭据文件并将其另存为 ~/.notify-xiaomi-mcp/credentials.json

2.首次身份验证

首次运行时,服务器将:

  1. 打开浏览器窗口进行Google OAuth2身份验证
  2. 要求您授予对Google Drive的访问权限(只读)
  3. 将身份验证令牌保存到 ~/.notify-xiaomi-mcp/token.pickle

后续运行将自动重用保存的令牌。

3.配置克劳德桌面

将服务器添加到Claude Desktop配置文件中。

快速设置:

编辑 %APPDATA%\Claude\claude_desktop_config.json 并添加:

{
  "mcpServers": {
    "notify-xiaomi": {
      "command": "python",
      "args": [
        "C:\\path\\to\\notify-xiaomi-mcp-server\\src\\server.py"
      ]
    }
  }
}

替换 C:\\path\\to\\notify-xiaomi-mcp-server 安装的实际路径。

有关详细的设置说明,请参阅 CLAUDE_DESKTOP_SETUP.md

有关全面的使用文档、示例和故障排除,请参阅 用法_ GIDE.md

用法

快速开始

  1. 同步数据库:从Google云端硬盘下载最新备份

    Use the nxk_sync_database tool in Claude Desktop
    
  2. 探索您的数据:列出可用表格

    Use nxk_list_tables (no parameters)
    
  3. 查询健康指标:使用特定的工具获取睡眠、心率或活动数据

查询示例

获取最近的睡眠数据:

Use nxk_get_sleep with parameters:
- start_date: "2024-01-01"
- limit: 10

获取心率测量值:

Use nxk_get_heart_rate with parameters:
- start_date: "2024-01-01"
- end_date: "2024-01-31"
- limit: 100

获取活动数据:

Use nxk_get_activity with parameters:
- start_date: "2024-01-01"
- limit: 30

自定义SQL查询:

Use nxk_query with parameter:
- sql: "SELECT * FROM SLEEP_TABLE LIMIT 5"

综合文档

详细文档包括:

  • OAuth2身份验证流程
  • 带示例的完整工具参考
  • 30+示例SQL查询
  • 错误消息和故障排除
  • 高级使用模式

看 用法_ GIDE.md

发展

运行测试

运行所有测试:

pytest

跑步覆盖:

pytest --cov=src --cov-report=html

仅运行基于属性的测试:

pytest -k "property"

代码格式化

黑色格式代码:

black src/ tests/

带褶边的棉绒:

ruff check src/ tests/

项目结构

notify-xiaomi-mcp-server/
├── src/
│   ├── __init__.py
│   ├── server.py              # FastMCP server and tool definitions
│   ├── config.py              # Configuration and file paths
│   ├── google_drive_client.py # Google Drive authentication and download
│   ├── database_manager.py    # Database operations
│   ├── timestamp_converter.py # Timestamp conversion utilities
│   ├── query_validator.py     # SQL query validation
│   └── models.py              # Pydantic models for input validation
├── tests/
│   ├── __init__.py
│   ├── test_timestamp_converter.py
│   ├── test_query_validator.py
│   ├── test_models.py
│   ├── test_google_drive_client.py
│   ├── test_database_manager.py
│   └── test_server.py
├── pyproject.toml
├── .gitignore
└── README.md

文档

该项目包括全面的文件:

故障排除

快速修复

身份验证问题:

  • 确保credentials.json在 ~/.notify-xiaomi-mcp/credentials.json
  • 删除token.pickle,必要时重新进行身份验证

数据库问题:

  • 跑 nxk_sync_database 首先下载数据库
  • 确保Notify应用程序正在备份到Google Drive

查询问题:

  • 只允许使用SELECT语句
  • 使用 nxk_list_tables 查看确切的表名和列名

全面故障排除

详细故障排除包括:

  • 所有错误消息均以英文解释
  • 分步解决方案
  • 常见问题和修复

看 USAGE_GUIDE.md-错误消息和故障排除

许可证

MIT许可证

贡献

欢迎投稿!请确保:

  • 所有测试均通过(pytest)
  • 代码已格式化(black src/ tests/)
  • 覆盖率保持在85%以上
  • 新功能包含基于属性的测试