GymCam Analytics
This server provides AI agents with GymCam analytics tools to query a gym's attendance, trainer, class, and revenue data.
get_today_summary: Get a daily summary of classes held, total attendance, and top classes (optional gym_id).
get_trainer_attendance: View a trainer's attendance fill rate and no-shows over a day or week.
get_class_performance: Rank classes by fill rate to spot popular vs. dead classes (optional limit).
get_revenue_insights: Identify most profitable and least profitable classes by revenue.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GymCam Analyticswhat's today's attendance summary?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GymCam Analytics
GymCam turns the cameras a gym already has into automatic attendance and trainer-performance analytics — no new hardware, no check-ins.

Feed it the existing CCTV stream and the class schedule; it recognizes trainers, counts attendees per class, and reports what's actually happening: which classes are full, which are dead, and which trainers fill the room.
Why
Gym owners run on gut feeling. Booking software (Mindbody, Glofox) only captures check-ins — and people skip check-ins, so the data is incomplete. Hardware people-counters (Density, V-Count) cost thousands and count bodies without context.
GymCam reuses what's already in the building and maps counts to classes and trainers — the thing that actually drives revenue.
Related MCP server: Pierre Fitness Platform MCP Server
What it reports
Today's summary — classes held, total attendance, top classes
Trainer attendance — daily/weekly fill rate and no-show rate per trainer
Class performance — every class ranked by fill rate, so dead classes are obvious
Revenue insights — most profitable vs. least profitable classes
What you actually get
Zero install — cameras already do the counting (security cameras are required in nearly every country). No sensors, no mounting, no new hardware.
No check-in friction — stop making members do a meaningless task; people just show up.
Class truth — which classes are full and which are dead, not the paper log anyone can fudge.
Trainer accountability — real fill rate + no-shows per trainer; the "16 becomes 20" rounding dies.
Occupancy & density — overfull classes and cramped rooms are a pricing / scaling / staffing signal.
Room optimization — see the big room idle while classes squeeze into the small one; swap and fix.
Equipment utilization — which machines are actually used; sell, buy, or rearrange.
Density heatmaps — attraction points and dead zones; change the layout with data.
Demographics — gender + approximate age breakdown (within GDPR / local law).
Digital twin — treat the gym as a measurable 3D space; a live model of what's working and what to cut.
AI-native — an MCP server, so your AI agent reads the data and answers "how's my gym doing today."
Install
One command, straight from this repo (requires uv):
uvx --from git+https://github.com/axelfreeman/gymcamanalytics gymcamPeek at the tool output without wiring MCP:
uv run scripts/demo.pySkill (optional)
SKILL.md documents the GymCam tools for any agent that loads skills. Install with a symlink so git pull keeps it fresh:
ln -s "$PWD" ~/.agents/skills/gymcam-analyticsConnect to your AI agent
Same command, different config file per client.
Claude Desktop (claude_desktop_config.json):
{"mcpServers": {"gymcam": {"command": "uvx", "args": ["--from", "git+https://github.com/axelfreeman/gymcamanalytics", "gymcam"]}}}Codex (~/.codex/config.toml):
[mcp_servers.gymcam]
command = "uvx"
args = ["--from", "git+https://github.com/axelfreeman/gymcamanalytics", "gymcam"]Cursor (.cursor/mcp.json) and Windsurf (~/.codeium/windsurf/mcp_config.json) use the same JSON block as Claude Desktop.
Claude Code:
claude mcp add gymcam -- uvx --from git+https://github.com/axelfreeman/gymcamanalytics gymcamAPI key
Tools require an API key. Get one free at https://gymcamanalytics.com/get-key (100 free lookups, no credit card), then set it:
export GYMCAM_API_KEY=your_key_hereTools
Tool | What it returns |
| Classes held, total attendance, top classes |
| Fill rate + no-shows for a trainer (day/week) |
| Classes ranked by fill rate |
| Most profitable vs. dead classes |
Status
Pre-launch. The MCP server and tool schema are live; tools return sample data until your gym's cameras are connected. Sign up for access.
License
MIT © 2026 Axel Freeman
Available Tools
4 toolsget_class_performanceB
Rank classes by fill rate: popular vs. dead classes to cut.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided (e.g., readOnlyHint, destructiveHint), so the description carries the full burden of disclosing behavioral traits. The description only says 'Rank classes by fill rate' but does not disclose whether this is a read-only operation, whether it performs any calculations or aggregation, or whether any side effects exist. For a read-only reporting tool, even a phrase like 'Returns a list' would help, but it is missing. The description does not contradict any annotations (since none exist), but it fails to convey expected behavior beyond the high-level result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, highly concise, and immediately communicates the core purpose. It is front-loaded with the action 'Rank classes' and provides a practical implication ('popular vs. dead classes to cut'). No unnecessary words or repetition. It is appropriately sized for its simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the main intent well. However, it lacks details about the return type (e.g., does it return a list with fill rates?), how 'limit' affects results, and whether it includes only active classes or all classes. Since there is no output schema, the description should provide some indication of what the tool returns. The description is adequate for a simple read-only tool but is not comprehensive for an agent that might need to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter, 'limit', which has a default and no description. Schema description coverage is 0%, but with only one parameter, the description's mention of 'Rank classes' implies that 'limit' likely controls the number of classes returned. However, the description does not explicitly explain the 'limit' parameter, so an agent might not know if it controls the number of classes or something else. While the single parameter is self-explanatory to a human, the description adds no specific explanation, so the agent must infer from the schema's default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to rank classes by fill rate, identifying popular and dead classes for potential cutting. The verb 'Rank' and resource 'classes' are specific, and the purpose is distinct from siblings like 'get_today_summary' (which likely provides a summary) and 'get_revenue_insights' (which focuses on revenue). However, it does not explicitly mention the return format or the scope of data (e.g., current vs. historical), so it is not perfect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for planning class cuts or evaluating class performance, but it does not explicitly state when to use this tool versus alternatives. For example, it does not say 'Use this when you need to identify underperforming classes' or 'Instead of get_revenue_insights, use this for class-level fill rates.' The guidance is minimal and relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_revenue_insightsA
Most profitable vs. least profitable classes by revenue.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, this description carries the full disclosure burden. It implies a read-only query but doesn't explicitly state side effects, data scope, or output behavior, offering only a minimal observation about profitability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, each word adds value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description adequately conveys its purpose. While it could mention performance limits or return format, these are likely implied by the simplicity. It's complete enough for an agent to infer usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters mean the schema already fully describes them (empty). The description adds value by implying the tool returns a comparison, but no parameter docs are needed since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('most profitable vs. least profitable classes') and the resource ('classes by revenue'). It distinguishes from sibling tools like get_cluster_metrics or get_classification_metrics by focusing on profitability analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, frequency, or any context for selection, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_today_summaryB
Daily attendance summary: classes held, total attendance, top classes.
| Name | Required | Description | Default |
|---|---|---|---|
| gym_id | No | demo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It describes what data is returned (classes held, total attendance, top classes) but does not mention any side effects, auth requirements, or limitations beyond the summary nature. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, straightforward sentence that immediately states the tool's purpose and output content. There is no superfluous text or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the core output but lacks details on parameter usage and potential edge cases. It gives the essential summary items but does not fully flesh out behavior, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain the gym_id parameter. It does not mention the parameter at all, leaving the optional gym_id with default 'demo' unexplained. The agent cannot infer how gym_id affects the summary from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a daily attendance summary, specifically listing what it includes: classes held, total attendance, and top classes. It distinguishes from sibling tools like trainer attendance, class performance, and revenue insights by focusing on the overall attendance dashboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention exclusions or specific contexts, leaving the agent to infer that it is for daily overviews. Without explicit comparison to siblings, usage guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trainer_attendanceC
Attendance and fill-rate for a trainer over 'day' or 'week'.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | week | |
| trainer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full behavioral disclosure responsibility. It only states the output (attendance and fill-rate) and allowed periods, but does not mention whether the tool is read-only, requires specific permissions, or what the response format looks like. No side effects or caveats are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that delivers the core purpose and period scope immediately. There is no wasted wording. It is appropriately front-loaded, though its brevity sacrifices detail that might be necessary for full comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two simple parameters and no output schema, the description could be expected to explain the meaning of 'fill-rate' and how to specify a trainer, which it does not. The tool might return aggregated data, but no information is provided about the nature of the output or any default behavior beyond 'week' in the schema. Overall, the description is minimal and leaves important questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'period' accepts 'day' or 'week', which adds value beyond the schema's default. However, it does not explain what 'trainer' expects (e.g., ID, name), nor does it elaborate on any other constraints. The parameter semantics are only partially addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns attendance and fill-rate for a trainer, and specifies that the period is either 'day' or 'week'. This is specific enough to distinguish it from siblings like get_class_performance or get_revenue_insights, though it lacks an explicit verb like 'retrieve'. The purpose is unambiguous and not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling tools. The description only mentions the period options ('day' or 'week') without context on which scenario warrants this tool. There are no exclusions or alternative tool references, so an agent might struggle to decide when this is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.1.0- First observed
get_class_performance - First observed
get_revenue_insights - First observed
get_today_summary - First observed
get_trainer_attendance
TDQS
Scored across 4 tools
Each tool targets a distinct analytics dimension: daily summary, trainer-specific metrics, class performance, and revenue. No two tools overlap in purpose or output, so an agent can clearly select the right tool for a given request.
All tools follow a uniform 'get_<noun>_<noun>' pattern (e.g., get_today_summary, get_trainer_attendance). The naming is consistent, descriptive, and predictable, making it easy to infer tool purpose from the name alone.
With only 4 tools, the server is tightly scoped to core gym analytics. Each tool provides a distinct slice of the domain without redundancy, and the count is appropriate for a focused analytics service.
The toolset covers the primary analytics needs: overall summary, trainer performance, class performance, and revenue. Minor gaps exist (e.g., no member-specific analytics or custom date-range queries), but the current surface handles common use cases well.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Track, analyze, and act on your streaming and SaaS subscriptions from any AI agent.
Real-time web analytics for AI agents: query traffic, funnels, revenue, and manage your sites.
Privacy-first web analytics for AI agents: visitors, revenue, funnels, visitor profiles.
Verified, sourced, real-time intelligence layer for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive AI-powered fitness tracking application that enables AI tools to interact intelligently with user fitness data, providing personalized workout plans, nutrition tracking, and progress analysis through natural language.15MIT
- FlicenseNot gradedqualityNot gradedmaintenanceConnects AI assistants to fitness data from over 150 wearables including Strava, Garmin, and Fitbit through the Model Context Protocol. It provides 47 tools for sports science-based analysis, training load management, recovery tracking, and personalized nutrition planning.16-
- AlicenseAqualityBmaintenanceConnects 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.19185MIT

Kordi MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceTrack, analyze, and act on your streaming & SaaS subscriptions from any AI agent.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/axelfreeman/gymcamanalytics'
If you have feedback or need assistance with the MCP directory API, please join our Discord server