一个模型上下文协议(MCP)服务器,提供AI助手访问Hevy健身追踪API的能力。这允许您通过AI聊天界面记录锻炼、管理训练计划、浏览练习并跟踪您的健身进度。
此MCP服务器提供了对Hevy健身追踪功能的全面访问:
get_workouts - 浏览您的锻炼历史(分页)get_workout - 获取特定锻炼的详细信息create_workout - 记录新的锻炼,包括练习、组数、重量和重复次数update_workout - 更新现有的锻炼get_workouts_count - 获取已记录的锻炼总数get_workout_events - 获取自某个日期以来的锻炼变更事件(更新/删除),用于同步get_routines - 列出您的训练计划get_routine - 获取特定训练计划的详细信息create_routine - 创建新的训练计划模板update_routine - 更新现有的训练计划get_exercise_templates - 浏览可用的练习(包括Hevy库和您自定义的练习)get_exercise_template - 获取特定练习模板的详细信息create_exercise_template - 创建自定义练习模板get_exercise_history - 查看特定练习的表现历史get_routine_folders - 列出您的训练计划文件夹以进行组织get_routine_folder - 获取特定训练计划文件夹的详细信息create_routine_folder - 创建新的训练计划文件夹git clone https://github.com/tomtorggler/hevy-mcp-server.git
cd hevy-mcp-server
npm install
npx wrangler secret put HEVY_API_KEY
# 当提示时粘贴您的API密钥
npm run deploy
您的MCP服务器将在以下地址可用:https://hevy-mcp-server.<your-account>.workers.dev/mcp
在本地运行服务器:
npm run dev
服务器将在以下地址可用:http://localhost:8787/mcp
要从Claude Desktop连接,请编辑您的配置文件(设置 > 开发者 > 编辑配置):
{
"mcpServers": {
"hevy": {
"command": "npx",
"args": [
"mcp-remote",
"https://hevy-mcp-server.<your-account>.workers.dev/mcp"
]
}
}
}
重启Claude Desktop,您将看到可用的Hevy工具。
一旦连接,您可以请求您的AI助手记录锻炼:
"记录今天上午10点至11点的锻炼。我做了卧推:3组,每组100公斤,10次重复;深蹲:4组,每组120公斤,8次重复。"
助手将:
get_exercise_templates查找练习IDcreate_workout使用正确的结构"显示我的最后5个锻炼"
"我的硬拉练习历史是什么?"
"获取自2024年1月1日以来的所有锻炼更改"
助手将使用get_workout_events同步最近的更改。
"创建一个新的Push Day训练计划,包括卧推(4组,每组8-12次重复,100公斤)和肩推(3组,每组10次重复,60公斤)"
助手将使用repRange字段为具有重复范围的练习,如“8-12次重复”。
"更新我的上身训练计划,添加引体向上"
助手将使用update_routine修改现有训练计划。
"创建一个名为'Tom的特殊电缆飞鸟'的自定义练习,使用电缆机针对胸部肌肉"
助手将使用create_exercise_template与适当的肌肉群和设备类别。
"创建一个名为'Summer 2024 Programs'的新文件夹"
助手将使用create_routine_folder来组织您的训练计划。
在创建锻炼时,您可以指定:
title - 锻炼名称(必需)startTime - 锻炼开始时间(必需,ISO 8601格式)endTime - 锻炼结束时间(必需,ISO 8601格式)routineId - 此锻炼所属的可选训练计划IDdescription - 可选锻炼描述isPrivate - 锻炼是否私有(可选,默认值:false)exercises - 练习数组,每个练习包含:
title - 来自模板的练习名称(必需)exerciseTemplateId - 从get_exercise_templates获取(必需)supersetId - 可选超级组ID(如果不在超级组中则为null)notes - 此练习的可选笔记sets - 组数据数组,每个组包含:
type - "warmup"、"normal"、"failure"或"dropset"(可选)weightKg - 千克重量(可选)reps - 重复次数(可选)distanceMeters - 对于有氧运动(可选)durationSeconds - 对于计时运动(可选)customMetric - 自定义指标,例如步数/楼层(可选)rpe - 感知努力等级,6-10(可选)注意: 练习和组的index字段是根据它们在数组中的位置自动生成的。
在创建训练计划时,您可以指定:
title - 训练计划名称(必需)folderId - 可选文件夹ID(默认为"My Routines"文件夹则为null)notes - 训练计划的可选笔记exercises - 练习数组,每个练习包含:
exerciseTemplateId - 从get_exercise_templates获取(必需)supersetId - 可选超级组ID(如果不在超级组中则为null)restSeconds - 组间休息时间(秒)(可选)notes - 此练习的可选笔记sets - 组数据数组,每个组包含:
type - "warmup"、"normal"、"failure"或"dropset"(可选)weightKg - 千克重量(可选)reps - 重复次数(可选)repRange - 重复范围对象,包含start和end(可选,例如8-12次重复)distanceMeters - 对于有氧运动(可选)durationSeconds - 对于计时运动(可选)customMetric - 自定义指标,例如步数/楼层(可选)重要: 与锻炼不同,训练计划不使用练习/组中的index或title字段。这些由API生成。
所有时间戳都使用ISO 8601格式:
2024-10-15T10:00:00Z
hevy-mcp-server/
├── src/
│ ├── index.ts # 包含工具定义的MCP服务器实现
│ └── lib/
│ └── client.ts # Hevy API客户端包装器
├── api.json # Hevy API的OpenAPI规范
├── wrangler.jsonc # Cloudflare Workers配置
└── package.json
要添加新的Hevy API功能:
src/lib/client.ts中添加API方法src/index.ts的init()方法中定义工具示例:
this.server.tool(
"tool_name",
{
param: z.string().describe("参数描述"),
},
async ({ param }) => {
try {
const result = await this.client.someMethod(param);
return {
content: [{
type: "text",
text: JSON.stringify(result, null, 2)
}]
};
} catch (error) {
return {
content: [{
type: "text",
text: `错误: ${error instanceof Error ? error.message : "未知错误"}`
}]
};
}
}
);
欢迎贡献!
main分支创建您的分支npm test和npm run type-checknpm run format和npm run lint:fix# 克隆您的分叉
git clone https://github.com/tomtorggler/hevy-mcp-server.git
cd hevy-mcp-server
# 安装依赖项
npm install
# 复制环境变量模板
cp .dev.vars.example .dev.vars
# 将您的Hevy API密钥添加到.dev.vars
# 启动开发服务器
npm start
# 运行测试
npm test
无许可证 - 详情见LICENSE文件。
本项目与Hevy无关。Hevy是Hevy Studios Inc.的商标。