API 文档 开放 API · 专业版智能体接入 · 免费版可用

开放 API 让你把库存接进自己的脚本、表格与自动化流程;AI 助手(Claude / Cursor / Qoder / WorkBuddy 等)也可以经它对话式查库存、办出入库。本文覆盖认证、接口总览、Webhook 与各主流工具的智能体接入配置,示例均已与实际路由核对。

开放 API 与 Webhook 已随 v1.0.0 上线,属专业版权益(feature.api 门禁已生效,无权益的 Token 调用返回 403 EDITION_REQUIRED)| 智能体接入 MCP 已上线,免费版可用(物品条目 50 件内,2026-09-30 起)

概述与约定

  • Base URL:{你的实例地址}/api/v1,例如 http://192.168.1.10:8066/api/v1;
  • 响应信封:成功统一为 {"code":"OK","message":"ok","data":…},业务数据在 data 里;错误返回 {"code":"错误码","message":…};
  • 限流:按 Token 每分钟 60 次,超限返回 429 RATE_LIMITED——脚本侧请做分页合并(分页 page_size 建议 ≤50,服务端上限 200);
  • 机器可读契约:完整接口定义见 /api/openapi.json(Swagger UI 在 /api/docs);
  • 角色:Token 继承其所属用户的角色——读接口需 viewer 及以上,写接口需 member 及以上,「报废」出库与分类 / 库位 / 供应商增删改需 admin;日期参数支持 YYYY-MM-DD。

Token 认证

  1. 登录系统,进「设置 → API Token」,点「新建」;
  2. Token 以 xmt_ 开头,明文只在创建时显示一次,请立即保存(落库的是哈希,丢了只能删除重建);
  3. 所有请求带请求头 Authorization: Bearer xmt_…;
  4. 不用了随时在设置页停用(立即失效,之后可再启用),或直接删除。
curl -s -H "Authorization: Bearer xmt_你的Token" \
  "http://你的实例:8066/api/v1/items?page=1&page_size=5"

接口总览

以下为常用精选面,全部路径相对 /api/v1:

读接口(viewer+)

接口说明
GET /items物品列表 / 搜索:q 关键词、category_id、location_id、low_stock、series 等筛选,分页
GET /items/{id}物品详情(附件、活跃预警、资料标记)
GET /items/{id}/stocks多位置库存分布
GET /stock/records全局流水:按 item_id / type / 日期区间过滤
GET /categories
GET /locations/tree
GET /suppliers
分类目录 / 库位树 / 供应商
GET /alerts预警列表(默认 status=active)
GET /stocktakes
GET /stocktakes/{id}/lines
盘点任务与盘点行(待盘 / 已盘 / 差异过滤)
GET /docs?item_id=物品资料库列表 / 关键词搜索(含抓取与 AI 整理状态)
GET /projects
GET /projects/{id}/bom
项目列表(含缺口行数)/ BOM 库存对比明细(需求 / 已领 / 缺口逐行对比,附用料统计)
GET /custom-fields自定义字段定义(枚举可选项、适用大类)

写接口(member+)

接口说明
POST /items建档(同型号 + 类型重复返回 409 DUPLICATE_ITEM,确认后加 "force": true)
PUT /items/{id}全量更新档案(安全库存变化自动重算预警)
POST /stock/inbound入库:可 item_id 或 new_item 内联建档一步入库
POST /stock/outbound出库:purpose = project / consume / scrap(报废需 admin)
POST /stock/transfer移库:to_location_id,多位置可指定 from_location_id
POST /stock/adjust按实盘数调整(生成 adjust 流水)
POST /items/batch批量建档:同商品多规格一次建多条(variants,同平台已存在型号跳过;受物品条目数上限约束)
POST /stocktakes
POST /stocktakes/{id}/confirm
/cancel
创建盘点任务 / 确认结案(差异生成调整流水)/ 取消
POST /alerts/{id}/acknowledge确认预警(仅 active 状态)
PUT /stocktakes/{task_id}/lines/{line_id}录入盘点实盘数
POST /items/{id}/attachments上传图片 / 文件(multipart,file_type=image/datasheet/other,≤20MB)
PUT /items/{id}/attachments/order附件重排:ids 须与现有附件一一对应,第一张图即封面
DELETE /attachments/{att_id}删除附件(磁盘文件同删,不可恢复)
POST /items/{id}/docs添加资料链接(后台抓取正文转 markdown)
POST /docs/upload上传资料文件(后缀白名单 pdf/docx/txt/md/png/jpg/xlsx/csv/pptx/zip 等)
POST /docs/{doc_id}/items关联资料到物品(幂等,一份资料可挂多个物品;GET /docs?item_id= 命中包含该物品的资料)
DELETE /docs/{doc_id}/items/{item_id}解除资料与物品的关联(资料保留,无关联即全局资料)
PATCH /docs/{doc_id}重命名资料显示标题(原文 / 文件不动)
POST /docs/{doc_id}/ai-clean
POST /docs/{doc_id}/retry
触发 AI 整理(仅链接类)/ 重新抓取失败或卡住的资料
DELETE /docs/{doc_id}删除资料

采购 · 项目 BOM · 借用(member+)

接口说明
GET / POST /purchase-items采购清单查询(status=pending/ordered/arrived/done/cancelled)与加入;同物品待购行自动合并
PUT /purchase-items/{id}改数量 / 状态流转(标记已下单、到货、取消等)
POST /purchase-items/{id}/receive到货入库确认:按实收数量入账、生成流水并解除低库存预警
DELETE /purchase-items/{id}删除采购行(仅「已取消」状态可删,其余返回 409)
GET / POST /projects
GET / PUT / DELETE /projects/{id}
项目增删改查(结项 / 归档经状态更新)
POST /bom/parseCSV / 粘贴文本解析为 BOM 行候选(表头自动映射、按型号聚合,不落库)
POST /projects/{id}/bomBOM 文本导入:按型号 + 封装聚合落库,只替换导入行(手动添加的行保留)
POST /projects/{id}/bom/lines
PUT / DELETE /projects/{id}/bom/lines/{line_id}
添加物料行 / 改需求数量(不得低于已领用)/ 删行(仅手动行)
POST /projects/{id}/bom/purchase缺料行放入采购清单:可选 line_ids 指定行,缺省全部缺料;已在采购中的不重复
GET /projects/{id}/bom/export
GET /projects/{id}/stats
BOM 导出 / 项目用料统计
POST /projects/{id}/consume按行从项目领用出库
GET / POST /borrows
POST /borrows/{id}/return
借出登记与查询 / 归还(逾期自动进预警)

基础档案(admin)

接口说明
POST / PUT / DELETE /categories
/locations
/suppliers
分类 / 库位 / 供应商增删改(仅 admin):删除时被子项或物品引用会拒绝(409)

Token 与登录会话同权限,按所属账号角色收紧或放开:删除物品、系统设置、用户与授权管理等敏感接口同样可被 Token 调用——请把 Token 当账号密码保管,只发给可信脚本,只读场景建议用 MCP 只读模式(?mode=readonly)。流水冲正可通过 Token 调用(冲正非本人流水需 admin);MCP 工具面不含冲正,防智能体误操作连环放大。

调用示例

搜索物品

curl -s -H "Authorization: Bearer $XMT" \
  "$BASE/api/v1/items?q=M3%E8%9E%BA%E4%B8%9D&page=1&page_size=20"

建档(含期初数量)

curl -s -X POST "$BASE/api/v1/items" \
  -H "Authorization: Bearer $XMT" -H "Content-Type: application/json" \
  -d '{"name":"M3×8 内六角螺丝","model":"M3x8","type":"PRT","location_id":12,
       "unit":"颗","quantity":200,"safety_stock":50,"tags":["紧固件"]}'

入库

curl -s -X POST "$BASE/api/v1/stock/inbound" \
  -H "Authorization: Bearer $XMT" -H "Content-Type: application/json" \
  -d '{"item_id":34,"quantity":100,"total_price":25.8,"supplier_id":3,"remark":"补货"}'

Webhook

在「设置 → Webhook」配置接收地址,库存相关事件会 POST 到你的端点(JSON)。当前事件:

事件触发时机
stock.changed任何库存变动(入 / 出 / 耗 / 借还 / 移库 / 调整)
alerts.created / alerts.resolved预警产生与消除
purchase.done采购单完成

事件在业务事务内入队、后台轮询投递;带 HMAC-SHA256 签名头 X-Xianmu-Signature(密钥在建 Webhook 时生成),失败退避重试 3 次,投递记录可查、可发测试事件。验签示例(Python):

import hmac, hashlib

def verify(secret: str, body: bytes, signature: str) -> bool:
    expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)

# signature 取请求头 X-Xianmu-Signature;body 为原始请求体字节

智能体接入 免费版可用(50 条目内)· 已上线

开放 API 的产品化形态:让 AI 编码助手与通用智能体直接操作库存——问一句「A 柜还剩多少 M3 螺丝」,或说「把这批料入库到 A 柜二层」。两种形态:

  • MCP(推荐,内置端点):服务端原生 /api/mcp(Streamable HTTP),客户端只填「实例地址 + Token」即得精选工具面(查询 21 个 + 写入 46 个,覆盖物品、项目库与 BOM、采购、借用、盘点任务、基础档案、图片与资料管理与操作规范引导),零本地依赖,NAS / 远程实例同样可用;支持 ?mode=readonly 只读模式——「只让 AI 查库存」的安心开关,演示实例自动强制只读;
  • Skill(技能文件):把随发布包提供的 xianmu-ims 技能文件夹(安装版位于安装目录下的 skill\xianmu-ims\,Windows 默认 %LOCALAPPDATA%\Programs\XianMuIMS\skill\xianmu-ims\;也可从 GitHub 仓库的 skill/ 目录获取)放进 Claude Code / ZCode / Cursor 的技能目录,Agent 即按本文接口约定查库存、办出入库 / 盘点,也可跑内置「初始化引导」(几轮问答配好分类与位置),内置「写操作先确认、限流合并查询」等护栏,适合不想配 MCP 的编码类 Agent。

想让 AI 智能体全自动完成接入(装好软件、连上 MCP、配好初始分类与位置)?把这句话发给任意支持 MCP 的智能体(Claude Desktop / Cursor / WorkBuddy / Qoder 等):英文「Read https://ims.miaoking.com/skill.md and follow the instructions to set up XianMu IMS and connect its MCP server.」或中文「读取 https://ims.miaoking.com/skill.md 并按照其中的说明,安装闲沐 IMS 并连接它的 MCP 服务器。」

MCP 工具面速览(67 个)

服务端精选 67 个工具(读 21 / 写 46),按业务域分组:

域数量能做什么
物品与库存11搜索 / 详情 / 多位置库存 / 流水查询,建档、批量建档、部分更新、出入库、移库、调整(search_items、create_item、batch_create_items、inbound、outbound 等)
项目库与 BOM11建项目 / 改状态、导入 BOM 文本、加改删 BOM 行、按行领用出库、缺料转采购与对比查询(create_project、import_project_bom、consume_project_bom、purchase_project_bom 等)
采购5清单查询、加购 / 状态流转 / 到货入库 / 删除(receive_purchase_item 按实收数量入账)
盘点6任务创建 / 录数 / 确认结案 / 取消 / 明细查询
预警2预警查询与确认
借用3借出登记 / 归还 / 记录查询
基础档案14分类 / 库位(含收纳说明)/ 供应商目录查询与增删改(增删改需 admin)、自定义字段定义查询、AI 收纳建议(ai_organize_location,分析库位物品给移库建议)
图片与资料14图片增删与排序,资料链接抓取 / 上传 / 多物品关联 / 重命名 / AI 整理 / 抓取重试
操作引导1各业务域操作规范与初始化五阶段引导话术下发(guide,纯文本不碰库;新用户配分类/位置、采购闭环、BOM 领用等流程防错要点)

列表类工具统一返回 {total, list} 结构;不含物品删除 / 并库 / 项目删除 / 系统设置等敏感操作。

状态与护栏说明:MCP 端点已上线(服务端原生提供,Claude Desktop / Cursor 等主流客户端已实测连通);MCP 属免费版权益(2026-09-30 起,物品条目 50 件内与专业版无差别;超限返回 LIMIT_EXCEEDED,消息自带购买直达链接);条目不够可到 portal/buy 购买专业版(不限条目);Skill 技能文件可免费取用,但经裸 REST 直调属专业版权益(feature.api),免费版权益的 REST Token 调用返回 403 EDITION_REQUIRED。写工具内置护栏:报废出库与基础档案(分类 / 库位 / 供应商)增删改需 admin 角色、流水冲正不开放给智能体(记错请登录界面操作);注意 MCP 的 update_item 为部分更新语义(REST 的 PUT /items/{id} 是全量语义)。

各工具接入配置

所有 MCP 客户端接入都只需要三样东西:

  • 服务地址:http://你的实例:8066/api/mcp(只读加 ?mode=readonly);
  • 请求头:Authorization: Bearer xmt_你的Token(在「设置 → API Token」创建,见 上文);
  • 类型:HTTP / Streamable HTTP(不要选 stdio / 本地命令类型)。

地址必须是运行客户端的那台机器能访问到的地址。以下示例统一用演示站 https://imsdemo.miaoking.com——登录演示站后在「设置 → API Token」创建 Token,即可直接连着试用;自建实例则填你的实例地址:同局域网客户端填 NAS / 电脑的内网 IP(如 192.168.1.10:8066),客户端装在实例本机才可用 127.0.0.1,并替换成你的实际地址与 Token。

Claude Desktop(桌面版 · 已实测连通)

  1. 打开配置文件:设置 → 开发者 → 编辑配置,或直接编辑 %APPDATA%\Claude\claude_desktop_config.json(Windows)/ ~/Library/Application Support/Claude/claude_desktop_config.json(macOS);
  2. 加入如下配置后完全退出并重启 Claude Desktop;
  3. 新对话里点输入框的工具图标,应能看到「xianmu-ims」的 67 个工具。
{
  "mcpServers": {
    "xianmu-ims": {
      "url": "https://imsdemo.miaoking.com/api/mcp",
      "headers": { "Authorization": "Bearer xmt_你的Token" }
    }
  }
}

Claude Code(命令行)

在项目目录执行一条命令即可(全局可用加 --scope user):

claude mcp add --transport http xianmu-ims "https://imsdemo.miaoking.com/api/mcp" \
  --header "Authorization: Bearer xmt_你的Token"

# 验证:列出已接入的 MCP 与工具
claude mcp list

Cursor(已实测连通)

  1. 设置 → MCP & Integrations,点「New MCP Server」,Cursor 会打开 mcp.json;
  2. 填入与 Claude Desktop 相同结构的配置:
{
  "mcpServers": {
    "xianmu-ims": {
      "url": "https://imsdemo.miaoking.com/api/mcp",
      "headers": { "Authorization": "Bearer xmt_你的Token" }
    }
  }
}

保存后回到 MCP 列表,xianmu-ims 显示绿色圆点即连接成功。Agent 模式下直接对话即可。

Qoder(同源配置,未逐一实测)

Qoder 同样采用 mcpServers JSON 结构:在客户端的 MCP 设置中添加服务,或直接在项目根目录放 .mcp.json,内容与上面 Cursor 的配置完全一致(入口名称随版本可能不同,认准「MCP / 工具」设置项即可)。

WorkBuddy(已实测全部工具连通)

  1. 左侧导航「专家 · 技能 · 连接器」→「连接器」,进入连接器页后点「自定义连接器」(或在「MCP 服务管理」弹窗右上角点「+ 添加 MCP」);
  2. WorkBuddy 采用标准 mcpServers JSON 配置(配置文件路径 %USERPROFILE%\.workbuddy\mcp.json,在编辑器里直接修改),填入下面的内容并保存;
  3. 回到「MCP 服务管理」列表:xianmu-ims 显示绿点、工具全部显示「已启用」(当前版本 67 个)即接入成功;列表里可随时用开关启用 / 停用、刷新或删除。
{
  "mcpServers": {
    "xianmu-ims": {
      "url": "https://imsdemo.miaoking.com/api/mcp",
      "headers": { "Authorization": "Bearer xmt_你的Token" },
      "disabled": false
    }
  }
}

提示:列表页的「MCP Hub」是服务市场入口,与本接入无关;「连接器」页的搜索框用于检索已有连接器,自定义接入走「自定义连接器」按钮。

ZCode 及其他编码类客户端

ZCode 等编码类 Agent 客户端普遍兼容同一套 mcpServers JSON:在对应的 MCP 配置文件或客户端设置里添加同构配置即可。若客户端不支持远程 HTTP 型 MCP,可改用 Skill 方式——把 xianmu-ims 技能文件夹复制到其技能目录(如 ~/.claude/skills/、.zcode/skills/),Agent 会按技能文件走 REST API 操作库存,效果等价(注意:免费版权益下裸 REST 调用属专业版权益,免费版请优先使用 MCP 方式)。

Cherry Studio 等对话类客户端(同源配置,未逐一实测)

「设置 → MCP 服务器 → 添加」:类型选流式 HTTP(Streamable HTTP),URL 填服务地址,请求头填 Authorization: Bearer xmt_你的Token,开启后即可在对话中直接调用库存工具。

接入后怎么验证

  1. 客户端工具列表里出现「xianmu-ims」的 67 个工具(search_items、inbound、create_project 等);
  2. 先试只读问题:「现在有多少条低库存预警?」;
  3. 需要放开写入时,把地址换成完整模式重新连接;不确定就让 AI 先用只读跑几天。

接入常见问题

现象原因与处理
401 AUTH_REQUIREDToken 写错、请求头漏了 Bearer 前缀、或 Token 已被停用——到设置页启用或重建,并核对请求头
403 EDITION_REQUIRED当前授权不含开放 API 权益(裸 REST / Webhook 属专业版;MCP 不受此限,免费版同样可用)
403 LIMIT_EXCEEDED免费版权益物品条目已达 50 件上限(新建档类操作,查询与已有物品出入库不受限):删减条目,或到 portal/buy 购买专业版(不限条目)
连接不上 / 超时客户端所在机器访问不到实例地址:同局域网确认 IP 与端口(默认 8066)、实例防火墙放行;跨公网建议 Nginx 反代 + HTTPS,不要明文暴露公网
客户端连上但没有工具检查地址是否为 /api/mcp 且类型为 HTTP / Streamable HTTP(误选 stdio / SSE 旧类型会失败);重启客户端再试
429 RATE_LIMITED超 60 次/分限流:让 AI 少分页、一次多问;服务端 api.rate_limit_per_min 可调
报废出库 / 分类·库位·供应商增删改返回 403均仅 admin 角色可执行(Token 继承账号角色),换管理员账号签发的 Token
演示站连上但写不了演示实例强制只读模式,属正常保护;请在自己的实例上体验完整能力

错误码

HTTPcode含义与处理
401—未认证:Token 缺失 / 无效 / 已停用
403EDITION_REQUIRED当前授权不含开放 API 权益(裸 REST / Webhook 需专业版;MCP 免费版可用)
404—资源不存在(物品 / 任务 / 位置 id 有误)
409DUPLICATE_ITEM同型号 + 类型已建档;确认非重复加 force: true
409OUT_OF_STOCK库存不足,出库被拦截
409CONFLICT状态不允许该操作(如确认非 active 预警)
422—参数校验失败,details 里有字段级说明
429RATE_LIMITED超 60 次/分限流,稍后重试或合并请求

接口报错、文档没讲清、想要新能力:提交表单(无需登录);集成方案咨询请联系客服(客服邮箱 kf@wwzu.com)。