fitness-mcp

fitness-mcp

A personal remote MCP server for fitness data that provides read-only tools to query Garmin Connect activities and Hevy workouts, enabling users to list, retrieve, and analyze exercise records through natural language.

Category
访问服务器

README

fitness-mcp

A personal, remote MCP server for fitness data:

  • Garmin Connect activity data via garminconnect
  • Hevy workout data via the Hevy API

Designed to run on a Raspberry Pi behind nginx at something like:

https://mcp.home.owenrumney.co.uk/mcp

Tools

Garmin

  • list_garmin_activities
  • list_garmin_activities_by_date
  • get_garmin_last_activity
  • get_garmin_activity
  • get_garmin_activity_details
  • get_garmin_activity_splits
  • get_garmin_activity_weather
  • get_garmin_activity_types

Hevy

  • list_hevy_workouts
  • get_hevy_workout
  • list_hevy_routines
  • list_hevy_routine_folders
  • list_hevy_exercise_templates

Local setup

Requires Python 3.12+.

uv sync
cp .env.example .env

Edit .env, then run the Garmin login helper once if your Garmin account needs MFA:

set -a
source .env
set +a
uv run fitness-mcp-garmin-login

Run the server locally over Streamable HTTP:

uv run fitness-mcp --transport streamable-http --host 0.0.0.0 --port 8000

Health check:

curl http://127.0.0.1:8000/health

MCP endpoint:

http://127.0.0.1:8000/mcp

If MCP_AUTH_TOKEN is set, callers must send:

Authorization: Bearer <MCP_AUTH_TOKEN>

Docker on Raspberry Pi

cp .env.example .env
mkdir -p data
# edit .env

docker compose build

docker compose run --rm fitness-mcp uv run fitness-mcp-garmin-login
docker compose up -d

The compose file publishes only to localhost:

127.0.0.1:8000 -> container:8000

Put nginx in front of it and proxy:

https://mcp.home.owenrumney.co.uk/mcp -> http://127.0.0.1:8000/mcp

See deploy/nginx.conf for an example site config.

Environment

MCP_AUTH_TOKEN=replace-with-a-long-random-value

GARMIN_EMAIL=you@example.com
GARMIN_PASSWORD=replace-me
GARMIN_TOKEN_STORE=/data/garmin

HEVY_API_KEY=replace-me
HEVY_BASE_URL=https://api.hevyapp.com/v1

Notes

  • Garmin Connect uses unofficial/private APIs through garminconnect, so MFA friction, rate limits, or upstream breakage are possible.
  • The server currently exposes read-only tools only.
  • If ChatGPT's MCP connector requires OAuth rather than bearer auth, this server will need an OAuth wrapper in front of the same /mcp backend.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选