IntervalsIcuMcp HTTP MCP服务器
该项目是一个HTTP MCP服务器,旨在与 intervals.icu API它为检索和操纵运动员、锻炼和活动数据提供了端点,支持耐力运动训练的集成和自动化场景。
特性
- 模型上下文协议(MCP)服务器:将Intervals.icu功能暴露给GitHub Copilot等AI代理
- ASP。NET核心Web API目标。净值10
- intervals.icu数据的传统REST API端点
- 可扩展的服务和插件架构
- 运动员档案、锻炼、活动和健康模型
- 用于高效数据处理的缓存和估计服务
- 通过TSS计算生成锻炼计划
入门指南
先决条件
- .NET 10 SDK (用于地方发展)
- 码头工人 (用于集装箱化部署)
- Intervals.icu API密钥 和 运动员ID (参见 intervals.icu 详情)
环境变量
运行应用程序需要以下环境变量:
| 变量 | 描述 | 示例 |
|---|---|---|
INTERVALS_ICU_API_KEY | 您的Intervals.icu API密钥 | abc123def456ghi789 |
INTERVALS_ICU_ATHLETE_ID | 您的Intervals.icu运动员ID | 12345 |
地方发展
- 克隆存储库:
git clone https://github.com/colinnuk/IntervalsIcuMcp.git
cd IntervalsIcuMcp- 还原NuGet包:
dotnet restore- 设置环境变量:
# Linux/macOS
export INTERVALS_ICU_API_KEY="your-api-key"
export INTERVALS_ICU_ATHLETE_ID="your-athlete-id"
# Windows PowerShell
$env:INTERVALS_ICU_API_KEY="your-api-key"
$env:INTERVALS_ICU_ATHLETE_ID="your-athlete-id"- 构建并运行项目:
dotnet build
dotnet run --project IntervalsIcuMcp/IntervalsIcuMcp.csproj- 访问API:
- REST端点: http://localhost:5000/McpTool/* - MCP服务器: http://localhost:5000/api/mcp - Swagger用户界面: http://localhost:5000/swagger
Docker设置
该项目包括一个使用Alpine Linux的多阶段Dockerfile,以实现最小的映像大小和跨平台兼容性。
使用Docker构建和运行
使用a .env 文件:
创建一个 .env 项目根目录中的文件:
INTERVALS_ICU_API_KEY=your-api-key-here
INTERVALS_ICU_ATHLETE_ID=your-athlete-id-here构建并运行Docker镜像:
# Build the image
docker build -t intervals-icu-mcp .
# Run the container with environment file
docker run --env-file .env -p 5000:5000 intervals-icu-mcp直接使用环境变量:
docker run \
-e INTERVALS_ICU_API_KEY="your-api-key" \
-e INTERVALS_ICU_ATHLETE_ID="your-athlete-id" \
-p 5000:5000 \
intervals-icu-mcp使用Docker Compose:
创建一个 docker-compose.yml 文件:
version: '3.8'
services:
intervals-icu-mcp:
build: .
container_name: intervals-icu-mcp
ports:
- "5000:5000"
environment:
INTERVALS_ICU_API_KEY: ${INTERVALS_ICU_API_KEY}
INTERVALS_ICU_ATHLETE_ID: ${INTERVALS_ICU_ATHLETE_ID}
restart: unless-stopped然后运行:
docker-compose up -dMCP服务器
该项目实现了一个MCP服务器,允许AI代理使用自然语言与您的Intervals.icu数据进行交互。MCP服务器公开了以下工具:
- 查询运动员资料、活动、健康数据和即将举行的活动
- 生成具有适当区域定位的结构化训练
看 MCP_SERVER.md 有关详细的设置和使用说明。
项目结构
Controllers/-API端点McpServer/-MCP工具实现Services/-业务逻辑与API集成Models/-intervals.icu实体的数据模型LlmPlugins/-自定义逻辑的可扩展插件Extensions/-助手扩展
测试
该项目包括使用以下工具进行重点单元测试 单元测试,瞄准。网10。
测试框架:NUnit 4.3.2
测试套件提供了基本的覆盖范围 10次核心测试 围绕关键功能进行组织:
EstimateTss测试(6个测试):
- 自行车和跑步运动计算
- 不支持运动处理(返回null)
- 边缘情况(空/零/负持续时间)
- 缺失的运动员数据将恢复为默认值
- 多区间可加性
估计强度因子测试(4次测试):
- 使用夹紧进行循环和运行计算
- 空/无支撑的运动边箱
- 持续时间加权强度计算
真实世界场景(3个测试):
- 典型的耐力骑行(90分钟,稳定Z2)
- 高强度间歇训练(Z6努力的HIIT)
- 用持续的努力奔跑
运行测试
# Run all tests
dotnet test
# Run tests with verbose output
dotnet test --verbosity detailed
# Run specific test class
dotnet test --filter "ClassName=WorkoutTssCalculatorTests"
# Run with code coverage
dotnet test /p:CollectCoverageMetrics=true测试覆盖说明
测试套件整合了相关场景,以保持清晰度,同时减少冗余:
- 通过参数化测试涵盖多种运动类型测试(例如,在一次测试中包含多种不受支持的运动
[TestCase]) - 在单个综合测试中测试缺失数据场景(无FTP、无区域、零值)
- 通过真实场景而不是孤立区域测试来测试区域变化
- 所有边缘情况都用真实的数据范围进行了验证
贡献
欢迎提交请求和问题。请遵循标准C#和。NET编码规范。
许可证
麻省理工学院
