advitrocks9/ethos-booker
MCP server for booking gym sessions at Imperial College Ethos. Runs on Cloudflare Workers.
Platform-specific configuration:
{
"mcpServers": {
"ethos-booker": {
"command": "npx",
"args": [
"-y",
"ethos-booker"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
MCP server for booking gym sessions at Imperial College's Ethos sports centre.
Runs on Cloudflare Workers as a remote MCP server. Connect it to Claude, Cursor, or any MCP client and book/cancel gym slots through natural language.
| Tool | What it does | |------|-------------| | login | Authenticate with your Ethos email and password | | list_sessions | Show available sessions for a date, filterable by location | | book_session | Book a free session by date, time, and location | | cancel_booking | Cancel a booking by date and optional time | | my_bookings | List your upcoming bookings | | search_sessions | Search across a date range with time/activity filters |
The server is already deployed. Add it as a remote MCP connector:
Claude.ai (web/desktop): Settings > Connectors > Add custom connector > paste:
https://ethos-booker.advitarora2.workers.dev/mcpLeave OAuth fields blank. The server is authless at the MCP layer; gym authentication happens via the login tool.
Claude Code:
claude mcp add ethos-booker --transport http https://ethos-booker.advitarora2.workers.dev/mcpCursor: Settings > Tools & MCP > Add > paste the URL above.
git clone https://github.com/advitarora/ethos-booker.git
cd ethos-booker
npm install
npx wrangler deployYou will need a Cloudflare account. The free tier is more than enough.
The Ethos booking system (Gladstone Leisure Hub) exposes a REST API behind an OIDC login. This server handles the full auth flow - navigating the redirect chain, extracting XSRF tokens, posting credentials, and pulling the access token from the OIDC form_post response.
Once authenticated, sessions are fetched from the timetable API and bookings go through the OneClick/Foc endpoint (free-of-charge one-click booking). If a stale basket blocks the OneClick path, the server automatically clears it and r
Loading reviews...