[Gymmy]
Gymmy MCP server
[Gymmy MCP on mcprush]
Official Model Context Protocol server for Gymmy: find gyms and studios, check schedules and prices, drop in on a class, join a gym, book with your membership, and start a free trial from any AI assistant.
Gymmy is the booking and management platform of independent gyms and studios in France and Europe (CrossFit, HYROX, fitness, yoga, pilates, boxing, martial arts, dance). Ask your assistant to find a gym near you, see its class schedule and prices, and get a trial class link. Connect your Gymmy account to see your bookings, book a class with your membership or cancel one, under your gym's own rules. Gyms not on Gymmy yet come from OpenStreetMap and are clearly marked as not bookable.
A drop-in (trial, single class, or class pack) or a membership is paid only on the Stripe Checkout page the assistant returns. No card data reaches the chat.
This is a hosted remote server: nothing to install or run. The same repository is also an Agent Plugin that Cursor installs from this root. The plugin name and the MCP server key are both gymmy.
[Add to Cursor]
Tools
Every tool has a title and readOnlyHint / destructiveHint annotations. Calling a member tool without signing in starts the OAuth sign-in.
book_dropin and join_gym do not charge on the first call. Payment happens only on the Stripe link returned after confirm: true. book_class and cancel_booking have no confirm argument; the assistant still asks you before it calls them.
Setup
Cursor
Agent Plugin (skill + MCP server). Cursor loads this repository from its root: plugin.json, mcp.json, and skills/gymmy/SKILL.md. In mcp.json the server key is gymmy (type: streamable-http).
- Marketplace: once the plugin is listed, install gymmy from Customize. Submit this repository at cursor.com/marketplace/publish.
- Team marketplace: Dashboard → Plugins & MCPs → Add Marketplace → Import from Repo →
https://github.com/zdeadex/gymmy-mcp, then install the gymmy plugin.
- Local: clone this repo into
~/.cursor/plugins/local/gymmy and reload Cursor (Developer: Reload Window). The folder name can be anything; the plugin name comes from plugin.json.
MCP server only (no skill). Click Add to Cursor above, or open cursor://anysphere.cursor-deeplink/mcp/install?name=gymmy&config=eyJ1cmwiOiJodHRwczovL2hlbGxvZ3ltbXkuY29tL2FwaS9tY3AifQ==, or add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
That snippet is what you paste into Cursor. mcp.json in this repository is the Agent Plugin manifest ($schema, type: streamable-http). Its only server key is gymmy.
Claude (claude.ai and Claude Desktop)
Settings > Connectors > Add custom connector, URL https://hellogymmy.com/api/mcp/member (sign-in at connect) or https://hellogymmy.com/api/mcp (public tools only).
Claude Code
ChatGPT
Settings > Apps > Advanced > enable Developer mode, then Create app with the URL https://hellogymmy.com/api/mcp and OAuth authentication.
The ChatGPT listing fields (extensions.com.openai in plugin.json, icons at assets/icon.png and assets/logo.png) live at the repository root with the rest of the plugin. chatgpt-plugin/ only points here.
VS Code
Or in .vscode/mcp.json:
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
Grok
- grok.com > Connectors > Add custom connector:
https://hellogymmy.com/api/mcp
- xAI API (remote MCP tool):
{"type":"mcp","server_url":"https://hellogymmy.com/api/mcp","server_label":"gymmy"}
- Grok CLI:
grok mcp add --transport http gymmy https://hellogymmy.com/api/mcp
Other clients
Any client supporting remote Streamable HTTP servers with OAuth works with https://hellogymmy.com/api/mcp. For stdio-only clients you can bridge with npx mcp-remote https://hellogymmy.com/api/mcp.
Example prompts
- "Find a CrossFit gym near Lyon."
- "What classes are on tomorrow at Box Agents?"
- "How much is a membership there, and can I try a class?"
- "Find a yoga class I can drop into near Bastille tomorrow."
- After connecting your Gymmy account: "What are my bookings?"
- "Book me into the next open class this week."
- "Cancel that booking."
- "I paid — did the booking go through?"
Auth and privacy
- Public tools (
search_gyms, get_gym, get_schedule, get_prices, start_trial, search_classes) use public gym data only and need no account.
book_dropin, join_gym, checkout_status, my_gyms, my_schedule, my_bookings, book_class, and cancel_booking need you to sign in with your Gymmy account (e-mail code) and approve access on Gymmy's consent page. Tokens are scoped to this server and can be revoked.
- Drop-in and join payments happen only on the Stripe Checkout page the tool returns (the gym's own account). No card data reaches the assistant.
book_class uses your membership and does not charge. Bookings follow your gym's own rules.
- Non-Gymmy gym listings come from OpenStreetMap (© OpenStreetMap contributors, ODbL 1.0).
- Privacy policy: https://hellogymmy.com/en/privacy · Terms: https://hellogymmy.com/en/terms
Files
plugin.json: Agent Plugin manifest (name gymmy), including the ChatGPT extensions.com.openai block
mcp.json: Agent Plugin MCP config. The only server key is gymmy (type: streamable-http, https://hellogymmy.com/api/mcp). The old root .mcp.json example was removed so Cursor, which reads .mcp.json before mcp.json, cannot install a different entry
skills/gymmy/SKILL.md: when to call each tool, the confirm step, and the Stripe-only payment rule
server.json: MCP Registry entry (com.hellogymmy/gymmy), unchanged
chatgpt-plugin/README.md: pointer to the root package (no second manifest)
Support
[email protected] · https://hellogymmy.com
License
MIT. Gymmy name and logo are trademarks of Gymmy.