Skip to main content

tupase-mcp

English | Español

Search, book and cancel classes on Tupase by talking to Claude, Cursor or any MCP client. Tupase is a fitness and sports membership app used in Uruguay.

Unofficial client. This project has no relationship with Tupase and does not have its approval. It uses the app's private API with your own account and at your own risk: Tupase could change the API or restrict access at any time.

It runs on your computer and talks directly to Tupase. There is no intermediate server, and nobody else sees your data.

What you can ask

Demo: searching pilates classes in Pocitos and booking one

Real search on Tupase (the demo is in Spanish). The booking stays as a preview until you confirm, so nothing was booked in this demo.

Other things that work:

  • "What are my bookings this week? Show me the QR code of the first one."
  • "Save Zona Fit as a favorite and search only in my favorites."
  • "What is my routine? Tell me which dates I can book for my usual classes."
  • "Which neighborhoods have activities this week?"
  • "Cancel my booking for tomorrow."

Installation

You need uv.

1. Log in once. It asks for the email and password of your Tupase account. The password is not stored: only a renewal token is kept in your system keychain.

uvx tupase-mcp login

2. Add the server to your client.

Claude Code:

claude mcp add tupase -- uvx tupase-mcp

Claude Desktop (claude_desktop_config.json) and Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "tupase": { "command": "uvx", "args": ["tupase-mcp"] }
  }
}

Restart the client and ask something, for example "who am I on Tupase?", to check that the session works.

To log out: uvx tupase-mcp logout.

Linux without a desktop (servers, WSL, Docker): there is no system keychain available. Install a Secret Service backend (for example gnome-keyring) or the keyrings.alt package before logging in. Otherwise, login will tell you that the keychain could not be used.

Tools

Tool What it does
buscar_actividades Search by date and time, discipline, neighborhood, place, distance or favorites only. Maximum 7 days and 50 results per query
listar_disciplinas Disciplines available in a date range
listar_barrios Neighborhoods with activities in a date range
ver_lugar One place with all its activities for the next 7 days
mis_reservas Your bookings, with the real status (it checks your notifications)
reservar Books an activity
cancelar_reserva Cancels a booking by its code
ver_qr_reserva Returns the code and the QR of a booking as an image
mi_rutina Detects your usual classes (same place, day and time, at least 2 times) and lists their next bookable dates
agregar_favorito, quitar_favorito, mis_favoritos Favorite places, stored on your computer
quien_soy Your profile and the account status
editar_perfil Updates your profile data
mis_notificaciones Your notifications
mis_medios_de_pago Your registered payment method (read only; Tupase may answer with an error depending on the account)

The tool names and the messages returned by the server are in Spanish, because that is the language of Tupase. Your assistant will translate them for you.

Safety

reservar, cancelar_reserva and editar_perfil change data in your account, so they have an extra step: without confirmar=true they only return a preview, and Claude must show it to you and wait for your confirmation before repeating the call.

  • The "destructive" mark of a tool is only a hint: each MCP client decides if it asks for confirmation, and if you chose "always allow" for those tools, they run without asking. Do not choose "always allow" for those three tools.
  • Tupase results include text from third parties (place names, notifications) that could contain hidden instructions for the model. The confirmar step reduces that risk, but it does not remove it: check what Claude shows you before you confirm.

Notes

  • Peak hours: Tupase returns at most 499 results per query. To give you everything, the server splits the search by time ranges and by discipline. A full hour at a busy time can take about 20 seconds. Filtering by discipline, neighborhood or place makes it instant.
  • Booking status: some bookings stay as "pending confirmation" until the place confirms them. mis_reservas shows them as confirmed when Tupase notifies you that you got the spot.
  • Time zone: all dates are read and shown in Montevideo time.
  • If something fails: the server writes diagnostic messages to the log of the MCP client (stderr), never your credentials.

Privacy

  • The renewal token is stored in the system keychain (Keychain, Credential Manager or Secret Service). Your password is never stored.
  • Favorites are stored in a local file in your user data directory.
  • Nothing is sent to third parties: the only traffic is between your computer, Auth0 (the Tupase login) and the Tupase API.

Development

uv sync
uv run pytest
uv run ruff check --fix . && uv run ruff format .

The tests do not use the network or your keychain. To try the tools by hand: npx @modelcontextprotocol/inspector uv run tupase-mcp. The endpoints used by the client are described in docs/api.md (in Spanish).

License

MIT

Metadata

Release files for tupase-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tupase-mcp 0.1.1
File Size Uploaded
tupase_mcp-0.1.1.tar.gz 235.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tupase-mcp 0.1.1
File Interpreter ABI Platform
tupase_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 260.2 kB

Release files / tupase_mcp-0.1.1.tar.gz

Download URL tupase_mcp-0.1.1.tar.gz
Size 235.2 kB
Tags Source
SHA-256 checksum
How to use checksums
482e02178eb9585ebdc05d13c0ab27e9f6afff54dbdac11e91631455084092c4
BLAKE2b-256 checksum
How to use checksums
43f92ccf4fb6084e81672e7e49b44e273ec25b94d264b946206752da46c218ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / tupase_mcp-0.1.1-py3-none-any.whl

Download URL tupase_mcp-0.1.1-py3-none-any.whl
Size 25.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c15662b89bb348b80e0d688298406e7c733b2481a286ae6253b3e5ca8caa2e22
BLAKE2b-256 checksum
How to use checksums
5f90d9b48e87ac9baafc2a84bfb835fbe409022b6f9526aeb7a7bbd5b74fcc72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page