返回市场
健身教练_mcp

健身教练_mcp

作者:Dinesh-Satram6 星标更新:2025-07-03

项目介绍

健康与健身教练 MCP 💪

使用Vercel部署

<a href="https://cursor.com/install-mcp?name=health-fitness-coach&config=eyJ1cmwiOiJodHRwOi8vbG9jYWxob3N0OjMwMDAvc3NlIn0="><img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="添加健康与健身教练 MCP 服务器到 Cursor" height="32" /></a>

🎯 这个项目是什么?

健康与健身教练 MCP 是一个全面的AI驱动的健身追踪应用程序,通过**模型上下文协议(MCP)**弥合了传统健身应用与智能AI助手之间的差距。

该项目由两个主要组件组成:

  1. 🌐 网络应用:一个现代的Next.js健身仪表板,用于记录活动并跟踪进度
  2. 🤖 MCP 服务器:一个符合协议的服务器,使AI工具(如Cursor、Claude Desktop等)能够智能地与您的健身数据进行交互

🏗️ 系统架构及MCP集成

┌─────────────────────────────────────────────────────────────────────────────┐
│                    健康与健身教练生态系统                                │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────────────────┐    ┌─────────────────────┐    ┌─────────────────┐  │
│  │   🌐 WEB APP        │    │   🤖 MCP SERVER     │    │  🧠 AI客户端    │  │
│  │   (Next.js)         │    │   (协议层)          │    │  (Cursor/Claude) │  │
│  │                     │    │                     │    │                 │  │
│  │ • 健身仪表盘       │◄──►│ • 7个智能工具       │◄──►│ • 自然语言处理  │  │
│  │ • 活动日志         │    │ • 数据处理           │    │ • 上下文感知    │  │
│  │ • 进度跟踪         │    │ • 上下文分析         │    │ • 计划生成      │  │
│  │ • 计划可视化       │    │ • API集成            │    │ • 智能查询      │  │
│  │ • 实时更新         │    │ • 协议合规性         │    │ • 工具调用      │  │
│  └─────────────────────┘    └─────────────────────┘    └─────────────────┘  │
│           │                           │                           │          │
│           └───────────────────────────┼───────────────────────────┘          │
│                                       │                                      │
│  ┌─────────────────────────────────────▼─────────────────────────────────────┐ │
│  │                     📊 统一数据层                                   │ │
│  │                                                                         │ │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐   │ │
│  │  │ 🏋️ 锻炼     │  │ 🍎 营养     │  │ 📋 计划     │  │ 💭 反馈     │   │ │
│  │  │ • 会话      │  │ • 餐食      │  │ • AI生成    │  │ • 进展      │   │ │
│  │  │ • 持续时间  │  │ • 卡路里    │  │ • 每周      │  │ • 笔记      │   │ │
│  │  │ • 类型      │  │ • 项目      │  │ • 每日      │  │ • 见解      │   │ │
│  │  └─────────────┘  └─────────────┘  └─────────────┘  └─────────────┘   │ │
│  └─────────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

🤖 MCP服务器是什么以及为什么重要?

模型上下文协议(MCP)解释

模型上下文协议是一种标准化的方式,让AI应用程序连接到外部数据源和工具。可以将其视为一种通用翻译器,允许像Claude Desktop或Cursor这样的AI助手理解并与其交互您的健身数据。

MCP服务器在本应用中的角色

我们的MCP服务器充当了一个智能健身数据网关,它:

  1. 🔗 桥接AI和健身数据

    • 将自然语言健身查询转换为结构化数据操作
    • 允许AI工具读取、写入并分析您的健身信息
    • 根据您的实际健身历史提供上下文感知响应
  2. 🧠 启用智能教练

    • AI可以询问:“这周我做了哪些锻炼?”→ MCP获取并分析您的数据
    • AI可以建议:“创建一个锻炼计划”→ MCP生成个性化的常规
    • AI可以跟踪:“记录我的30分钟跑步”→ MCP存储并更新您的进度
  3. 📊 提供丰富的上下文

    • 当您向AI寻求健身建议时,它有访问您完整历史的权利
    • AI可以识别模式、提出改进并跟踪长期进展
    • 基于您的实际表现数据启用个性化教练

🛠️ MCP服务器工具及能力

MCP服务器暴露了7个智能工具,这些工具改变了AI与健身数据交互的方式:

核心日志工具

log-workout - 锻炼会话跟踪

// 功能:记录带有智能分类的锻炼会话
{
  tool: "log-workout",
  parameters: {
    userId: "user123",
    date: "2025-01-07", 
    type: "力量训练", // 自动分类:有氧、力量、柔韧性
    duration: 45,              // 活动分钟数
    distance: 0                // 有氧运动可选距离
  }
}
// AI上下文:"今天我进行了45分钟的力量训练"

log-nutrition - 餐食及卡路里跟踪

// 功能:记录带有智能营养分析的餐食
{
  tool: "log-nutrition", 
  parameters: {
    userId: "user123",
    date: "2_25-01-07",
    meal: "早餐",                    // 自动检测:早餐/午餐/晚餐/小吃
    items: ["燕麦片", "香蕉", "杏仁"], // 自然语言食物项
    calories: 350                         // 计算或估算的卡路里
  }
}
// AI上下文:"我早餐吃了燕麦片、香蕉和杏仁"

log-feedback - 进展及动力跟踪

// 功能:捕捉主观健身体验和进展笔记
{
  tool: "log-feedback",
  parameters: {
    userId: "user123", 
    date: "2025-01-07",
    notes: "持续锻炼后感觉更强壮。准备好增加重量!"
  }
}
// AI上下文:跟踪动力、能量水平和主观进展

智能及规划工具

generate-plan - AI驱动的健身规划

// 功能:创建个性化的锻炼和营养计划
{
  tool: "generate-plan",
  parameters: {
    userId: "user123"
  }
}
// AI魔法:分析您的历史、偏好和目标以创建:
// - 明天的锻炼常规
// - 每周锻炼计划
// - 餐饮推荐
// - 逐步难度调整

view-context - 综合健身分析

// 功能:提供完整的健身概况供AI决策
{
  tool: "view-context", 
  parameters: {
    userId: "user123"
  }
}
// 返回:完整的健身历史、模式、目标和见解
// 使AI能够做出知情的教练决策

set-weekly-target - 目标设定及跟踪

// 功能:建立并跟踪健身目标
{
  tool: "set-weekly-target",
  parameters: {
    userId: "user123",
    weekStart: "2025-01-06", 
    targetRuns: 3,           // 每周有氧目标
    calorieBudget: 2000      // 每日卡路里目标
  }
}
// AI上下文:启用目标导向的教练和进展跟踪

实用工具

echo - 系统健康及测试

// 功能:测试MCP连接性和系统健康
{
  tool: "echo",
  parameters: {
    message: "测试MCP连接"
  }
}
// 使用:调试并确保MCP服务器响应

🔄 MCP数据流及AI集成

如何将AI查询转化为健身行动

┌─────────────────────────────────────────────────────────────────────────────┐
│                           MCP 数据流                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  用户在AI工具中:"我今天做了20个俯卧撑,持续了15分钟"                 │
│         │                                                                   │
│         ▼                                                                   │
│  ┌─────────────────────┐    ┌─────────────────────┐    ┌─────────────────┐  │
│  │   🧠 AI 处理        │    │   🤖 MCP 协议       │    │  📊 数据存储    │  │
│  │                     │    │                     │    │                 │  │
│  │ • 解析意图         │───►│ • 工具选择         │───►│ • 存储锻炼      │  │
│  │ • 提取数据         │    │ • 参数映射         │    │ • 更新统计      │  │
│  │ • 选择动作         │    │ • 执行工具调用     │    │ • 计算          │  │
│  │ • 格式化响应       │◄───│ • 返回结果         │◄───│   进展          │  │
│  └─────────────────────┘    └─────────────────────┘    └─────────────────┘  │
│         │                                                                   │
│         ▼                                                                   │
│  AI 响应:"很好!我已经记录了您15分钟的俯卧撑会话。您已完成每日锻炼目标的15/60分钟。"│
└─────────────────────────────────────────────────────────────────────────────┘

网络应用 ↔ MCP服务器集成

┌─────────────────────────────────────────────────────────────────────────────┐
│                        双界面系统                                         │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────────────────┐                    ┌─────────────────────┐         │
│  │   🌐 网络界面       │                    │  🤖 AI界面         │         │
│  │                     │                    │                     │         │
│  │ • 视觉仪表盘       │                    │ • 自然语言处理     │         │
│  │ • 点击日志         │                    │ • 上下文查询       │         │
│  │ • 进度图表         │                    │ • 智能规划         │         │
│  │ • 计划显示        │                    │ • 模式分析         │         │
│  └─────────────────────┘                    └─────────────────────┘         │
│           │                                           │                     │
│           ▼                                           ▼                     │
│  ┌─────────────────────────────────────────────────────────────────────────┐ │
│  │                     🔄 MCP服务器核心                                 │ │
│  │                                                                         │ │
│  │  • 统一的数据访问接口                                               │ │
│  │  • 一致的业务逻辑和验证                                             │ │
│  │  • 网络和AI之间的实时同步                                           │ │
│  │  • 智能缓存和性能优化                                               │ │
│  └─────────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

🎯 实际使用场景

场景1:日常锻炼记录

👤 用户在Cursor中:"我刚刚完成了一次30分钟的HIIT锻炼"

🤖 AI + MCP流程:
1. AI识别锻炼记录意图
2. MCP调用`log-workout`工具
3. 存储:类型="HIIT",持续时间=30,日期=今天
4. 更新每日进度计数器
5. AI回应鼓励和进度更新

📱 网络应用:自动显示更新的锻炼分钟数和锻炼完成情况

场景2:智能计划生成

👤 用户在Claude中:"根据本周的锻炼情况,为明天创建一个锻炼计划"

🤖 AI + MCP流程:
1. MCP调用`view-context`来分析一周的活动
2. AI识别模式:主要是上半身,低有氧
3. MCP调用`generate-plan`带上下文
4. 创建平衡计划,强调腿部和有氧
5. 存储明天的计划

📱 网络应用:明天的锻炼部分填充了AI生成的锻炼

场景3:营养指导

👤 用户在AI中:"我正在尝试吃得更健康,午餐应该吃什么?"

🤖 AI + MCP流程:
1. MCP调用`view-context`检查今天的餐食和卡路里目标
2. AI分析营养缺口和卡路里预算
3. 建议特定餐食及其卡路里数
4. 用户确认:"我会吃烤鸡肉沙拉"
5. MCP调用`log-nutrition`记录餐食

📱 网络应用:更新营养进展和餐食历史

🌟 MCP集成的关键优势

对于用户

  • 🎯 个性化AI教练:AI拥有您健身旅程的完整上下文
  • 💬 自然交互:用普通英语与AI讨论健身目标
  • 📊 智能洞察:AI可以识别模式并提出改进建议
  • 🔄 无缝体验:数据在网页应用和AI工具之间自动同步

对于开发者

  • 🔌 协议合规性:标准的MCP实现与任何MCP客户端兼容
  • 🛠️ 可扩展架构:轻松添加新工具和功能
  • 📈 丰富上下文:AI工具获得全面的健身数据以做出更好的决策
  • 🔧 灵活部署:适用于Cursor、Claude Desktop或自定义AI工具

对于AI应用

  • 🧠 领域专业知识:专门的健身知识和数据处理
  • 📋 结构化数据:干净、组织良好的健身信息供分析
  • ⚡ 实时更新:实时数据同步以获取当前信息
  • 🎨 丰富响应:基于上下文和个人化的健身教练响应

🚀 快速入门指南

1. 设置MCP服务器

git clone https://github.com/your-username/health-fitness-coach-mcp.git
cd health-fitness-coach-mcp
npm install
cp env.example .env.local
# 添加OPENAI_API_KEY以生成AI计划
npm run dev

2. 连接到AI工具

Cursor配置

{
  "mcpServers": {
    "health-fitness-coach": {
      "url": "http://localhost:3000/sse"
    }
  }
}

Claude Desktop配置

{
  "mcpServers": {
    "health-fitness-coach": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
    }
  }
}

3. 测试集成

# 直接测试MCP工具
npm run test:fitness

# 测试特定端点
curl http://localhost:3000/api/context?userId=default-user

4. 开始使用

  • 网络应用:访问http://localhost:3000进行视觉健身追踪
  • AI集成:向您的AI助手询问健身相关问题
  • 自然语言:"记录我的锻炼"、"创建一个计划"、"我做得怎么样?"

🔧 技术实现细节

MCP协议合规性

// 符合MCP协议的工具定义
export const logWorkoutTool = {
  name: "log-workout",
  description: "记录带有类型、持续时间和可选距离的锻炼会话",
  inputSchema: {
    type: "object",
    properties: {
      userId: { type: "string", description: "唯一用户标识符" },
      date: { type: "string", description: "YYYY-MM-DD格式的日期" },
      type: { type: "string", description: "锻炼类型(例如'跑步'、'力量')" },
      duration: { type: "number", description: "持续时间(分钟)" },
      distance: { type: "number", description: "距离(公里,可选)" }
    },
    required: ["userId", "date", "type", "duration"]
  }
}

数据存储及检索

// 带持久化钩子的内存存储
export const workoutStore = createInMemoryStore<WorkoutEntry>()
export const nutritionStore = createInMemoryStore<NutritionEntry>()
export const planStore = createInMemoryStore<PlanEntry>()

//