
Bring Photo Mcp
io.github.schnueck由 GitHub 帳號 schnueck 發布v1.0.3更新於 Nov 3, 2026
通過照片將商品新增到 Bring!——用於 AI 識別、目錄符合和已驗證寫入的 MCP。
AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。
原文描述
Add products to Bring! from a photo — MCP for AI recognition, catalog matching, and verified writes.
概覽
Bring Photo 的本機 MCP 服務;無需登入;STDIO。
暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Bring Photo Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Bring Photo MCP v1
English | Deutsch
Turn product photos into Bring! shopping-list items.
Show your AI agent a package, label, or product photo and say: “Add this to my shopping list.” Bring Photo MCP lets the agent identify the product, match it with the Bring! catalog, select the right category and icon, attach the photo, and add the verified result to your Bring! list.
It also provides the usual list operations—searching, adding, checking, moving, copying, and removing items—but the photo-first workflow is the point: less typing, fewer ambiguous product names, and the original product image directly on the list.
Bring Photo MCP is a local, agent-neutral TypeScript MCP server. The executable stdio entrypoint starts only with locally validated environment variables; this repository contains no Hermes or client runtime configuration.
Installation
Requirements: Node.js 20+ and npm.
The official MCP TypeScript SDK (@modelcontextprotocol/sdk) is used. npm start builds the project and starts dist/index.js as a stdio server. Startup validates the configuration and authenticates with Bring only afterwards; this repository intentionally contains no Hermes or client runtime configuration.
Distributable artifacts
The package is prepared for public npm publication, constrained by an explicit files allowlist, and includes a bring-photo-mcp stdio binary entrypoint. The public thin-skill guidance is in SKILL.md; tested client templates are in docs/MCP-CLIENT-CONFIGURATION.md. Migration and rollback without runtime cutover are specified in docs/MIGRATION-ROLLBACK.md.
Configuration
Never commit .env with real values. The configuration model expects:
BRING_ENV=test|prodBRING_EMAIL,BRING_PASSWORDBRING_DEFAULT_LISTBRING_ALLOWED_LISTS(comma-separated)BRING_LOCALE(defaultde-DE)BRING_TEST_ITEM_PREFIX(defaultMCP-TEST-)- optional
BRING_TEST_SECOND_LISTexclusively for the multi-list E2E
src/config.ts validates the values. In PROD, the service accepts only allowlisted lists; the production runtime must additionally point to a pinned release tag. TEST uses a dedicated allowlisted list and temporary prefixed test items only.
Authentication recovery (1.0.3)
Long-running sessions automatically reauthenticate with the configured account after an explicit Bring HTTP 401. Concurrent failures share one renewal, and the account identity must remain unchanged. Read requests may retry once; writes are never automatically replayed. If a write reports an authentication failure, inspect the list before deciding whether to submit a new operation. Failed renewal stops cleanly rather than looping; reconnect the MCP after resolving the cause. Public catalog and image downloads never receive authentication headers.
To update, pin [email protected] in your MCP client configuration and restart or reconnect that MCP server. No new credentials or configuration fields are required. See the changelog for the fix details.
Opt-in live E2E
npm run test:e2e is deliberately not part of npm test and was not run here. It starts only with a fully configured environment and rejects anything other than BRING_ENV=test. BRING_ALLOWED_LISTS must contain exactly BRING_DEFAULT_LIST; with BRING_TEST_SECOND_LIST, it must contain exactly both named configured TEST lists. A non-empty BRING_TEST_ITEM_PREFIX is required.
The harness creates two synthetic PNG files in the temporary directory, verifies add/read-back as well as photo replace/remove, and removes all of its own prefixed items in finally, followed by an absence check. Copy, move, and multi-list operations run only with an explicit BRING_TEST_SECOND_LIST; without it, the harness reports an honest skip.
Architecture
src/bring-adapter.ts: deterministic Bring gateway interface and HTTP protocol adapter. Legacy item bodies are generated only withURLSearchParams; details are read throughbringlists/{listUuid}/details; the catalog is loaded fromhttps://web.getbring.com/locale/catalog.{locale}.json; detail metadata uses ISO-8859-1 multipart; photos use nativeFormDatawith theimageDatafield. An explicittransferImagegateway capability downloads source image bytes without Bring authentication and uploads them only to the target.src/bring-service.ts: business rules, list allowlisting, classification and duplicate rules, read-back verification, copy-before-delete for moves, and per-list results.src/mcp-server.ts: 15 Zod-validated MCP tools; no transport layer.src/redaction.ts: redacts password/token fields, UUID-like IDs, and local paths from error text.
Write operations are successful only after the item and detail have been read again. The detail must contain a UUID, userIconItemId, and userSectionId; photos additionally require imageUrl. Broken/orphan details are not used unless itemId matches exactly.
Tools
Read: bring_list_lists, bring_list_items, bring_search_catalog, bring_list_categories, bring_suggest_classification, bring_get_item.
Write: bring_add_item, bring_attach_photo, bring_replace_photo, bring_remove_photo, bring_copy_item, bring_move_item, bring_check_item, bring_uncheck_item, bring_remove_item.
bring_add_item always requires icon_item_id and category_id; both must match within the loaded catalog. The default for duplicate_policy is fail; update_exact changes only the exact same identity. Multi-list calls always return one result per target list and use status: "partial" for partial failures.
Error codes
CONFIGURATION, LIST_NOT_ALLOWED, LIST_NOT_FOUND, ITEM_NOT_FOUND, INVALID_CLASSIFICATION, DUPLICATE_AMBIGUOUS, VERIFICATION_FAILED, UPSTREAM_FAILURE, IMAGE_INVALID, CLASSIFICATION_UNCERTAIN.
Error text contains no credentials, UUIDs, or image paths.
Development and verification
This project was developed with AI-assisted coding and documentation tools under human direction and review. Its automated tests, isolated live E2E checks, and release artifacts were independently verified before publication. Thomas Schnuecker remains the project maintainer and is responsible for releases.
Security boundaries and rollback
Credentials, real list UUIDs, and product photos do not belong in Git, fixtures, or logs. This repository triggers no login or live operation. The existing bring-safe solution remains unchanged as the rollback until an explicitly approved cutover.
TEST E2E and the eight-photo regression are intentionally not active automatically: they require an approved dedicated TEST list, temporary prefixed items, and supplied test images. Afterwards, remove every generated TEST item and photo through read-back and verify their absence.
來源:README.md,提交 006c1b5
工具
0版本歷史
2- v1.0.3最新Nov 3, 2026
- v1.0.2Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分