项目简介
Pierre Fitness MCP 服务器是一个基于Rust构建的强大后端应用,旨在通过Model Context Protocol (MCP) 协议,将Strava、Fitbit等健身平台的数据无缝集成到Claude、ChatGPT等AI助手中。它提供数据托管、工具调用和Prompt模板渲染等核心功能,并支持多租户、实时更新和可插拔的架构,为AI助手提供一个安全、可扩展的上下文服务框架。
主要功能点
- MCP协议支持: 服务器通过JSON-RPC协议(支持HTTP、Stdio、SSE等传输方式)与AI助手客户端通信,实现资源管理、工具注册与调用、Prompt模板定义等核心功能。
- 健身数据整合: 无缝连接Strava和Fitbit账户,自动获取用户的活动、个人信息和运动统计数据。
- 约35种AI工具: 提供丰富的AI工具集,涵盖核心健身数据查询(如获取活动、运动员信息、统计数据)、活动详细分析、运动目标设定与追踪、性能趋势分析、模式检测及个性化训练建议等。
- OAuth 2.0授权服务: 作为功能完备的OAuth 2.0授权服务器,安全管理AI客户端的动态注册和用户授权流程,确保数据访问的安全性和合规性。
- 多租户架构: 支持为不同组织提供独立的数据和配置隔离,保证数据安全,并支持大规模部署和扩展。
- 实时通知: 通过Server-Sent Events (SSE) 机制,向客户端推送OAuth授权完成、系统状态更新、Agent-to-Agent (A2A) 消息等实时通知。
- Agent-to-Agent (A2A) 通信: 支持自主AI系统之间的能力发现和异步消息传递,促进更复杂的AI协作模式。
- 插件系统: 采用编译时插件架构,允许通过扩展模块增强健身分析和数据处理能力,提升系统的灵活性和可定制性。
安装步骤
- 前提条件:
- Rust 1.70+ 版本。
- SQLite (默认的开发环境数据库) 或 PostgreSQL (生产环境推荐的数据库)。
- 获取代码:
首先,使用Git克隆本仓库到您的本地机器:
git clone https://github.com/Async-IO/pierre_mcp_server.git cd pierre_mcp_server - 构建服务器:
使用Cargo构建项目。'--release' 标志将生成优化后的二进制文件,适合生产环境运行:
cargo build --release - 配置环境变量:
在启动服务器之前,您需要设置一些必要的环境变量。这些变量用于数据库连接、数据加密和OAuth提供商集成。请根据您的实际情况进行替换:
- DATABASE_URL (必填): 指定您的数据库连接字符串。
- SQLite示例: 'export DATABASE_URL="sqlite:./data/pierre.db"'
- PostgreSQL示例: 'export DATABASE_URL="postgresql://user:password@host:port/database_name"'
- PIERRE_MASTER_ENCRYPTION_KEY (必填): 用于加密敏感数据的32字节主密钥(Base64编码)。
- 生成示例: 'export PIERRE_MASTER_ENCRYPTION_KEY="$(openssl rand -base64 32)"'
- HTTP_PORT (可选): 服务器监听的端口。默认为8081。
- 示例: 'export HTTP_PORT=8081'
- RUST_LOG (可选): 日志级别。例如 'info', 'debug', 'trace'。
- 示例: 'export RUST_LOG=info'
- 健身提供商OAuth (可选,如果需要连接Strava/Fitbit):
如果您计划集成Strava或Fitbit,需要从对应服务获取客户端ID、密钥和回调URI,并进行配置。
- Strava示例: 'export STRAVA_CLIENT_ID=your_client_id' 'export STRAVA_CLIENT_SECRET=your_client_secret' 'export STRAVA_REDIRECT_URI=http://localhost:8081/oauth/callback/strava'
- 更多环境变量请参考仓库中的 'src/constants/mod.rs' 文件获取所有配置项的详细说明。
- DATABASE_URL (必填): 指定您的数据库连接字符串。
- 启动服务器:
在配置好环境变量后,您可以通过以下命令启动Pierre MCP服务器:
服务器将在您配置的端口(默认为8081)上启动,并显示可用的API端点信息。cargo run --bin pierre-mcp-server
服务器配置示例 (供MCP客户端连接)
假设您的MCP客户端(如Claude Desktop)需要连接到此Pierre Fitness MCP服务器。MCP客户端通常通过一个桥接器(如项目'sdk/'目录中提供的'pierre-claude-bridge')来与MCP服务器通信。以下是您需要在MCP客户端的配置文件(通常是JSON格式)中进行设置的示例。
{ "mcpServers": { "pierre-fitness": { // 这是用于启动MCP服务器桥接器的命令。 // 桥接器是一个轻量级客户端,它将MCP客户端的请求转发到Pierre MCP服务器。 "command": "node", // 传递给桥接器的参数。 // 第一个参数是桥接器脚本的绝对路径,请替换为您的实际路径。 // 第二个和第三个参数"--server"和您的Pierre MCP服务器的HTTP地址。 "args": [ "/absolute/path/to/pierre_mcp_server/sdk/dist/cli.js", "--server", "http://localhost:8081" // 请替换为您的Pierre MCP Server实际运行的地址和端口 ] } } }
注意:
- 'command'和'args'配置的是项目'sdk/'目录下的JavaScript桥接器('cli.js'),而不是直接指向Rust服务器的二进制文件。
- 桥接器负责处理MCP客户端与Pierre服务器之间的通信细节,包括OAuth 2.0认证流程。
- 请务必将'/absolute/path/to/pierre_mcp_server/sdk/dist/cli.js'替换为您本地桥接器脚本的实际绝对路径。
基本使用方法
- 初始化管理员用户:
服务器启动后,为了管理系统,您可能需要通过发送一个REST API请求来创建第一个管理员用户:
curl -X POST http://localhost:8081/admin/setup \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "password": "SecurePass123!", "display_name": "Admin" }' - 通过MCP客户端连接与交互:
- 按照上述“服务器配置示例”中的说明,配置您的MCP客户端(例如Claude Desktop或任何其他支持MCP的AI助手)。
- 当MCP客户端启动并尝试连接Pierre时,它将通过桥接器自动触发OAuth 2.0认证流程。您的默认浏览器将打开一个授权页面。请使用您在步骤1中创建的管理员或其他注册用户凭据登录并授权。
- 授权完成后,MCP客户端将能够访问Pierre服务器提供的约35个健身相关工具。您可以通过AI助手提问,例如“获取我最近的跑步活动”、“分析我的跑步表现趋势”或“设定一个每月跑步目标”。AI助手将调用相应的工具来获取信息并为您提供答案。
- 管理仪表盘 (可选): 如果您启动了项目前端(位于'frontend/'目录),可以通过运行'cd frontend && npm install && npm run dev'命令启动开发服务器。访问'http://localhost:5173',您可以进行用户管理、监控API密钥使用情况、查看使用分析以及实时请求监控等操作。
信息
分类
AI与计算