Fitbit Health MCP Server
Provides read-only access to Fitbit health data (sleep, steps, heart rate, HRV) via local sync with Google Health API. Enables querying daily health summaries and trends through MCP tools without uploading data to cloud.
README
Fitbit Health 本地数据管线
这个项目使用 Google Health API 只读同步 Fitbit Air 健康数据,在本地生成近期趋势与当前请求窗口统计。它不会调用 LLM,不会上传健康数据,也不会给出医学诊断。
当前范围
- 睡眠时长与作息规律性
- 步数
- 平均心率
- 每日静息心率
- 每日 HRV(RMSSD)
- 标准化 JSON、分析 JSON 和中文 Markdown 报告
- 供 ChatGPT/Codex 本地调用的 stdio MCP Server
网页 Dashboard 和云端定时任务不在当前范围内。
安装
要求 Python 3.12 或更高版本。在项目目录运行:
python -m pip install -e ".[test]"
项目目录必须包含 Google Cloud 下载的“桌面设备”OAuth JSON。程序会忽略 Web 客户端凭据,并且凭据文件已被 .gitignore 排除。
首次同步
python -m fitbit_health sync --days 14
days 只支持 14、7、3、1 四档;最大抓取范围为 14 天,默认值为 7 天。
首次运行会启动一个临时 localhost 回调服务,并在命令输出中显示 Google 授权链接。复制完整链接到浏览器打开,使用 Fitbit Air 所属的 Google 账号,批准以下三个只读权限:活动与健身、睡眠、健康指标与测量。
localhost 只会在命令运行期间响应;直接在浏览器打开 localhost 并不会启动程序。
授权后 token 保存在 .private/token.json。后续运行会自动刷新 token。Google OAuth 项目处于 Testing 状态时,refresh token 可能在 7 天后失效,需要重新授权。
输出
输出位于 reports/:
daily_health_summary.json:按本地日期组织的标准化数据health_analysis.json:带样本数的趋势统计health_report.md:中文趋势报告
上述目录、OAuth 凭据和 token 均不会被 Git 跟踪。
测试
python -m pytest -q
python -m compileall -q src tests
测试只使用合成数据,不包含真实健康记录。
本地 MCP Server
MCP Server 复用同一套 OAuth、Google Health API、标准化与分析逻辑。它只使用本地 stdio,不启动 Web Server,也不暴露 HTTP 端口。
首次使用 MCP 前,请在普通终端完成一次交互授权:
python -m fitbit_health sync --days 1
授权成功后,可用任一方式启动:
fitbit-health-mcp
python -m fitbit_health.mcp_server
可用工具:
get_sleep(days: int = 7)get_steps(days: int = 7)get_heart_rate(days: int = 7)get_resting_heart_rate(days: int = 7)get_hrv(days: int = 7)get_health_summary(days: int = 7)
days 只支持 14、7、3、1 四档;最大抓取范围为 14 天,默认值为 7 天。
每个工具都返回 JSON 对象,固定包含 requested_days、available_days、data、missing_data 和 diagnostics。缺失数据、单一 API 类型失败和授权失效都会作为诊断返回,不会让 MCP Server 崩溃。
Codex TOML 配置示例
[mcp_servers.fitbit_health]
command = "D:\\anaconda\\python.exe"
args = ["-m", "fitbit_health.mcp_server"]
cwd = "E:\\CodeX_Lab"
ChatGPT/Codex JSON 配置示例
{
"mcpServers": {
"fitbit_health": {
"command": "D:\\anaconda\\python.exe",
"args": ["-m", "fitbit_health.mcp_server"],
"cwd": "E:\\CodeX_Lab"
}
}
}
这里的 Python 路径来自本机 (Get-Command python).Source。如果环境改变,请替换成新的绝对路径。配置中不要加入 client secret、access token 或 refresh token。
如果工具返回 diagnostics.authentication,请退出 MCP 客户端,在普通终端重新运行 python -m fitbit_health sync --days 1,授权完成后再重启 MCP 客户端。MCP 进程自身不会打开浏览器或输出 OAuth 授权链接,以免污染 stdio 协议。
常见问题
浏览器提示 localhost 无法访问
必须先运行同步命令。只有程序运行时,授权链接中的随机本地回调端口才存在。不要手动打开旧的 localhost:8080/oauth2/callback 地址。
Google 提示应用无权访问
确认登录邮箱已加入 Google Auth Platform 的测试用户,并在“数据访问”中启用了三个 Google Health 只读 scope。
某类数据为空
设备能力、佩戴情况、同步状态和授权范围都可能影响数据可用性。报告会显示有效样本数和 API 诊断,不会用推测值填补缺失数据。
Token 刷新失败
关闭正在运行的同步程序,将 .private/token.json 移出项目后重新运行同步并授权。不要删除 OAuth 客户端凭据。
免责声明
本项目仅描述可穿戴设备数据趋势,不构成医疗诊断、治疗或用药建议。如有健康疑虑,请咨询合格的医疗专业人员。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。