bring-mcp-catalog
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., "@bring-mcp-catalogAdd milk, eggs, and apples to my Bring! shopping list"
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.
bring-mcp-catalog

An MCP (Model Context Protocol) server for Bring! shopping lists, in TypeScript.
This is a derivative of florianwittkamp/bring-mcp by Florian Wittkamp, MIT licensed, and it would not exist without that project. It keeps all 16 of the original tools and adds 11 more, built around one idea:
Bring! stores an item by a canonical, language-independent id (
Äpfel,Kartoffeln) and each client renders that id in the list's own language. An item saved as free text ("Apples" / "Maçãs") is stuck without an icon forever. The same item saved asÄpfelshows as "Maçãs" to a Portuguese phone, "Apples" to an English one, and carries the right icon and aisle for free.
So this fork resolves what you type against Bring's real catalog, in any of the indexed languages, and saves the canonical id when it is confident enough.
⚠️ Status, and please read this bit
This was vibe-coded. Use it entirely at your own risk.
It was built fast, conversationally, with heavy AI assistance, by someone who is not a professional developer. It has not been audited by anyone qualified to audit it. It talks to an unofficial, reverse-engineered API and it writes to a real shopping list that other people can see.
I take no responsibility for anything it does: not for wrong items, wrong icons,
deleted entries, corrupted lists, a blocked Bring! account, or anything else.
There is no warranty of any kind, express or implied, including merchantability
and fitness for a particular purpose. Nothing here is supported, and no fix is
promised. If it breaks something you care about, that is your problem, and you
accepted that by running it. This is the standard MIT position (see LICENSE),
stated plainly so nobody is surprised by it.
In fairness, the code has been through a fair amount of adversarial review and carries 201 tests — but "reviewed a lot" is not "safe", and none of that changes a word of the paragraph above. Try it on a list you do not care about first.
Issues and pull requests are welcome, and I read them when I can. That is not a commitment to fix, merge, or reply.
Also, as the original project says: not affiliated with Bring! Labs AG in any way. The unofficial API may change or be blocked at any time, which could stop this working without notice.
Related MCP server: lista-compras-mcp
✨ What this adds over the original
Catalog resolution — turn a phrase in any indexed language into Bring's canonical item id, so items render correctly in every household member's language, with icons and aisles.
A deliberately conservative matcher — it refuses to guess. Ambiguous queries (
paprikais two different real catalog items) resolve to nothing rather than to a coin flip, on the principle that a wrong icon is worse than no icon, because nobody goes looking for it.Icons and sections — read, set and clear the per-item customisations that the Bring! apps show.
Rename — carrying the item's specification and its icon across the rename.
Loud failures instead of silent no-ops — the underlying API answers
204whether or not a name matched, so a typo used to look like success. Names are verified before every destructive write.Correct request encoding — the upstream
bring-shoppingpackage builds request bodies by string concatenation with no escaping, soFish & Chipswas silently stored asFish, and50% Creamnever arrived at all. Fixed here.
New tools
saveItemResolved, findCatalogItem, findCatalogSection, setItemIcon,
setItemSection, listItemCustomisations, removeItemCustomisation,
renameItem, batchUpdateItems, setListArticleLanguage, bringApiRaw
Everything from the original is still present and still works.
🧩 Recommended Claude Desktop Configuration
To use this server in Claude Desktop via npx, insert the following into your claude_desktop_config.json file:
{
"mcpServers": {
"bring-mcp-catalog": {
"command": "npx",
"args": ["-y", "bring-mcp-catalog@latest"],
"env": {
"MAIL": "your_bring_email@example.com",
"PW": "YOUR_BRING_PASSWORD_HERE"
}
}
}
}This is the recommended and most portable configuration. It ensures you always use the latest version published to npm without needing local installation.
🚀 Features
Automatic Authentication: No manual login required - authentication happens automatically on first API call
Exposes Bring! API functions as MCP tools:
🧾 Load shopping lists
🛒 Get and modify items (add, remove, move)
📦 Batch operations (save multiple items, delete multiple items)
🖼 Save/remove item images
👥 Manage list users
🎯 Get default shopping list UUID
🌐 Load translations & catalog
📨 Retrieve pending invitations
Communicates via STDIO (for use with Claude Desktop or MCP Inspector)
Supports Bring! credentials via
.envfile or injected environment variables
Available Tools
From the original project
loadLists— load all shopping listsgetItems— all items on a listgetItemsDetails— raw per-item detail recordssaveItem— add an item, with an optional specificationsaveItemBatch— add several items in one callremoveItem— remove an item (verifies the name exists first)moveToRecentList— mark an item boughtdeleteMultipleItemsFromList— remove several by name, reporting missessaveItemImage/removeItemImage— per-item photogetAllUsersFromList— who shares the listgetUserSettings— settings for the authenticated usergetDefaultList— the default list's uuidloadTranslations— Bring!'s UI translationsloadCatalog— the raw item catalog for a localegetPendingInvitations— outstanding list invitations
Added here
saveItemResolved— the main one. Resolves your phrase against the catalog and stores the canonical id when confident, otherwise stores your text verbatim and attaches the closest icon, otherwise stores your text alone. It tells you which of the three happened.findCatalogItem/findCatalogSection— search the catalog, with scores, so you can see why something matched before you write anything.setItemIcon/setItemSection— set an item's icon or aisle.listItemCustomisations— every icon/section/image override on a list, rendered in a human language rather than as German canonical ids.removeItemCustomisation— drop an item's overrides.renameItem— rename, carrying the specification and the icon across.batchUpdateItems— mixed add / mark-bought / remove in one call.setListArticleLanguage— which language the list renders in.bringApiRaw— an escape hatch onto the raw API for probing undocumented endpoints. Off unlessBRING_MCP_RAW=1; read-only verbs by default.
🌍 Configure your languages first
This is the one setting that matters. Catalog resolution can only match a
language it has indexed, so out of the box it indexes de-DE and en-US:
BRING_MCP_CATALOG_LOCALES=de-DE,pt-BR,en-US # a Portuguese/English household
BRING_MCP_CATALOG_LOCALES=de-DE,fr-FR # a French onede-DE is always included whether you list it or not — Bring's canonical item
ids are the German names, so indexing German is what makes an exact id match
work. An unsupported locale throws at startup rather than being skipped, so a
typo is loud instead of quietly giving you a matcher that never recognises your
words. Supported locales are listed in src/catalog.ts.
Optionally, BRING_MCP_DESCRIBE_LOCALE sets the language
listItemCustomisations renders in; it defaults to the first indexed locale
that is not German.
⚙️ Setup and Installation
Clone the repo (or obtain the files)
Navigate into the project directory:
cd path/to/bring-mcpInstall dependencies:
npm installCreate
.envfile (if not injecting ENV directly):MAIL=your_email@example.com PW=your_passwordBuild the project:
npm run buildMake script executable (optional on Unix):
chmod +x build/src/index.js
🏃 Running the Server
Launch the MCP server with:
node build/src/index.jsIf successful, you'll see: MCP server for Bring! API is running on STDIO (on stderr).
🧪 Testing with MCP Inspector
Ensure
npm run buildhas been executed.Ensure
.envwith valid credentials exists.Run Inspector:
npx @modelcontextprotocol/inspector node /ABS/PATH/bring-mcp-catalog/build/src/index.js
🧩 Claude Desktop Integration (Manual Local Setup)
Alternatively, if you prefer a locally built and installed version:
{
"mcpServers": {
"mcp-bring": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/bring-mcp-catalog/build/src/index.js"],
"env": {
"MAIL": "your_bring_email@example.com",
"PW": "YOUR_BRING_PASSWORD_HERE"
}
}
}
}🔧 Development
Testing
Run tests with:
npm run testThis command runs formatting, linting, and Jest tests with coverage reporting.
For CI testing:
npm run test:ciBuilding
Build the project:
npm run buildKey Dependencies and Tools
@modelcontextprotocol/sdk: For MCP server implementation@modelcontextprotocol/inspector: Run on demand withnpxfor testing and debugging MCP serversbring-shopping: Node.js wrapper for the Bring! APIzod: For schema definition and validationdotenv: For managing environment variables
✅ Final Notes
🔒 Avoid committing your
.envfile.🧼 Keep credentials out of version control.
🛠 MCP Inspector is invaluable for debugging.
🔄 Authentication is handled automatically - no manual login required.
📦 Use batch operations for efficiency when working with multiple items.
Happy coding with MCP and Bring! 🎉
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
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
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Persistent shopping memory for AI assistants. The AI reasons; Kaufliste stores and executes.
Turn any shopping list into a ready-to-checkout grocery cart across 26 European supermarkets.
- PressoOAuthnow.presso
Connect e-commerce and marketing data to AI assistants via MCP.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables interaction with Bring! shopping lists through natural language, allowing users to manage shopping items, lists, and collaborate with other users via the unofficial Bring! API.20127MIT
- FlicenseAqualityCmaintenanceEnables AI assistants to manage shopping lists and items (create, edit, delete, mark as purchased) via integration with a backend API.8-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read and manage your Bring! shopping lists through natural language commands like adding items, marking purchases, and retrieving list contents.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage a shared shopping list by adding, viewing, updating, and deleting products for different people via MCP tools.-
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/SpellsPT/bring-mcp-catalog'
If you have feedback or need assistance with the MCP directory API, please join our Discord server