问 Claude 还剩多少面粉:通过 MCP 使用带计量的库存
当 AI 助手通过内置 MCP 服务器读取 您的库存时,它拿到的是一份带名称、成本和计数的物品列表。此前,计数是 一个不带单位的整数,对椅子来说没问题,对面粉来说就很别扭。问一句“还剩多少面粉”, 诚实的回答是“12”,然后再猜一下这指的是袋、公斤还是磅。
有了计量单位,服务器返回的每个 数量都是小数,每个物品都带着自己的单位。助手再也不用猜了。 下面是这在一段对话里的样子,以及为喜欢刨根问底的人准备的 工具变化说明。
面包房的一个早晨
这段交流中没有任何地方需要换算或追问。助手从同一个物品读到
12.75 和 kg,以公斤读取装配件组件,并以同一单位把新的
存货值写回去。物品的历史显示了那笔 4.5 kg 的扣减,旁边有一个机器人标记,
和任何其他通过 MCP 做出的更改一样。
只有带了单位才说得通的问题
- “哪些以升计的物品低于警告水平?”
- “现在的面粉存货能做多少个面包?”(助手读取装配件,或者自己做除法)
- “假设一袋是 25 kg,把再订货建议换算成袋。”应用不做换算,但助手乐意做,而且会说明这一点。
- “创建一个叫铸造树脂的物品,以 ml 追踪,并把它的警告水平设为 250。”
- “我们收到 3 盘电缆,每盘 100 m。给 6 mm 铠装电缆加 300 m。”
通用的问题清单仍然 适用;上面这些是在单位随数字一起传递之前根本无法答好的 问题。
工具中有哪些变化
如果您从自己的客户端或脚本使用 MCP 服务器,有三处不同。
-
数量是小数。
get_inventory和edit_inventory_item上的inventoryCount、onOrderCount、toShipCount和damagedCount接受并返回像12.75这样的值。整数 客户端照常工作;12的计数仍然是12。 -
物品带有
unit。对按件计数的物品它是null, 对带计量的物品它是一个短标签(kg、lb、ml、ft,或者 您输入的任何内容)。edit_inventory_item可以设置它,create_new_inventory_item接受一个可选的unit。 -
相关工具跟进。
create_order上的订单行、单件工具上的 存货行以及get_reorder_suggestions都报告小数,而再订货建议 会包含物品的单位,所以建议的 50 读作 50 kg。
工具描述也把这些都说明了,这比听起来更重要:助手在调用工具之前会先读 描述,所以它一开始就知道带计量物品上的计数以该物品的单位计, 而且设置单位不会换算任何东西。
它不做什么
服务器从不在单位之间换算。如果您让助手“把面粉改成 磅”,它会改标签,而且如果它足够细心,会告诉您数字没有 变。这与应用对人适用的规则相同,理由也相同:悄无声息的换算是 让 22 kg 面粉实际上只有 10 kg 的绝佳途径。请明确要求换算, 让助手在对话中做算术,然后确认新的计数。