Vitals - 基于AI的健身追踪器
一款现代健身追踪应用,通过模型上下文协议(MCP)集成了AI助手功能。追踪您的锻炼和饮食,查看您的进步,并使用任何兼容MCP的AI助手与您的健身数据进行交互。
🌟 特点
- 📊 仪表盘 - 一目了然地查看您的健身数据、每周进度和近期活动
- 💪 运动追踪 - 记录并管理你的锻炼课程
- 🍽️ 餐食追踪 - 记录你的营养摄入和饮食日志
- 无平台依赖的AI集成 - 使用任何兼容MCP的人工智能助手(如Claude或未来的AI工具)与您的健身数据进行互动
- 📈 统计数据 - 记录总锻炼次数、饮食、每周进度和活动连续天数
- 🎨 现代用户界面 - 使用 shadcn/ui 组件和 Tailwind CSS 构建
- ☁️ 云数据库 - 由Neon托管的PostgreSQL数据库
🚀 技术栈
前端
- Next.js 14 - 带有App Router的React框架
- TypeScript - 类型安全的开发
- Tailwind CSS - 实用优先的样式设计
- shadcn/ui(可译为“shadcn用户界面库”或根据具体上下文简化为“shadcn UI”,表示这是一个用于构建用户界面的库或框架) - 高质量的用户界面组件
- Tabler 图标 - 精美的图标库
后端
- Next.js API 路由 无服务器API端点
- 棱镜 - 下一代对象关系映射(ORM)
- PostgreSQL(Neon) - 云托管数据库
人工智能集成
- 模型上下文协议(MCP) - 连接AI助手到您数据的开放标准
- 平台无关的 - 与任何MCP兼容的人工智能助手(如Claude Desktop、未来工具)配合使用
📦 安装
先决条件
- 已安装 Node.js 18+
- npm 或 yarn 包管理器
- 霓虹账户(用于数据库)
- 兼容MCP的人工智能助手(例如,Claude桌面版)
设置
- 克隆仓库
git clone https://github.com/abhay-cs/mcp-fitness.git
cd mcp-fitness- 安装依赖项
npm install- 设置环境变量
创建一个 .env 在根目录下的文件:
DATABASE_URL="postgresql://user:password@ep-xxx.neon.tech/dbname?sslmode=require"- 初始化数据库
npx prisma migrate dev --name init
npx prisma generate- 运行开发服务器
npm run dev访问 http://localhost:3000 查看这个应用。
🤖 MCP 集成
Vitals 使用 模型上下文协议(MCP) - 由Anthropic创建的一项开放标准,允许AI助手安全地连接到外部数据源和工具。这意味着Vitals可以与任何兼容MCP的AI助手协同工作,而不仅限于某个特定平台。
为什么选择MCP?
- 🔓 开放标准 - 不局限于单一的人工智能提供商
- 🔒 安全 - 您的数据始终由您掌控
- 🔮 未来无忧(或:具备未来适应性) - 随着更多人工智能工具采用MCP,它们将自动与Vitals协同工作
- 🛠️ 可扩展的 - 容易添加新功能
支持的AI助手
目前测试使用:
- ✅ Claude Desktop(可译为“Claude桌面版”或根据具体语境简化为“Claude桌面”) (由Anthropic开发)
未来兼容性(随着MCP采用率的增长):
- 🔜 其他支持MCP的人工智能工具
- 🔜 自定义AI实现
使用Claude Desktop进行设置
- 找到您的Claude桌面配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Windows: %APPDATA%/Claude/claude_desktop_config.json
- 添加MCP服务器配置:
{
"mcpServers": {
"vitals-fitness": {
"command": "npx",
"args": [
"tsx",
"/FULL/PATH/TO/YOUR/PROJECT/mcp-server/index.ts"
]
}
}
}替换 /FULL/PATH/TO/YOUR/PROJECT/ 使用您实际的项目路径。
- 重启Claude桌面版
与其他MCP兼容工具的设置
MCP服务器运行在stdio传输层上,并且可以连接到任何兼容MCP的客户端。请参阅您的AI助手的文档以了解MCP配置。
可用的MCP工具
Vitals MCP服务器将这些工具暴露给任何连接的AI助手:
| 工具 | 描述 | 参数 |
|---|---|---|
log_workout | 记录一次锻炼课程 | description (必填), date (可选) |
log_meal | 记录餐食 | description (必填), date (可选) |
get_workouts | 获取最近的锻炼记录 | days (可选,默认值:7) |
get_meals | 获取最近的餐食 | days (可选,默认值:7) |
get_stats | 获取健身统计数据 | 无 |
示例命令
一旦配置了与MCP兼容的AI助手,您就可以使用自然语言:
记录活动日志:
- “训练日志:5组5次深蹲,每组225磅”
- “日志餐:烤鸡配米饭和蔬菜”
- “记录昨天的锻炼:30分钟跑步”
查询数据:
- “显示我最近的锻炼记录”
- “我这周记录了哪些餐食?”
- “获取我的健身数据”
- “显示过去14天的锻炼记录”
📁 项目结构
vitals-fitness/
├── src/
│ ├── app/
│ │ ├── (dashboard)/
│ │ │ ├── layout.tsx # Shared layout with sidebar
│ │ │ ├── dashboard/ # Dashboard page
│ │ │ ├── workouts/ # Workouts page
│ │ │ ├── meals/ # Meals page
│ │ │ └── ai-connect/ # AI connections page
│ │ └── api/
│ │ ├── workouts/ # Workout API endpoints
│ │ ├── meals/ # Meal API endpoints
│ │ └── stats/ # Statistics endpoint
│ ├── components/
│ │ ├── ui/ # shadcn/ui components
│ │ ├── app-sidebar.tsx # Main navigation sidebar
│ │ └── icons/ # Custom icon components
│ └── lib/
│ └── db.ts # Prisma client and database functions
├── mcp-server/
│ └── index.ts # MCP server implementation
├── prisma/
│ └── schema.prisma # Database schema
└── public/ # Static assets🗄️ 数据库模式
model Workout {
id String @id @default(uuid())
date String
description String
createdAt DateTime @default(now())
}
model Meal {
id String @id @default(uuid())
date String
description String
createdAt DateTime @default(now())
}🛠️ 开发
运行应用程序
npm run dev # Start Next.js dev server
npm run mcp # Start MCP server (for testing)数据库操作
npx prisma studio # Open Prisma Studio
npx prisma migrate dev # Create new migration
npx prisma generate # Generate Prisma Client为生产构建(或准备生产环境)
npm run build
npm start🚀 部署
部署到 Vercel
- 将你的代码推送到GitHub
- 导入项目到 Vercel
- 添加环境变量(DATABASE_URL)
- 部署!
注: MCP服务器在本地运行,并连接到您已部署的API终端节点。
数据库(霓虹)
数据库已在Neon上托管,无需额外设置。
🎯 路线图
- \[ \] 用户认证
- \[ \] 支持多用户
- \[ \] 运动库和模板
- \[ \] 基于AI解析的宏量营养素追踪
- \[ \] 进展照片
- \[ \] 运动日历视图
- \[ \] 导出数据功能
- \[ \] 移动应用版本
- \[ \] 与健身可穿戴设备的集成
- \[ \] 支持额外的MCP兼容AI工具
🤝 贡献
欢迎贡献!请随时提交拉取请求。
📝 许可证
此项目采用MIT许可证授权。
👨💻 作者
你的名字
- GitHub: @abhay-cs(用户名或特定标识,可直接保留原样或根据上下文翻译为“@阿巴伊-计算机科学”等,但在此处为保持简洁,直接保留原样)
- 领英(LinkedIn): 阿比·沙玛
🙏 致谢
- Anthropic(公司名,可译为“安萨提克”或保持原名,根据语境决定是否需要翻译) 为创建模型上下文协议(MCP)
- shadcn/ui(可译为“shadcn用户界面库”或根据具体语境简化为“shadcn UI”,意指由shadcn提供的用户界面组件库或框架) 为了美丽的组件
- 霓虹 用于数据库托管
- Vercel(注:Vercel是一个用于部署和托管静态网站及服务器端渲染应用的平台,直接音译为“维尔塞尔”或保留原名“Vercel”均可,具体根据上下文或品牌习惯选择。) 用于部署平台
______________________________________________________________________
🌐 基于开放标准构建
这个项目采用了MCP(模型上下文协议),这是一种用于人工智能到应用集成的开放标准。随着越来越多的AI工具采用MCP,Vitals将能够自动与它们协同工作,无需进行代码更改。
由……建造/建成 阿巴伊·沙玛。
