Yazio MCP Server

Yazio MCP Server

An MCP server that connects AI assistants to your Yazio nutrition diary, enabling food tracking, product search, and nutrition goal management via reverse-engineered endpoints.

Category
Visit Server

README

Yazio MCP Server (Python)

[!IMPORTANT] This is not an official MCP server and Yazio does not provide an official API. It talks to the same reverse-engineered endpoints the Yazio apps use and may stop working at any time.

An MCP (Model Context Protocol) server that connects Claude, Cursor, and other MCP clients to your Yazio nutrition diary. Track your diet, search food products, and manage nutrition goals from your AI assistant.

A Python port of yazio-mcp, requiring no Node.js toolchain.

Quick start

No install step and no cloning — uv fetches, builds, and runs it straight from GitHub:

uvx --python 3.12 --from git+https://github.com/bserem/yazio-mcp-python yazio-mcp

Add it to your MCP client config:

{
  "mcpServers": {
    "yazio": {
      "command": "uvx",
      "args": [
        "--python", "3.12",
        "--from", "git+https://github.com/bserem/yazio-mcp-python",
        "yazio-mcp"
      ],
      "env": {
        "YAZIO_USERNAME": "your_email@example.com",
        "YAZIO_PASSWORD": "your_password"
      }
    }
  }
}

Claude Code (CLI)

claude mcp add yazio \
  -e YAZIO_USERNAME=your_email@example.com \
  -e YAZIO_PASSWORD=your_password \
  -- uvx --python 3.12 --from git+https://github.com/bserem/yazio-mcp-python yazio-mcp

Verify with claude mcp list.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or %APPDATA%\Claude\claude_desktop_config.json on Windows — use the JSON above.

Cursor

Add the same JSON to .cursor/mcp.json (per project) or ~/.cursor/mcp.json (global), or fill in the command and env via Settings → MCP → + Add new MCP server.

Pinning and updating

uvx caches the resolved git commit, so it will not pick up new commits on its own. Either pin a tag for reproducibility:

uvx --from git+https://github.com/bserem/yazio-mcp-python@v0.1.0 yazio-mcp

or force a re-resolve when you want the latest:

uvx --refresh --from git+https://github.com/bserem/yazio-mcp-python yazio-mcp

Test your connection

YAZIO_USERNAME='you@example.com' YAZIO_PASSWORD='...' \
  uvx --python 3.12 --from git+https://github.com/bserem/yazio-mcp-python yazio-mcp

The server authenticates during startup, so wrong credentials fail immediately with a message on stderr rather than at the first tool call.

Available tools

Tool Description Parameters
get_user User profile –
get_user_settings Settings and preferences –
get_user_dietary_preferences Dietary restrictions –
get_user_goals Nutrition and fitness goals date?
get_user_daily_summary Daily nutrition summary date
get_user_consumed_items Food entries for a date date
get_user_exercises Exercise data date?
get_user_weight Latest weight entry date?
get_user_water_intake Water intake for a date date
search_products Search the food database query, sex?, countries?, locales?
get_product Full product details product_id
get_user_suggested_products Suggestions for a meal daytime?, date?
add_user_consumed_item Add food to the log product_id, date, daytime, amount, serving?, serving_quantity?
remove_user_consumed_item Remove food from the log item_id
add_user_water_intake Log water intake date, water_intake

Dates are YYYY-MM-DD, except add_user_water_intake, which needs YYYY-MM-DD HH:MM:SS. Amounts are in base units (g or ml).

Prompts

Three prompts cover the flows that need more than one call:

  • add_food_item — search → disambiguate → check servings → log
  • remove_food_item — read the diary to get the entry id, then remove
  • add_water_intake — read the current total, add to it, write back the new total

Repository layout

This is a uv workspace with two independently publishable packages:

.
├── src/yazio_mcp/              # yazio-mcp — the MCP server
└── packages/yazio-client/      # yazio-client — a standalone async Yazio API client

yazio-client knows nothing about MCP and is usable on its own — see its README. uv resolves the workspace dependency automatically when installing from git, so the single uvx --from git+... command above builds both.

Development

uv sync              # create the venv and install both packages plus dev tools
uv run pytest        # 58 tests, no credentials or network needed
uv run ruff check .
uv run ruff format .

Tests mock the HTTP layer with respx, so they never touch the real Yazio API.

Run the server from a local checkout:

YAZIO_USERNAME=... YAZIO_PASSWORD=... uv run yazio-mcp

Notes on behaviour

  • Water intake is cumulative. water_intake is the running total for the day, not the amount being added. Read get_user_water_intake first and add to it.
  • item_id is not product_id. Removal needs the id of a diary entry from get_user_consumed_items. add_user_consumed_item returns the id it created, so an addition can be undone without re-reading the diary.
  • Credentials are sent only to Yazio's own servers, and only to obtain an OAuth token.

Differences from the TypeScript version

  • The yazio npm package and its monkey-patched water-intake method are replaced by the first-class yazio-client package in this repo.
  • Tool parameters use snake_case: get_product takes product_id (was id) and remove_user_consumed_item takes item_id (was itemId).
  • get_user_suggested_products takes daytime and date, which is what the endpoint actually accepts. The TypeScript version advertised query and limit, which the API ignored.
  • get_user_goals, get_user_weight, and get_user_exercises accept an optional date.

License

MIT — see LICENSE.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured