项目简介
'withings-mcp' 是一个实现了 Model Context Protocol (MCP) 的服务器,它充当大型语言模型(LLM)与 Withings 智能体重秤及健康设备之间的桥梁。通过它,LLM 客户端可以标准化地访问和操作 Withings 账户中的个人健康数据,如体重、身体成分测量结果等。它通过 MCP 的工具(Tools)机制,将 Withings API 的功能暴露给 LLM,允许LLM在对话中查询用户的健康信息。
主要功能点
- 健康数据获取: 提供获取最新体重、完整身体成分数据(包括体重、脂肪量、肌肉量、骨量、水分、内脏脂肪指数、代谢年龄等)的功能。
- 原始测量数据查询: 允许按测量类型、日期范围、用户归属等条件筛选并获取原始测量数据,支持分页。
- 多用户支持: 可以查询 Withings 账户下所有用户的测量数据,并支持按用户归属进行过滤。
- 单位系统选择: 支持公制(kg)和英制(lb)单位,可通过环境变量或调用工具时指定。
- OAuth 2.0 授权流程: 内置 OAuth 授权工具,简化了与 Withings 账号的首次连接和令牌管理,支持自动刷新访问令牌。
- MCP 标准接口: 通过 JSON-RPC over Stdio 实现了 MCP 的 'ListTools' 和 'CallTool' 请求,使得任何支持 MCP 的 LLM 客户端都能轻松集成。
安装步骤
-
创建 Withings 开发者账号和应用:
- 访问 https://developer.withings.com/ 创建开发者账号。
- 创建一个应用以获取您的 'Client ID' 和 'Client Secret'。
- 设置回调 URI (Redirect URI),默认推荐使用 'http://localhost:3000/callback'。
-
安装 Bun 或 Node.js (推荐 Bun):
- 根据您的操作系统安装 Bun runtime 或 Node.js。
-
安装 'withings-mcp':
- 使用 Bun:
bun install git+https://github.com/gchallen/withings-mcp.git - 或使用 npm:
npm install git+https://github.com/gchallen/withings-mcp.git - 或者您可以直接运行而无需本地安装(推荐用于临时测试):
bunx --bun gchallen/withings-mcp # 或 npx gchallen/withings-mcp
- 使用 Bun:
-
配置 Withings 凭据:
- 在项目根目录创建 '.env' 文件,并填入您的 Withings 应用凭据:
WITHINGS_CLIENT_ID=您的Client ID WITHINGS_CLIENT_SECRET=您的Client Secret WITHINGS_REDIRECT_URI=http://localhost:3000/callback WITHINGS_USER_ATTRIB=0 # 可选: 固定获取设备拥有者的数据 (0=设备拥有者, 1+=其他用户) WITHINGS_UNIT_SYSTEM=metric # 可选: 设置默认单位 (metric=kg, imperial=lb)
- 在项目根目录创建 '.env' 文件,并填入您的 Withings 应用凭据:
-
Withings 授权(一次性设置):
- 运行授权工具,它会启动一个临时本地服务器,打开浏览器引导您完成 Withings 授权流程,并自动保存访问令牌到 '.env' 文件。
- 使用 Bun:
bunx --bun gchallen/withings-mcp login - 或使用 npm:
npx gchallen/withings-mcp login - 重要提示: 授权完成后,请将 '.env' 文件中生成的 'WITHINGS_ACCESS_TOKEN' 和 'WITHINGS_REFRESH_TOKEN' 复制到您的 MCP 客户端配置中,或者确保 MCP 客户端运行时能够访问到这些环境变量。
服务器配置
此 MCP 服务器设计为通过 Stdio 协议与 LLM 客户端通信。要将其集成到支持 MCP 的 LLM 客户端(例如 Claude Desktop),您需要提供服务器的启动命令和相关环境变量。以下是一个示例 JSON 配置,具体格式请参考您的 MCP 客户端文档:
{ "mcpServers": { "withings": { "command": "bunx", // 启动 MCP 服务器的可执行命令,通常是 "bunx" 或 "npx" "args": ["--bun", "gchallen/withings-mcp"], // 传递给 command 的参数,用于指定运行 withings-mcp 包。如果使用 npx,则为 ["gchallen/withings-mcp"] "env": { "WITHINGS_CLIENT_ID": "您的Client ID", // 您的 Withings 应用 Client ID "WITHINGS_CLIENT_SECRET": "您的Client Secret", // 您的 Withings 应用 Client Secret "WITHINGS_REDIRECT_URI": "http://localhost:3000/callback", // Withings 应用的回调 URI "WITHINGS_ACCESS_TOKEN": "授权后生成的访问令牌", // 通过 'login' 命令授权后获得的访问令牌 "WITHINGS_REFRESH_TOKEN": "授权后生成的刷新令牌", // 通过 'login' 命令授权后获得的刷新令牌 "WITHINGS_USER_ATTRIB": "0", // 可选: 指定默认用户进行数据过滤 (0=设备拥有者, 1+=其他用户) "WITHINGS_UNIT_SYSTEM": "imperial" // 可选: 指定默认单位系统 ("metric" 或 "imperial") } } } }
配置说明:
- 'command': 启动 MCP 服务器的可执行命令,通常是 'bunx' 或 'npx'。
- 'args': 传递给 'command' 的参数,用于指定运行 'withings-mcp' 包。
- 'env': 包含 MCP 服务器运行所需的环境变量。其中 'WITHINGS_CLIENT_ID', 'WITHINGS_CLIENT_SECRET', 'WITHINGS_REDIRECT_URI', 'WITHINGS_ACCESS_TOKEN', 'WITHINGS_REFRESH_TOKEN' 是必须提供的,通常在授权步骤后获得。'WITHINGS_USER_ATTRIB' 和 'WITHINGS_UNIT_SYSTEM' 是可选的默认设置。
基本使用方法
启动 MCP 服务器后(通过上述客户端配置),LLM 客户端即可通过 MCP 协议与服务器通信,并调用其提供的工具。以下是可用的工具列表及其功能:
- 'withings_get_weight': 获取最新的体重测量数据。
- 'withings_get_body_composition': 获取完整的身体成分数据,包括体重、脂肪、肌肉、骨骼、水分等详细指标。
- 'withings_get_measurements': 获取原始测量数据,可指定测量类型、日期范围和用户进行高级查询,支持分页。
- 'withings_get_users': 获取 Withings 智能秤上所有用户的列表及其测量统计信息。
- 'withings_get_user_settings': 获取用户的设置信息,如时区、单位偏好、客户端配置及令牌状态。
LLM 客户端会根据这些工具的描述和输入 Schema 来自动构造请求,从而获取用户所需的健康数据。
信息
分类
AI与计算