本项目实现了一个符合模型上下文协议(MCP)的服务器,它就像一座桥梁,连接着大型语言模型(如 Claude)和 Fitbit API。借助该服务器,大型语言模型能够请求并获取用户 Fitbit 账户中的健康与健身数据,还能通过定义好的工具与之交互。
git clone [仓库地址]
cd fitbit-mcp-server
npm install
.env 文件,并添加以下内容:FITBIT_CLIENT_ID=your_client_id
FITBIT_CLIENT_SECRET=your_client_secret
npm run build
npm start
若要将此服务器集成到 Claude 环境中,请按以下步骤操作:
dist 文件夹中的文件添加到 Claude 的工具路径中。config.json)中添加以下内容:{
"tools": [
{
"name": "get_weight",
"description": "获取指定时间段内的体重数据。",
"parameters": {
"type": "object",
"properties": {
"period": {
"type": "string",
"enum": ["1d", "7d", "30d", "3m", "6m", "1y"],
"description": "指定时间段。必须是 '1d'、'7d'、'30d'、'3m'、'6m' 或 '1y'。"
}
}
}
},
{
"name": "get_sleep_by_date_range",
"description": "获取指定日期范围内的睡眠数据。",
"parameters": {
"type": "object",
"properties": {
"startDate": {
"type": "string",
"format": "date",
"description": "开始日期,格式为 'YYYY-MM-DD'。"
},
"endDate": {
"type": "string",
"format": "date",
"description": "结束日期,格式为 'YYYY-MM-DD'。"
}
}
}
},
{
"name": "get_profile",
"description": "获取用户的 Fitbit 个人资料信息。",
"parameters": {}
}
]
}
get_weight:可检索指定时间段(1d、7d、30d、3m、6m、1y)内的原始体重数据,以今天为结束日期。需要一个 period 参数。get_sleep_by_date_range:能检索指定日期范围(最多 100 天)内的原始睡眠日志数据。需要两个参数:startDate 和 endDate,格式均为 YYYY-MM-DD。get_profile:用于检索用户的 Fitbit 个人资料信息。未来计划支持更多 Fitbit API 端点,涵盖但不限于:
以下是服务器运行后可用工具的概念性示例用法:
get_weight:返回指定时间段内的体重数据。
period(字符串,必需) - 指定时间段。必须是以下值之一:"1d"、"7d"、"30d"、"3m"、"6m"、"1y"。get_weight(period="7d")get_sleep_by_date_range:返回指定日期范围内的睡眠数据。
startDate(字符串,必需) - 指定开始日期,格式为 YYYY-MM-DD。endDate(字符串,必需) - 指定结束日期,格式为 YYYY-MM-DD。get_sleep_by_date_range(startDate="2025-04-01", endDate="2025-04-30")get_profile:返回用户的 Fitbit 个人资料信息。
get_profile()src/ 目录中。npm run build 进行构建。