Item-by-item inventory that reorders itself: per-SKU forecasts, purchase orders and ETAs.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
Item-by-item inventory that reorders itself. Per-SKU demand forecasts, automatic purchase orders, supplier email and delivery ETAs — with a REST API, an MCP server, a daemon, and a dashboard. Pure Node 22, zero runtime dependencies (node:* built-ins only).
Live demo: huggingface.co/spaces/willykeenan/tanpin (read-only, seeded sample data)

Real screenshot of the demo; the data in it is invented sample data.
![]() Per-SKU forecast with weekday and trend factors, safety stock, reorder point and a manager hypothesis. | ![]() Purchase orders the cycle raised, grouped by supplier. |
Tanpin kanri (単品管理, “single-item management”) treats every SKU as its own business. A store manager forms a hypothesis about tomorrow’s demand for that item — weather, a local event, day of week — orders against it, then verifies the result against actual sales. High-velocity items get tight control and frequent replenishment. The long tail gets simpler rules, and is the first to be delisted.
Tanpin encodes that loop in software:
ABC classification follows the same idea: a small set of A items drives most value and gets the freshest reorder cadence; C items are the delist pool.
SMTP_HOST is set; otherwise .eml files in the outbox/openapi.json, agent guide at /llms.txt/ (products, orders, suppliers, forecast, activity, API, settings)X-Inventory-Signature)TANPIN_PLUGIN loads extra HTTP routes and usage limitsnode:sqlite, WAL, incremental row writes; data/inventory.sqlite) shared safely by the server and a standalone daemon; JSON fallback with TANPIN_STORE=jsonRequires Node.js 22 or newer.
Open http://localhost:4173 and click Load demo data. That loads a convenience-store catalog, about 35 days of sales, live forecasts, and reorder recommendations.
From a clone of this repo:
Public demo image (the Hugging Face Space):
Open http://localhost:7860. The image runs DEMO_MODE=1 PORT=7860 HOST=0.0.0.0 node bin/tanpin serve: reads are open, writes are limited to the demo catalog (sales, adjustments, POs, hypotheses, seed, cycles) and need no key, webhooks and SMTP are off, and the catalog reseeds every 30 minutes.
Self-hosted image (root Dockerfile / compose.yml): requests reach the container through Docker's port mapping, so they are not "this machine" and every API call needs a key. Start it with a master key and paste that key into the dashboard's prompt:
More detail, including the first sale and first purchase order: docs/QUICKSTART.md.
Send Authorization: Bearer <key> or X-API-Key: <key>. Requests made on the server's own machine straight to localhost need no key by default; anything through a reverse proxy, a container port mapping, or another browser origin does (see Security model).
Five calls that cover the store:
Errors are {"error":"<message>","code":"<machine_code>"}. /api/... and /api/v1/... are equivalent.
Full reference: docs/API.md. Live contract: GET /openapi.json. Agent-oriented guide: GET /llms.txt.
Start the inventory server, then point an MCP client at tanpin mcp. The process speaks JSON-RPC on stdio and calls the HTTP API.
Environment: INVENTORY_URL (default http://localhost:4173), INVENTORY_API_KEY when the server requires a key.
Or a project .mcp.json:
From a local checkout, use "command": "node" and "args": ["src/mcp.js"] (or ["bin/tanpin", "mcp"]) instead of npx.
In ~/.codex/config.toml (or the project Codex config):
.cursor/mcp.json:
Call get_overview first. Typical flow: get_overview → get_reorder_recommendations → create_purchase_order with from_recommendations=true.
Tool list and schemas: docs/MCP.md.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/tanpin)<a href="https://allmcps.com/mcp/tanpin"><img src="https://allmcps.com/api/badge/tanpin?style=directory" alt="Tanpin on AllMCPs" /></a>