balanceit-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@balanceit-mcpGenerate a balanced recipe for my 8kg puppy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
balanceit-mcp
A stdio MCP server that drives your own balance.it account through its recipe autobalancer.
Balance IT formulates home-prepared canine and feline diets. This server acts as your signed-in account. It exposes the calorie calculator, the food catalogue, and the recipe builder as MCP tools.
Use your own account credentials. Read and respect the Balance IT terms of service before you automate anything against the site. This project has no affiliation with Balance IT.
What it does
The server exposes six tools over the Model Context Protocol.
Tool | Kind | Latency | Purpose |
| HTTP | under 500 ms | Return the daily maintenance calories for a pet. |
| HTTP | under 500 ms | Search the curated |
| Browser | 5 to 8 s, then cached 7 days | Return the full ingredient catalogue for one species and life stage. |
| Browser | 45 to 90 s | Fill the pet profile, choose ingredients, and wait for the built options. |
| Browser | 5 to 10 s | Read the macros and the gram weights for one recipe option. |
| Local | instant | Report whether a usable session is on disk. |
Every tool returns structured JSON. Two of the tools call the site JSON endpoints
directly. The other three drive a Chrome browser through Playwright. The
/recipes page and the build flow render only inside a logged-in browser
session.
A dead session produces a distinct session_expired error with a remedy hint.
The site answers an unauthenticated request with HTTP 200 and an empty array. A
caller cannot otherwise tell a dead session from an empty result.
Related MCP server: nutrition-mcp
Requirements
Node.js 20 or later.
Google Chrome. Playwright launches it through
channel: 'chrome'.A Balance IT account of your own.
A logged-in balance.it browser session, exported as a Playwright storageState file.
Install
npm install
npm run buildConfiguration
Session state
The server reads its session from ~/.config/balanceit/state.json. It creates
that file with mode 0600, inside a directory with mode 0700.
Export a session yourself. Sign in to balance.it in a Playwright Chromium
context. Then write context.storageState({ path }) to the configuration path
above. The export must hold the _balance_session and aws-waf-token cookies on
the balance.it domain.
Set BALANCEIT_STATE_SEED to seed the session from an export that sits
elsewhere. On first run the server copies that file to the configuration path,
and it applies mode 0600. The server ignores the variable once the configuration
file exists.
Re-export the session when a tool returns session_expired. The session cookies
expire after a few days.
Environment variables
Variable | Purpose |
| Your balance.it account email. |
| Your balance.it account password. |
| Path to a storageState export used to seed the session. |
The server reads the credentials from the environment only. It never writes them to disk. It never logs them. It never puts them in an error message.
The credentials are documented for a future automatic sign-in. The current code does not use them, because it authenticates from the exported session.
MCP client
Add the server to your MCP client configuration. Replace
/path/to/balanceit-mcp with the path to your own clone.
{
"mcpServers": {
"balanceit": {
"command": "node",
"args": ["/path/to/balanceit-mcp/dist/index.js"]
}
}
}Usage
Run the browser tools from a foreground shell. Playwright with
channel: 'chrome' does not launch Chrome from a backgrounded shell on macOS.
The Node process then stays alive, logs nothing, and looks like a hang.
generate_recipe
generate_recipe takes a pet profile and a list of food_id values. It returns
one option list, plus three fields for verification.
submitted_food_idslists the identifiers read from the hidden form inputs at submit time. This is what balance.it received.typeahead_addedlists the subset that the typeahead added rather than a chip click.missing_from_first_optionlists each requested ingredient that the first built option does not appear to contain. An empty list is the normal case. A non-empty list means that the site optimizer substituted or skipped the ingredient on that option. Callget_recipeon each option when you need per-option certainty.
The tool rejects a bad food_id before it opens a browser. A malformed
identifier fails immediately. A well-formed identifier that search_foods does
not return fails after the resolve pass.
Contract notes
These details describe how the site behaves. Keep them so that later maintenance does not have to rediscover them.
The
/recipespage returns an empty body to a plain fetch. Use the browser tools for any DOM content.The two JSON endpoints are
/r/api/v1/pets/vet_approvals/auto_calculate_caloriesand/r/api/v1/foods/search/<QUERY>. Both work with a plain fetch, the persisted cookie header, a normal desktop user agent, andX-Requested-With: XMLHttpRequest.foods/searchtakes the query as a path segment. The?q=form returns 404.On tab 2 of
/recipes, the ingredient chips sit inside seven collapsed accordions. Each chip is present in the DOM but not visible. Playwright times out on a click against a hidden chip. Click the accordion header (.ingredients-box > a) first.The one-pot toggle
#one_pot_cookingis hidden by CSS. Toggle the visiblelabel[for=one_pot_cooking]instead.A food that has no chip is added through the tab-2 typeahead (
input.food-typeahead.tt-input). This is the common case whenone_pot_cookingis true.Each typeahead suggestion carries a class of the form
li-<category>-<food_id>, such asli-protein-n13326. Match that class to find the exact suggestion, then click it with the mouse.A
.tt-suggestionclick reports success without registering the food when it targets the wrong suggestion. Do not click "the first suggestion". Match theli-<category>-<food_id>class.Every registered selection appears as a hidden
<input name="<category>_foods[]" value="<food_id>">. The pre-submit invariant is that every requested identifier is present as such an input.Typing a saved pet name by hand reads as an edit to that pet record. The site then raises an update gate. Select the pet from the
#pet_nametypeahead instead, which sets the hiddenpet_idand raises no gate.A recipe build is asynchronous. After the submit navigation lands on
/recipes/<recipe_id>, poll until the option cards render or the "N of N complete" status reaches parity.
Repository layout
src/
index.ts MCP server entry and tool registration
session.ts storageState persistence and Cookie header derivation
http.ts the two pure-fetch tools, SessionError, and UpstreamError
browser.ts Playwright flows for catalogue, generate, and detail scrape
scripts/
smoke.ts live check against the siteTests
This repository has no offline test suite. scripts/smoke.ts runs against the
live site, and it needs a valid session.
npm run smokeThe smoke run calls calculate_calories for a spayed female and an intact
female. It asserts that each result falls inside the reported calorie bracket. It
checks that search_foods('chicken') returns m4. It then builds a recipe. It
repeats the build for the same pet name, which exercises the saved-pet gate. It
reads the first option back. It asserts that a malformed food_id is rejected.
The reference profile for the run is an adult dog of 22 kg.
Set SMOKE_SKIP_RECIPE=1 to skip the slow browser leg.
SMOKE_SKIP_RECIPE=1 npm run smokeDevelopment
npm run dev # run the server from source through tsx
npm run build # compile TypeScript into dist/
npm start # run the compiled serverLicence
Licensed under the PolyForm Noncommercial License 1.0.0. Copyright 2026 Seraphine Renard.
Available Tools
6 toolscalculate_caloriesCalculate maintenance caloriesB
Balance IT's daily kcal estimate for a pet given species, weight, age, and reproductive status. HTTP endpoint, sub-second.
| Name | Required | Description | Default |
|---|---|---|---|
| age | Yes | ||
| gender | Yes | ||
| weight | Yes | ||
| species | Yes | ||
| age_unit | Yes | ||
| weight_unit | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It mentions only 'HTTP endpoint, sub-second,' which adds minor performance/network context, but it does not disclose whether the operation is read-only, has side effects, requires authentication, or how errors are handled. This is a significant gap for a calculation tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the main purpose. The second sentence adds a useful performance/endpoint detail. The phrase 'Balance IT's' is slightly awkward and could be clearer, but overall the description is concise with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter calculation tool with no output schema, the description is adequate but incomplete. It states the output concept ('daily kcal estimate') but does not specify output format, limitations (e.g., the schema restricts species to canine and feline, yet the description says 'pet' generically), or any caveats. It could benefit from clarifying supported species and return type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% property descriptions, so the description adds high-level context by naming the key inputs (species, weight, age, reproductive status). However, it does not explain the units, the gender enum meanings, or how parameters relate to each other beyond what the schema already shows. It partially compensates for the low schema coverage but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool produces a daily kcal estimate for a pet based on species, weight, age, and reproductive status. This specific verb+resource+scope distinguishes it from sibling tools focused on recipes and food searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a calorie estimate is needed given the listed inputs, but it does not explicitly state when to prefer this over alternatives, nor does it mention exclusions or when not to use it. The context is clear but not prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_recipeBuild custom recipes for a petA
Fill the pet profile, pick ingredient food_ids, submit, and wait for Balance IT to build N balanced recipe options. Browser-driven; typically 60-90s. Food_ids come from search_foods or list_catalogue. The response includes submitted_food_ids (ground-truth from the form) and missing_from_options (a soft signal that a requested ingredient did not appear in the built recipes; empty in the happy path). Any food_id that could not be added throws a clear error rather than silently dropping.
| Name | Required | Description | Default |
|---|---|---|---|
| age | Yes | ||
| gender | Yes | ||
| weight | Yes | ||
| species | Yes | ||
| age_unit | Yes | ||
| food_ids | Yes | ||
| pet_name | Yes | ||
| num_options | No | ||
| weight_unit | Yes | ||
| one_pot_cooking | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It reveals that the tool is 'Browser-driven; typically 60-90s,' explains the response fields (submitted_food_ids and missing_from_options), and clearly states error behavior: 'Any food_id that could not be added throws a clear error rather than silently dropping.' This is exceptional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, starting with the action, then providing latency, input provenance, response details, and error behavior in four sentences. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 10 parameters, no output schema, and no annotations, the description covers the workflow, expected latency, key response elements, and error handling. It gives a user enough context to use the tool correctly and set expectations, making it highly complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining the workflow, that food_ids come from other tools, and that N options are built. However, it does not describe all parameters (e.g., one_pot_cooking, weight_unit, age_unit) beyond the schema's enum names, leaving some gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Fill the pet profile, pick ingredient food_ids, submit, and wait for Balance IT to build N balanced recipe options.' It uses a specific verb (build) and resource (balanced recipe options), and distinguishes itself from siblings like search_foods, list_catalogue, and calculate_calories by focusing on recipe generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by stating 'Food_ids come from search_foods or list_catalogue,' which tells the user how to obtain necessary inputs. It implicitly defines the use case (generating recipes) without explicitly naming alternatives, but the integration with other tools gives practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recipeFetch a built recipe's detailA
Load /recipe/ and extract calories, macro split, gram-weight ingredient list, and required supplement. Browser-driven; ~5-10s.
| Name | Required | Description | Default |
|---|---|---|---|
| option_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds behavioral context by noting 'Browser-driven' and '~5-10s' latency, which are useful traits. However, it does not disclose whether the operation is read-only, what happens on missing recipe, or whether it requires any existing session, leaving several behavioral aspects unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence plus a short latency note. It avoids redundancy and front-loads the core action and output data, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description provides a reasonable overview of inputs and expected outputs. It lists the key data points returned but does not specify format or error handling. Since no output schema exists, a bit more detail on the return structure would improve completeness, but the current level is adequate for a simple fetch tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines option_id as a string, but the description embeds it in the URL /recipe/<option_id>, giving it clear semantic meaning as the built recipe identifier. Since schema description coverage is 0%, the description compensates well by explaining how the parameter is used, though it does not enumerate possible values or origins.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool loads /recipe/<option_id> and extracts specific data (calories, macro split, gram-weight ingredient list, required supplement), using a specific verb 'load' and 'extract'. This distinguishes it from siblings like generate_recipe (generates) and calculate_calories (calculates), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving details of a built recipe, but it does not explicitly state when to use this tool versus alternatives like generate_recipe or list_catalogue. It also does not mention preconditions such as needing an existing recipe id or a live browser session, leaving usage context somewhat implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_catalogueList the full ingredient chip catalogueA
The complete chip catalogue for a species (79 items canine adult; 51 marked one-pot-compatible). Cached for 7 days. Browser-driven; first call ~5-8s.
| Name | Required | Description | Default |
|---|---|---|---|
| species | Yes | ||
| one_pot_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses that results are cached for 7 days and that the tool is browser-driven with a 5-8s first call, which are useful behavioral insights beyond a basic list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, and every sentence adds value: complete catalogue, cache duration, and latency expectation. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers purpose, parameters, caching, and performance, which is solid for a simple list tool. It lacks details about the return format or potential pagination, but the information provided is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning by giving item counts for canine adult (79) and noting 51 are one-pot-compatible. This partially explains the 'species' and 'one_pot_only' parameters, though it does not cover all enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the complete ingredient chip catalogue for a species, using a specific verb and resource. It distinguishes itself from sibling tools by emphasizing 'full catalogue' versus recipe generation, calorie calculation, or food search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: it is for retrieving the complete catalogue for a species, but no explicit when/when-not guidance or mention of alternatives is given. The description does not state 'for filtered search use search_foods' or similar exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_foodsSearch Balance IT food catalogueB
Fuzzy search over Balance IT's food database. Returns curated 'm*' rows plus USDA reference foods. HTTP endpoint, sub-second.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| species | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It reveals that results include curated 'm*' rows and USDA reference foods and mentions sub-second performance. However, it does not explain what 'm*' means, the result format, or error/empty behavior, leaving notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the primary purpose. Each sentence adds information, though the 'HTTP endpoint' detail is somewhat redundant in an MCP context. Overall, it is well-structured and free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (2 parameters, no output schema), and the description provides the core purpose and return composition. However, it lacks parameter semantics and any indication of the response structure, so the agent may struggle to invoke it correctly and interpret results fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the 'query' or 'species' parameters at all. The agent must rely on a bare schema with no parameter descriptions, making it impossible to infer parameter meaning or formatting from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fuzzy search' and names the resource 'Balance IT's food database.' It also clarifies the result composition (curated 'm*' rows plus USDA reference foods), which clearly distinguishes it from sibling tools like list_catalogue or get_recipe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: if you need to search for foods, this is the tool. There is no explicit mention of when to use it instead of alternatives, nor any exclusion criteria. Sibling tools are not referenced for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_statusReport persisted session statusA
Whether a usable balance.it session is on disk. Useful to distinguish 'dead session' from 'real failure' before running slower tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral transparency. It states the tool checks for a session 'on disk' which adds useful context about side-effect-free inspection. However, it does not clarify what 'usable' means, how the result is returned (e.g., boolean, object), or whether any network/auth is involved. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the core function, the second adds usage guidance. No wasted words, front-loaded with the most important information. This is ideal for a simple status-check tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 params, no output schema), the description is fairly complete. It covers what it does and when to use it, implying a boolean result via 'Whether.' It does not specify the exact output format or session validity criteria, but for a simple check this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100% (empty schema). The baseline for 0 params is 4. The description adds no parameter details because none exist, but it gives enough context about what the tool evaluates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking whether a usable balance.it session exists on disk. This is a specific verb+resource combination that distinguishes it from recipe/calorie sibling tools. The title 'Report persisted session status' aligns with the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives usage context: 'Useful to distinguish "dead session" from "real failure" before running slower tools.' It indicates when to use this tool (as a pre-check) and implies an alternative (slower tools). It lacks an explicit 'when not to use' but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
calculate_calories - First observed
generate_recipe - First observed
get_recipe - First observed
list_catalogue - First observed
search_foods - First observed
session_status
TDQS
Scored across 6 tools
Each tool targets a distinct resource and action: loading a recipe, calculating calories, searching foods, listing the catalogue, generating a recipe, and checking session state. Even though get_recipe and generate_recipe both involve recipes, the load-vs-create distinction is clear from the descriptions.
Most tools follow a clear verb_noun pattern (get_recipe, calculate_calories, search_foods, list_catalogue, generate_recipe). session_status is a small deviation that reads as a state check rather than an action, but it's still understandable and consistent in style.
Six tools is a well-scoped set for a Balance It nutrition MCP. Each tool covers a core part of the workflow (estimating calories, finding ingredients, generating recipes, loading results) without being bloated or too thin.
The core lifecycle is covered: search/select ingredients, generate recipes, retrieve a specific recipe, and estimate calories. Minor gaps exist, such as no explicit recipe listing or update/delete, but these are not essential for the domain and the workflow is functional.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server exposing supplements database used by iNutriPlan.com
An MCP server that automatically collects feedback on your MCP server.
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables AI-powered recipe generation and transformation using natural language, supporting dietary restrictions, allergies, and nutritional goals.213MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for USDA nutrition data lookup, meal logging, and daily macro tracking.15MIT
- AlicenseBqualityDmaintenanceMCP server for meal planning and grocery list generation, enabling recipe storage, meal plan creation, and automated grocery lists with ignored ingredients.82MIT
- FlicenseAqualityCmaintenanceMCP server that provides food composition data from USDA FoodData Central, enabling search, nutrient lookups, and recipe nutrition calculations.4-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/seraphinerenard/balanceit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server