健身房课程查询服务器

一个连接Octiv Fitness API的MCP服务器,允许用户通过对话查询健身房课程安排和预订信息。

  • by DanWertheimer
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 DanWertheimer/octiv-mcp

使用说明

Octiv健身MCP服务器

连接到的MCP(模型上下文协议)服务器 Octiv健身 API,让您直接在对话中向Claude询问您的健身课程安排和预订。

先决条件

  • Python 3.10或更新版本
  • 紫外线 --快速Python包管理器
  • 您的Octiv登录凭据(电子邮件+密码)

安装

cd octiv-mcp
uv sync

这创建了一个 .venv 并安装所有运行时依赖项。还要安装开发工具(ruff、ty、pytest):

uv sync --group dev

配置

服务器从环境变量中读取凭据:

变量 必填 描述
OCTIV_USERNAME ✅ 您的octiv登录电子邮件
OCTIV_PASSWORD ✅ 您的Octiv密码
OCTIV_TENANT_ID 可选 您的健身房租户ID(如果省略,则自动检测)
OCTIV_LOCATION_ID 可选 健身房的位置ID(如果省略,则自动检测)
OCTIV_PROGRAMME_IDS 可选 逗号分隔的WOD程序ID。如果省略, get_wod 将提示您从可用的程序中进行选择。

服务器将您的身份验证令牌(约1年有效期)和用户配置文件缓存在 ~/.octiv_mcp/ 因此,它不会在每次通话时重新登录。

在Claude Code中设置

将服务器添加到您的Claude Code MCP配置中。编辑 ~/.claude/claude_mcp_config.json (或创建它):

{
  "mcpServers": {
    "octiv": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/octiv-mcp", "python", "/path/to/octiv-mcp/server.py"],
      "env": {
        "OCTIV_USERNAME": "your@email.com",
        "OCTIV_PASSWORD": "yourpassword"
      }
    }
  }
}

然后重新启动Claude Code。您可以通过以下方式进行测试:

/mcp

在Claude Desktop中设置(共同工作)

在以下位置编辑您的Claude Desktop配置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "octiv": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/octiv-mcp", "python", "/path/to/octiv-mcp/server.py"],
      "env": {
        "OCTIV_USERNAME": "your@email.com",
        "OCTIV_PASSWORD": "yourpassword"
      }
    }
  }
}

保存后重新启动Claude Desktop。

可用工具

get_weekly_schedule

获取给定一周的完整课程表。

参数:

  • week_offset (可选,整数): 0 =本周, 1 =下周, -1 =上周。默认为 0.

示例提示:

  • “这周有什么课?”
  • “给我看看下周的日程安排”

get_schedule_for_date

获取特定日期或日期范围的课程表。

参数:

  • start_date (必填):日期 YYYY-MM-DD 格式
  • end_date (可选):结束日期 YYYY-MM-DD 格式(默认为 start_date)

示例提示:

  • “明天有什么节目?”
  • “显示周一至周三的课程”

get_my_bookings

只获取类 您已被个人预订.

参数:

  • start_date (可选):默认为今天
  • end_date (可选):默认为从今天起7天

示例提示:

  • “这周我订了什么课?”
  • “我接下来7天的日程安排是什么?”

get_programmes

列出健身房的所有可用训练计划。使用此功能可发现用于过滤WOD的程序ID。

参数: 无

示例提示:

  • “我的健身房提供什么课程?”
  • “显示可用的程序”

get_wod

获取 每日锻炼计划(WOD) 用于特定日期或日期范围。返回热身、所有练习(包括描述和测量单位)和冷却。

参数:

  • date (可选):日期 YYYY-MM-DD 格式。默认为今天。
  • end_date (可选):包括多日范围的结束日期。默认为 date.
  • programme_ids (可选):逗号分隔的程序ID(例如。 "195,196").回落到 OCTIV_PROGRAMME_IDS env var。如果两者都没有设置,该工具将返回可用程序的列表,并要求您选择一个。

示例提示:

  • “今天的WOD是什么?”
  • “显示本周的训练”
  • “星期四的WOD是什么?”

查找健身房的课程ID

当你第一次打电话 get_wod,如果没有配置任何程序,服务器将自动返回您健身房的可用程序列表——只需选择一个并重新询问。

您也可以致电 get_programmes 随时浏览列表:

“我的健身房提供什么课程?”

一旦你知道你想要的ID,你可以:

  • 通过 programme_ids 直接在您的提示中: “今天的CrossFit WOD是什么?(节目195)”
  • 或设置 OCTIV_PROGRAMME_IDS=195 在MCP配置中自动使用

备注

  • 服务器连接到 https://api.octivfitness.com
  • 身份验证令牌缓存在 ~/.octiv_mcp/token.json 有效期约为1年
  • 如果更改密码,请删除 ~/.octiv_mcp/token.json 强制重新登录
  • OCTIV_TENANT_ID 和 OCTIV_LOCATION_ID 首次使用时会从您的个人资料中自动检测到
  • 使用 get_programmes 查找健身房可用的课程ID

贡献

欢迎投稿!看 贡献.md 有关设置说明、代码风格指南以及如何提交pull请求。

许可证

麻省理工学院——见 许可证.

测试

安装测试依赖项(已包含在 requirements.txt):

uv sync --group dev

运行完整的测试套件:

uv run pytest tests/ -v

棉绒和格式:

uv run ruff check .
uv run ruff format .

类型检查:

uv run ty check .

测试使用 respx 模拟所有HTTP调用-不需要真正的API凭据。