Skip to main content
Glama

af-unofficial-mcp-server

An unofficial MCP server for Anytime Fitness. Ask your assistant how busy the gym is, when it will be quieter, which nearby clubs are less crowded, or how often you have visited.

It uses the same private API as version 4.5.0 of the Anytime Fitness app. The API may change without warning. This project is not affiliated with Anytime Fitness.

Tools

Tool

What it returns

occupancy

Live headcount, how it compares with the usual crowd, and a go-now verdict

forecast

Typical hourly attendance for a chosen day

nearby_clubs

Nearby clubs, distance, opening status, and live headcount

visits

Visit history and common visit times

auth_status

Login status without exposing tokens

Attendance comparisons use the club's 100-day hourly averages. The server finds the home club and its timezone from your account.

Related MCP server: Iridium MCP Server

Setup

You need Python 3.11 or later, uv, and an MCP-compatible client.

git clone https://github.com/Sajush00/af-unofficial-mcp-server.git
cd af-unofficial-mcp-server
uv sync
uv run af-gym login --phone +61400000000

The login command sends an SMS code to the phone number registered with your Anytime Fitness account and prompts you to enter it.

Claude Desktop

Add this to claude_desktop_config.json:

{
  "mcpServers": {
    "af-gym": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/af-unofficial-mcp-server", "af-mcp"]
    }
  }
}

Claude Code

claude mcp add af-gym -- uv run --directory /absolute/path/to/af-unofficial-mcp-server af-mcp

Hermes Agent

Add this to ~/.hermes/config.yaml:

mcp_servers:
  af-gym:
    command: uv
    args: ["run", "--directory", "/absolute/path/to/af-unofficial-mcp-server", "af-mcp"]

Then ask your assistant: "How busy is the gym right now?"

Authentication and privacy

uv run af-gym status
uv run af-gym logout

Tokens are stored in ~/.af_token.json. Pending login details use ~/.af_session.json. Both files are private to your user account, and the CLI and MCP tools never print their contents.

Set AF_CLUB_TZ to an IANA timezone such as Australia/Sydney if you need to override automatic timezone detection.

Development

make check

This runs Ruff, mypy, project-specific static checks, and the offline test suite. Implementation notes are in docs/adr.

License

MIT © 2026 Sajush Arukat

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    Not graded
    maintenance
    Enables analysis and retrieval of JEFit workout data through natural language. Provides access to workout dates, detailed exercise information, and batch workout analysis for fitness tracking and progress monitoring.
    336
    3
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Connects AI agents to Iridium fitness data to query workout history, nutrition logs, and body measurements. It enables users to track exercise progress, training volume, and personalized trainer analysis through natural language.
    19
    25 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Access your Hevy workout data through natural language. Query workout history, exercise details, routines, and track progress.
    -