项目简介

本项目实现了一个 Model Context Protocol (MCP) 服务器,充当大型语言模型(如 Claude)和 Fitbit API 之间的桥梁。它允许 LLM 通过预定义的工具请求和检索用户的健康与健身数据。

主要功能点

  • Fitbit API 集成: 安全连接到 Fitbit API,通过 OAuth 2.0 获取用户授权并访问数据。
  • 健康数据访问: 提供工具用于获取用户的体重、睡眠记录和个人资料等健康数据。
  • MCP 兼容: 将 Fitbit 功能以标准化的 MCP 工具形式暴露给 LLM 客户端。
  • 易于扩展: 项目结构设计灵活,方便未来添加更多 Fitbit API 端点的支持。
  • 自动化授权: 在首次连接时,服务器会自动启动 Fitbit 的 OAuth 授权流程,引导用户在浏览器中完成授权。

安装步骤

  1. 克隆代码仓库: 打开终端或命令行,导航到你想要存放项目的目录,然后执行:
    git clone https://github.com/TheDigitalNinja/mcp-fitbit.git
    cd mcp-fitbit
  2. 安装依赖: 在项目根目录下执行以下命令安装所需的依赖库:
    npm install
  3. 创建环境变量文件: 在项目根目录('mcp-fitbit/')下创建一个名为 '.env' 的新文件。 在该文件中添加你的 Fitbit 应用凭据。这些凭据可以在 Fitbit 开发者网站 dev.fitbit.com 注册应用后获取。请确保将 OAuth 2.0 Application Type 设置为 'Personal',并将 Callback URL 设置为 'http://localhost:3000/callback'。
    FITBIT_CLIENT_ID=YOUR_FITBIT_CLIENT_ID
    FITBIT_CLIENT_SECRET=YOUR_FITBIT_CLIENT_SECRET
  4. 构建项目: 执行以下命令编译 TypeScript 源代码:
    npm run build
    这将在项目根目录下生成一个 'build/' 文件夹,包含可执行的 JavaScript 文件。

服务器配置

该 Fitbit MCP 服务器是为 MCP 客户端(如 Claude for Desktop)提供服务的。你需要配置你的 MCP 客户端,让它知道如何启动并连接到这个服务器。

通常,MCP 客户端的配置文件中会有一个部分用于配置 MCP 服务器。你需要为 Fitbit 服务器添加一个条目,指定客户端如何启动它。配置信息类似于以下结构(具体格式取决于你的 MCP 客户端,以下是基于 Claude for Desktop 的示例):

  • 'fitbit': 这是你自己给服务器定义的一个名称,用于在客户端中标识它。
  • 'command': 指定启动 MCP 服务器进程的命令。在这个项目中,是 'node'。
  • 'args': 一个数组,包含传递给 'command' 的参数。这里是 MCP 服务器主入口文件的路径。你需要将 '"C:\PATH\TO\PARENT\FOLDER\mcp-fitbit\build\index.js"' 替换为你实际克隆项目后 'build/index.js' 文件的绝对路径。请注意在 Windows 路径中使用双反斜杠 '\'。

例如(这是你需要添加到MCP客户端配置文件中的信息结构说明,不是直接运行的代码):

"mcpServers": {
    "fitbit": {
        "command": "node", // 启动Node.js运行时
        "args": [
            "C:\\PATH\\TO\\PARENT\\FOLDER\\mcp-fitbit\\build\\index.js" // MCP服务器主文件路径,请替换为你的实际路径
        ]
    }
    // 如果有其他MCP服务器,可以在这里添加
}

将上述配置(替换掉路径)添加到你的 MCP 客户端的配置中,然后保存文件并重启 MCP 客户端。

基本使用方法

  1. 启动客户端: 重启你的 MCP 客户端(如 Claude for Desktop)。
  2. 首次授权: 第一次需要访问 Fitbit 数据时(例如,你在客户端中询问需要 Fitbit 数据的健康问题),MCP 服务器会尝试启动 Fitbit 的 OAuth 授权流程。
    • 一个用于 MCP 服务器的控制台窗口可能会出现。
    • 服务器会尝试在你的默认网页浏览器中打开 'http://localhost:3000/auth' 地址。
    • 如果浏览器没有自动打开,请手动访问该地址。
    • 登录你的 Fitbit 账户,并授权该应用程序访问所需的权限(体重、睡眠、个人资料)。
    • 授权成功后,你将被重定向到 'http://localhost:3000/callback',浏览器会显示授权成功的消息,你可以关闭该窗口。
    • 服务器现在已经获得授权,可以访问你的 Fitbit 数据了。授权信息会保存在项目目录下的一个文件中,通常无需再次授权,除非 token 过期且刷新失败。
  3. 使用工具: 授权成功后,你的 LLM 客户端即可通过该 MCP 服务器调用 Fitbit 工具来获取数据。LLM 会根据你的提问自动决定何时调用哪个工具。例如,如果你问“我最近一周的体重是多少?”,LLM 可能会调用 'get_weight' 工具并提供 'period="7d"' 参数。

当前支持的工具(LLM 可调用):

  • 'get_weight': 获取指定周期(如 "7d", "30d", "1y")结束于今天的原始体重数据(JSON 格式)。需要 'period' 参数。
  • 'get_sleep_by_date_range': 获取指定日期范围内的原始睡眠日志数据(JSON 格式)。需要 'startDate' 和 'endDate' 参数(YYYY-MM-DD 格式),日期范围最大为 100 天。
  • 'get_profile': 获取用户的 Fitbit 原始个人资料信息(JSON 格式)。无需参数。

信息

分类

网页与API