Command Palette

Search for a command to run...

Home / Servers

weight-mcp

by CommanderTvis

weight-mcp

A personal calorie & protein counter delivered as an MCP server for use inside claude.ai. You log meals from photos or text in a normal Claude chat; this server counts them, tracks weight, and renders an interactive dashboard (weight graph + recently eaten) right in the conversation.

Self-hosted, multi-user: one admin account lives in .env, and the admin registers further accounts from chat — each user sees only their own data. See SPEC.md for the rationale.

How it works

  • MCP server (Streamable HTTP) exposes tools, a prompt, and an MCP Apps dashboard UI to claude.ai.
  • In-process OAuth gate: claude.ai drives the full OAuth 2.1 + PKCE + Dynamic Client Registration flow; the only human step is a username + password form. The admin signs in as admin with the password from .env; everyone else signs in with an account the admin registered.
  • SQLite stores accounts, weights, and food logs — one file under data/. Every data row is scoped to the account that logged it.

Tools

ToolWhat it does
log_foodRecord an eaten item (kcal, protein, …), numbered per day; re-logging a meal number overwrites it (edits).
delete_foodRemove one of today's meals by its number.
record_weightStore a body-weight measurement.
lookup_nutritionQuery public nutrition databases (Open Food Facts, optional USDA).
daily_progressToday's intake vs. your goal.
intake_historyPer-day totals and averages over a window of days ("calories last week", monthly trends).
set_goalsChange the daily calorie/protein targets and floor/ceiling mode; optionally set a fiber norm (off by default, fiber_target_g=0 removes it).
show_dashboardRenders the dashboard inline as an MCP Apps panel (weight graph + recent meals + today's progress).
send_daily_reportSends the day's meals, totals, and latest weight to your accountability partner on Telegram. Only present when the Telegram env vars are set.

All of the above operate on the calling account's own data. The admin account additionally gets user management:

Tool (admin only)What it does
register_userCreate a non-admin account (username + password, stored hashed in the DB).
deregister_userRemove an account and revoke its tokens (its logged data is kept).
update_user_passwordSet a new password for an account, invalidating its existing tokens.

Configure

Copy .env.example to .env and set at least WEIGHT_MCP_PASSWORD (the admin account's password — the only account configured in .env) and WEIGHT_MCP_PUBLIC_BASE_URL. Non-admin accounts are not env config: the admin creates them from chat with register_user. Nutrition sources default to Open Food Facts, filtered to Germany; set WEIGHT_MCP_* to change region or enable USDA.

Goals are not env config — set them from chat with set_goals (they persist in the database). Two modes: floor (eat at least the target — the default, for under-eaters) and ceiling (stay under — for weight loss). Until you set your own, the default is 2600 kcal / 150 g protein, floor. Goals are per account, like all other data.

Accountability reporting is optional: set WEIGHT_MCP_TELEGRAM_BOT_TOKEN (a bot from @BotFather) and WEIGHT_MCP_TELEGRAM_CHAT_ID (your partner's chat — a human, group, or channel; numeric ID or @channelusername) to enable send_daily_report. The bot must be able to message that chat: the partner has to start the bot once (humans), or the bot must be a member/admin (groups/channels).

Run

Local (dev):

uv sync
cp .env.example .env   # then edit
uv run weight-mcp

Docker (local build):

docker compose up --build

For a real deployment you need public HTTPS (claude.ai connects from Anthropic's cloud, not your device). Copy docker-compose.template.yml, put the server behind a TLS reverse

Related servers

n8n

Updated today

by n8n-io

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

NOASSERTION199,059

mcp-server-fetch

OfficialUpdated today

by modelcontextprotocol

A Model Context Protocol server providing tools to fetch and convert web content for usage by LLMs

89,138

@modelcontextprotocol/server-filesystem

OfficialUpdated today

by modelcontextprotocol

MCP server for filesystem access

SEE LICENSE IN LICENSE89,138

@modelcontextprotocol/server-everything

OfficialUpdated today

by modelcontextprotocol

MCP server that exercises all the features of the MCP protocol

89,138