Smartsheet MCP Server
OFFICIAL SERVERSmartsheet's own hosted server for working with sheets, rows, reports, dashboards and workflows
Read, analyse and log workouts, routines and body measurements in the Hevy fitness app
By Christoph Kieslich (individual) TypeScript Remote (hosted) · Streamable HTTPLocal · stdio Data and analyticsProductivity
62 popularity score ★ 533 ↓ 2.5k/wk
Opens the app, which asks before it adds the server.
https://mcp.hevy-mcp.dev/mcpcodex mcp add hevy \
--url https://mcp.hevy-mcp.dev/mcp \
--bearer-token-env-var HEVY_API_KEYOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs HEVY_API_KEY. Replace each <NAME> with your value.
claude mcp add hevy -e HEVY_API_KEY=<HEVY_API_KEY> -- npx -y hevy-mcp{
"mcpServers": {
"hevy": {
"command": "npx",
"args": [
"-y",
"hevy-mcp"
],
"env": {
"HEVY_API_KEY": "<HEVY_API_KEY>"
}
}
}
}{
"mcpServers": {
"hevy": {
"command": "npx",
"args": [
"-y",
"hevy-mcp"
],
"env": {
"HEVY_API_KEY": "<HEVY_API_KEY>"
}
}
}
}{
"servers": {
"hevy": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"hevy-mcp"
],
"env": {
"HEVY_API_KEY": "<HEVY_API_KEY>"
}
}
}
}[mcp_servers.hevy]
command = "npx"
args = ["-y", "hevy-mcp"]
[mcp_servers.hevy.env]
HEVY_API_KEY = "<HEVY_API_KEY>"gemini mcp add --scope user -e HEVY_API_KEY=<HEVY_API_KEY> hevy npx -- -y hevy-mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs HEVY_API_KEY. Replace each <NAME> with your value.
claude mcp add hevy -e HEVY_API_KEY=<HEVY_API_KEY> -- docker run -i --rm -e HEVY_API_KEY ghcr.io/chrisdoc/hevy-mcp:latest{
"mcpServers": {
"hevy": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"HEVY_API_KEY",
"ghcr.io/chrisdoc/hevy-mcp:latest"
],
"env": {
"HEVY_API_KEY": "<HEVY_API_KEY>"
}
}
}
}{
"mcpServers": {
"hevy": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"HEVY_API_KEY",
"ghcr.io/chrisdoc/hevy-mcp:latest"
],
"env": {
"HEVY_API_KEY": "<HEVY_API_KEY>"
}
}
}
}{
"servers": {
"hevy": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"HEVY_API_KEY",
"ghcr.io/chrisdoc/hevy-mcp:latest"
],
"env": {
"HEVY_API_KEY": "<HEVY_API_KEY>"
}
}
}
}[mcp_servers.hevy]
command = "docker"
args = ["run", "-i", "--rm", "-e", "HEVY_API_KEY", "ghcr.io/chrisdoc/hevy-mcp:latest"]
[mcp_servers.hevy.env]
HEVY_API_KEY = "<HEVY_API_KEY>"gemini mcp add --scope user -e HEVY_API_KEY=<HEVY_API_KEY> hevy docker -- run -i --rm -e HEVY_API_KEY ghcr.io/chrisdoc/hevy-mcp:latestHEVY_API_KEY |
Required: Hevy API key from Hevy's developer settings (needs Hevy PRO). |
|---|---|
HEVY_MCP_TELEMETRY |
Optional: Set to 0 to turn off telemetry, which published builds send by default. |
HEVY_MCP_TELEMETRY_DIAGNOSTICS |
Optional: Set to 0 to keep telemetry but drop exception messages and stacks. |
HEVY_MCP_API_TIMEOUT |
Optional: Hevy API timeout in milliseconds; 60000 by default. |
HEVY_MCP_DEBUG |
Optional: Set to 1 for diagnostics on stderr. |
HEVY_MCP_HTTP_BEARER_TOKEN |
Optional: Separate token required when local HTTP mode binds to a non-loopback host. |
SENTRY_DSN |
Optional: Overrides the packaged Sentry project; an empty value turns off Sentry export. |
In a container, a setting goes in with -e NAME=value after docker run.
hevy-mcp connects an MCP client to a Hevy account through Hevy's public API. Its 23 tools list and fetch workouts, routines, routine folders, exercise templates, past sets for one exercise and dated body measurements. It can also create and update most of these. One tool, get-training-summary, gathers 1 to 12 weeks of workouts and measurement trends in a single call. Two built-in prompts walk through a progress review and logging a finished workout from a saved routine. Four read-only resources expose the user profile, the workout count, the full exercise catalogue and the folder list.
There are three ways to run it. The npm package (or its Docker image) runs on your own machine over stdio, or over local Streamable HTTP with --transport http. The maintainer also runs a hosted Cloudflare Worker at https://mcp.hevy-mcp.dev/mcp. It accepts the Hevy key as a bearer header, or through an OAuth flow for clients such as Claude.ai custom connectors, where the key is pasted once and kept encrypted in the grant.
The tool list also includes feedback. Its description at version 6.1.22 says it sends a free-text report, up to 2,000 characters, to the maintainers through the project's diagnostic telemetry (packages/core/src/feedback-metadata.ts).
| To run it yourself | Node.js 20+orDocker |
|---|
A Hevy API key, created in Hevy's developer settings. Hevy only gives API access with a paid Hevy PRO subscription. Running locally with npx needs Node.js 20 or newer; the bunx form needs Bun; the Docker image needs Docker and is built for linux/amd64 and linux/arm64. The hosted endpoint needs nothing installed, but the client must speak Streamable HTTP and either send a fixed Authorization header or support OAuth.
There are no delete tools, because the Hevy API has no delete endpoints for workouts, routines, folders, templates or measurements. Retrying a create call can make duplicates. update-routine replaces the whole routine, and replace-workout-exercises replaces every exercise and set in a workout. get-workouts returns workouts in the order the API gives them, not by start time. The exercise catalogue is cached in memory for five minutes unless search-exercise-templates is called with refresh: true. The hosted endpoint offers no legacy SSE transport and no GET event stream.
Hevy PRO users who want an assistant to review their training history or to log workouts and plan routines from a chat. If you would rather not install anything, use the hosted endpoint. Your key then passes through the maintainer's Cloudflare Worker on every request, so if you want it to stay on your own machine, run the npm package or Docker image instead. This is a community project, not one published by Hevy. Without a PRO subscription there is no API key, so it cannot be used at all. Writes are limited to create and update; nothing can be deleted through it.
get-training-summaryget-workoutsget-workoutget-workout-eventscreate-workoutupdate-workoutreplace-workout-exercisessearch-routinesget-routinesget-routinecreate-routineupdate-routineget-routine-foldercreate-routine-folderget-exercise-templatesearch-exercise-templatescreate-exercise-templateget-exercise-historyget-body-measurementsget-body-measurementcreate-body-measurementupdate-body-measurementfeedback