Spree Commerce: open-source B2B and marketplace ecommerce
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Homebox home inventory: search, intake, warranties, attachments, locations, tags, QR labels
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
HOMEBOX_URL, HOMEBOX_TOKEN, HOMEBOX_ALIAS_FIELD, HOMEBOX_LABEL_DIRค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"homebox": {
"command": "uvx",
"args": [
"homebox-mcp"
],
"env": {
"HOMEBOX_URL": "ใส่ค่าของคุณ",
"HOMEBOX_TOKEN": "ใส่ค่าของคุณ",
"HOMEBOX_ALIAS_FIELD": "ใส่ค่าของคุณ",
"HOMEBOX_LABEL_DIR": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add homebox --env HOMEBOX_URL='ใส่ค่าของคุณ' --env HOMEBOX_TOKEN='ใส่ค่าของคุณ' --env HOMEBOX_ALIAS_FIELD='ใส่ค่าของคุณ' --env HOMEBOX_LABEL_DIR='ใส่ค่าของคุณ' -- uvx homebox-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"homebox": {
"command": "uvx",
"args": [
"homebox-mcp"
],
"env": {
"HOMEBOX_URL": "ใส่ค่าของคุณ",
"HOMEBOX_TOKEN": "ใส่ค่าของคุณ",
"HOMEBOX_ALIAS_FIELD": "ใส่ค่าของคุณ",
"HOMEBOX_LABEL_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"homebox": {
"type": "stdio",
"command": "uvx",
"args": [
"homebox-mcp"
],
"env": {
"HOMEBOX_URL": "ใส่ค่าของคุณ",
"HOMEBOX_TOKEN": "ใส่ค่าของคุณ",
"HOMEBOX_ALIAS_FIELD": "ใส่ค่าของคุณ",
"HOMEBOX_LABEL_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
HOMEBOX_ALIAS_FIELD envHOMEBOX_LABEL_DIR envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub dgahagan ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: HOMEBOX_URL, HOMEBOX_TOKEN
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.3.0) เข้า registry 14 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spree Commerce: open-source B2B and marketplace ecommerce, Stripe MCP, MCP Cn Commerce
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
server ทางการของ Stripe ให้ AI ดูและจัดการลูกค้า สินค้า การชำระเงิน และใบแจ้งหนี้ ต่อผ่านคลาวด์ของ Stripe และล็อกอินแบบ OAuth
8 read-only MCP platform entries; support is operation-specific; merchant live acceptance pending
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
An MCP server over the Homebox REST API, so an MCP client like Claude can work with your home inventory in plain language: *"where is my impact driver",* *"what's in Tote B-3", "which warranties expire this year", "add this drill — here's a photo of the receipt and the model number".* It answers questions, performs intake (create an item, attach the manual/receipt, tag and file it), manages attachments, and prints QR labels for totes and shelves — no hand-rolled curl.
You need a running Homebox instance (0.26+, see Requirements) and an API key from Profile → API Keys in the Homebox web UI.
claude mcp add homebox --scope user \
-e HOMEBOX_URL=https://homebox.example.com \ -e HOMEBOX_TOKEN=hb_xxxxxxxxxxxxxxxxxxxxxxxx \ -- uvx homebox-mcp claude mcp get homebox # should show: Status ✔ Connected
--scope user makes it available from any project. uvx fetches and runs the published package in an ephemeral environment — nothing to install first.
Add to your client's MCP config (e.g. claude_desktop_config.json):
{
"mcpServers": { "homebox": { "command": "uvx", "args": ["homebox-mcp"], "env": { "HOMEBOX_URL": "https://homebox.example.com", "HOMEBOX_TOKEN": "hb_xxxxxxxxxxxxxxxxxxxxxxxx" } } } }
The module carries PEP 723 inline dependencies, so it also runs standalone with uv run --script — uv resolves mcp, httpx, pillow, and pillow-heif into an ephemeral venv on first run. Instead of env vars, drop credentials in a .env file next to the module:
git clone https://github.com/dgahagan/homebox-mcp
cd homebox-mcp cp .env.example .env # .env is gitignored chmod 600 .env
Then register the absolute path to the module (or to server.py, a compatibility shim kept for older registrations):
claude mcp add homebox --scope user -- \
uv run --script /path/to/homebox-mcp/homebox_mcp.py
The server reads config from the environment, falling back to the sibling .env (resolved relative to the script, so the absolute-path invocation still finds it). The credential never enters the MCP config — it stays in the gitignored .env.
/items, /locations, /labels) and are rejected on the first tool call with a clear error rather than failing cryptically.hb_).homebox-mcp yourself.mcp>=2,<3), pulled in automatically. uvx/pipx build an isolated environment, so this needs no action. If you are installing into an environment already pinned to mcp<2, stay on homebox-mcp==1.0.1.All configuration is via environment variables (or the sibling .env for the clone workflow):
| Variable | Required | Purpose |
|---|---|---|
HOMEBOX_URL | yes | Base URL of your Homebox instance (no trailing slash). |
HOMEBOX_TOKEN | yes | Homebox API key (hb_…). |
HOMEBOX_ALIAS_FIELD | no | Name of one custom field to treat as a stable item identifier — items can be resolved by it, summaries surface it, and field_index defaults to it. Unset = resolve by assetId/name only. See Conventions. |
HOMEBOX_LABEL_DIR | no | Where generate_label / qrcode save output. Default: current working directory. |
~39 tools. Reads accept a fuzzy identifier (assetId, alias field, exact name, then first keyword match). Write tools require an exact identifier (assetId, alias field, or exact name) — a typo or an ambiguous match is refused rather than mutating the wrong item. An assetId must be in the full 000-012 form: a bare 12 is matched as a name or alias, never as asset 000-012. Locations are referenced by name or /-separated path (e.g. Garage/Shelf 1) to disambiguate duplicate names.
| Tool | Purpose |
|---|---|
search_items(query?, tags?, limit=20) | Search items by keyword and/or tag names (AND of both); returns each with assetId, location, and the alias field. |
get_item(identifier) | Full detail for one item: location path, identity, purchase, warranty, custom fields, tags, attachments. |
list_locations() | The full location tree as an indented outline. |
location_contents(location, recursive=False) | Items directly in a location plus its sub-location names; recursive=True walks the whole subtree and returns every nested item with its full location path. |
list_tags(detail=False) | All tag (label) names; detail=True returns full objects (description, color, icon, parent tag). |
warranties_expiring(before?, after?, lifetime=False) | Items whose warranty expires in after…before (after defaults to today, excluding already-expired); lifetime=True lists lifetime-warranty items. |
| Tool | Purpose |
|---|---|
create_item(name, location?, quantity=1, manufacturer?, model?, serial?, purchase_price?, purchase_date?, purchase_from?, warranty_expires?, notes?, fields?, tags?) | Create and enrich an item in one call. fields is a dict typed by JSON value (string→text, number→number [integer-coerced], bool→boolean); tags must already exist. location resolves as in move_item: a location name or path, or a container item (name, path or assetId). Returns the new assetId. |
import_csv(csv_text) | Bulk-create items and locations from a Homebox CSV in one multipart request. HB.location auto-creates the path hierarchy; recognizes HB.name, HB.tags, HB.quantity, HB.serial_number, HB.model_number, HB.manufacturer, HB.notes, HB.purchase_*, HB.warranty_expires, HB.field. . |
create_location(name, parent?, description?) | Create a location (tote/bin/shelf) to bootstrap a new storage spot; description doubles as a contents manifest. |
barcode_lookup(code) | UPC/EAN → name/manufacturer/model (optional, for boxed goods). |
duplicate_item(identifier, copy_attachments=False, copy_custom_fields=True, copy_maintenance=False, prefix="Copy of ") | Duplicate an item ("I bought a second one"). Copied custom fields include the alias field verbatim — give the copy its own value after. |
All write tools resolve by exact identifier and preserve everything you don't touch (a full-body PUT that echoes the rest of the item back — see gotchas).
| Tool | Purpose |
|---|---|
set_item(identifier, new_name?, description?, notes?, quantity?, purchase_price?, purchase_date?, purchase_from?, insured?, archived?, fields?) | General item editor: rename, notes, quantity, purchase info, insured/archived flags, custom fields. Quantity-only edits use a partial PATCH. |
move_item(identifier, location) | Move an item into a location or into another item (e.g. a lens into Camera Bag). The destination is a location name or path, as before; only if no location matches is it looked up as an item by exact name or path (e.g. Office/Camera Bag), or give the item's assetId. A name matching more than one is refused, and so is a location as the item to move — use set_location (partial PATCH — nothing else changes). |
set_warranty(identifier, expires?, lifetime?, details?) | Set warranty end date, lifetime flag, and terms summary. |
set_identity(identifier, manufacturer?, model_number?, serial_number?) | Set manufacturer / model / serial (e.g. after a nameplate photo reveals them). |
set_fields(identifier, fields) | Create or overwrite custom fields (upsert; typed by JSON value type). |
set_tags(identifier, tags, mode="add") | Add / remove / replace tags on an item; unknown tag names are auto-created (partial PATCH). |
set_tag(name, new_name?, description?, color?, icon?, parent?, clear_parent=False) | Edit a tag's own metadata (rename, color, icon, parent tag for grouping) — not what's tagged on an item. Creates the tag if new. |
set_location(location, new_name?, parent?, clear_parent?, description?, notes?, tags?, tags_mode?, entity_type?, asset_id?, fields?) | General location editor: rename, move (or clear_parent to root), tags, notes, entity type, assetId, custom fields. |
mark_sold(identifier, sold_price?, sold_to?, sold_date?, sold_notes?, clear=False) | Record a sale (price/buyer/date/notes) or clear=True to un-sell; pair with set_item(archived=True) to retire the item. |
| Tool | Purpose |
|---|---|
log_maintenance(identifier, name, description?, completed_date?, scheduled_date?, cost?) | Add an entry — "changed the mower oil today" (completed) or "sharpen blades in spring" (scheduled). |
list_maintenance(identifier?, status="both") | Entries for one item, or across the whole inventory ("what maintenance is due?"); status = scheduled / completed / both. |
set_maintenance(entry_id, ...) | Edit an entry — e.g. mark a scheduled one completed by setting completed_date. |
delete_maintenance(entry_id, confirm) | Delete one entry (confirm = its exact name). |
| Tool | Purpose |
|---|---|
inventory_stats(by="totals", start?, end?) | Totals (counts, total value, warranty count), value by location or tag, or purchase-price over time — the cheap way to answer "what's my inventory worth?". |
export_csv(save_to?) | Export the whole inventory as a Homebox CSV (complement of import_csv; quick backup). |
list_custom_fields(field?) | Discover the custom-field schema in use: all field names, or every distinct value of one field. |
| Tool | Purpose |
|---|---|
attach_document(identifier, source, title, doc_type="manual", primary=False) | Attach a file (local path or http(s) URL) to an item, or to a location by name as a fallback. doc_type e.g. manual/receipt/warranty/photo; primary=True makes a photo the entity's primary image (e.g. a location's "this is the spot" wayfinding shot). |
list_attachments(identifier) | List an item's or location's attachments with their ids (the handle the other attachment tools need). |
get_attachment(identifier, attachment_id, save_to) | Download one attachment to a local path so its content (e.g. a manual) can be read. |
rename_attachment(identifier, attachment_id, title?, doc_type?, primary?) | Update an attachment's title, type, or primary flag. |
Uploads auto-convert HEIC/HEIF (iPhone photos) to JPEG so Homebox always
stores a browser-renderable image, and sanitize
/in titles (Homebox treats
a title as a path and would otherwise truncate it).
Every delete requires confirm to equal the target's exact name and carries the MCP destructiveHint annotation, so clients prompt before running them.
| Tool | Purpose |
|---|
| delete_item(identifier, confirm) | Permanently delete an item and its attachments. No und
ตัดมาแค่ช่วงต้น อ่านต่อใน repo