npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

aimharder-mcp

v0.5.0

Published

Local AimHarder MCP server for queries and confirmed account actions

Readme

aimharder-mcp

Ask about your AimHarder classes, workouts, bookings, activity and personal RMs from an AI client. This local MCP server also supports confirmed manual booking actions and publication and deletion of your own activity. This is an independent project, neither affiliated with nor endorsed by AimHarder.

Data limits: Live checks used one account at one location (9NBC). Other gyms may differ, and an empty result from an incomplete view does not prove absence. Activity audience, deletion permanence and RM effects remain unverified. See coverage and interpretation and validation evidence.

Get started

  1. Install Node.js 24 or newer.

  2. Supply AIMHARDER_USERNAME and AIMHARDER_PASSWORD to the server process through your client or a secrets manager. Keep them out of shared configuration. The server assumes Europe/Madrid unless you configure your gym's time zone.

  3. Add a local stdio server to your client. This generic JSON example assumes the client passes the required environment variables:

    {
      "mcpServers": {
        "aimharder": {
          "command": "npx",
          "args": ["--yes", "[email protected]"]
        }
      }
    }
  4. Ask your client an AimHarder question, such as “What is tomorrow's WOD?” The first valid tool call signs in. See the guide for your client below for its configuration format and credential options.

Desktop and CLI clients

Hermes and Codex CLI have called the account tool through the published package. The ChatGPT desktop STDIO form has been observed; package connections in ChatGPT desktop, Claude Desktop and OpenClaw have not been verified. Mobile apps are outside the current setup guides.

Tools

Each write requires a separate confirmation of the exact preview and a user-confirmed gym time zone. The server checks the current account state after each attempted write and never automatically retries an uncertain write.

| Tool | Example question | | --- | --- | | get_account_context | Which gyms can I query? | | get_class_sessions | What classes are available this week? | | prepare_booking_creation | Preview booking this exact class without reserving it. | | execute_booking_creation | Book the exact preview after one explicit account-holder confirmation. | | prepare_booking_cancellation | Preview cancelling one existing booking without changing it. | | execute_booking_cancellation | Cancel the exact preview after explicit account-holder confirmation. | | execute_late_booking_cancellation | After a warning, attempt late cancellation only with separate confirmation of possible credit loss. | | get_published_workouts | What is tomorrow's WOD? | | get_exercise_1rm | What is my latest 1RM for this source exercise ID? | | find_exercise_1rm | Which exercise by this name has my latest 1RM? | | get_exercise_rm_progression | How have my RMs for this source exercise progressed? | | get_upcoming_bookings | When am I booked? | | get_booking_history | Which past bookings are available? | | get_personal_activity | What activity did I record this month? | | prepare_activity_publication | Preview publishing results from this verified gym workout. | | execute_activity_publication | Publish that exact preview after separate confirmation and check the own read-back. | | prepare_activity_deletion | Preview deleting this exact own activity entry. | | execute_activity_deletion | Delete that exact entry after separate confirmation and report fresh account observations. |

Clients can combine tools for questions about workouts and bookings, or count recent activity entries. An activity entry does not establish attendance or one distinct training session. See tool inputs and coverage.

Personal RM queries show the latest dated record and progression separately. Eligible %RM prescriptions for today or later can include calculated loads while preserving the original workout instructions. Search and history coverage are limited; see tool details.

Activity publication starts from a verified gym workout and supports structured block results and manually confirmed actual kilogram loads. EMOM results require completed rounds; AMRAP results can include complete rounds and additional repetitions. Review the selected variant, results, loads and audience settings in the preview before confirming. See publication inputs.

Roadmap

Planned capabilities, without committed dates or versions:

  • [ ] Expand compatibility to more AimHarder gyms.
  • [ ] Explore compatibility with mobile apps.

Contributing

The server runs locally over stdio with one account per instance and no persistent storage. The TypeScript API client is separate from the MCP layer; see the architecture decision.

Report bugs or propose changes in GitHub Issues. Keep credentials and private activity out of reports. See the development guide to contribute code.

License

MIT.