JCC预订管理MCP服务器

My J MCP Server 是一个为大波士顿JCC(Leventhal-Sidman JCC)移动应用打造的MCP服务器,通过逆向uPace平台API提供24个工具,用于课程与活动预约、设备预订、个人训练及游泳篮球课程预约、候补名单管理和家庭成员预订管理。

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

使用说明

My J MCP Server

MCP server for the JCC of Greater Boston (Leventhal-Sidman JCC) mobile app, built by reverse-engineering the uPace platform API from the Android APK (com.upace.erjcc).

Features

24 tools covering everything available in the mobile app:

Classes & Events — list, reserve, cancel, favorite, search Equipment — babysitting (JCare), private offices, pickleball courts Appointments — personal training, basketball lessons, swimming lessons Waitlist — view position, join, leave Reservations — view your own + family member reservations Info — facility details, alerts, other programs, video content, feedback

For JCC Greater Boston, JCare Babysitting is included with an active family membership; there is no separate babysitting fee. list_equipment returns this as a JCare-specific pricing_note. Other bookable items have pricing_note: null when pricing is unknown; the MCP does not infer that they are free. A reservation is still needed to secure a babysitting slot.

Install & Run

From GitHub (recommended)

uvx --from git+https://github.com/aserper/myj-mcp.git myj-mcp

Local development

git clone https://github.com/aserper/myj-mcp.git
cd myj-mcp
uv venv && uv pip install -e .
python -m myj_mcp

Docker

docker run --rm -e UPACE_EMAIL="you@email.com" -e UPACE_PASSWORD="pass" \
  ghcr.io/aserper/myj-mcp:latest

Configuration

Set credentials via environment variables:

export UPACE_EMAIL="your@email.com"
export UPACE_PASSWORD="yourpassword"

Claude Code

{
  "mcpServers": {
    "myj": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/aserper/myj-mcp.git", "myj-mcp"],
      "env": {
        "UPACE_EMAIL": "your@email.com",
        "UPACE_PASSWORD": "yourpassword"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "myj": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "ghcr.io/aserper/myj-mcp:latest"],
      "env": {
        "UPACE_EMAIL": "your@email.com",
        "UPACE_PASSWORD": "yourpassword"
      }
    }
  }
}

Tools

Tool Description
login Authenticate with email/password
list_classes List classes by date (default: today)
list_events List events by date
reserve_class Book a class or event
cancel_reservation Cancel a reservation or leave waitlist
my_reservations View current reservations
family_reservations View family member reservations
list_equipment List bookable equipment (babysitting, offices)
reserve_equipment Book equipment with time slot + duration
list_pt_sessions List appointment/PT session types
get_session_times Get available times for a session
book_session Book a PT/appointment session
get_waitlist View waitlisted classes
delete_waitlist Leave a waitlist
toggle_favorite Add/remove class from favorites
search Search classes, equipment, programs
alerts View notifications
mark_alert_read Mark alert as read
facility_info JCC facility information
user_info User profile info
other_programs Other programs and custom links
video_categories Video content categories
video_listings Video listings by category
submit_feedback Rate a class/event/equipment (1-5)

Testing

uv pip install pytest
pytest tests/ -v

API

Two API versions discovered in the APK:

  • V1 https://www.upaceapp.com/Api — form-encoded, auth via api_key + uid + user_id
  • V2 https://upace.app/api — Bearer JWT tokens

See api-discovery.md for full endpoint documentation.

Project Structure

src/myj_mcp/
├── __init__.py
├── __main__.py   # Entry point
├── client.py     # UpaceClient — HTTP client with auth
├── models.py     # Pydantic models
└── server.py     # FastMCP server (24 tools)