Skip to content
English

数据范围与授权

公开 MCP 不需要鉴权。本文说明默认能读到什么、带凭证能多读到什么,以及这个服务不做哪些事。

默认:公开读

不传 Authorization 请求头时,服务以游客身份读取,返回的是任何人扫这张码都能看到的内容——就是用手机扫码后页面上显示的那些。

这是当前稳定可用的路径,也是默认推荐的接入方式。不需要申请,不需要配置。

扩展:授权读

传入请求头后,服务会把令牌透传给后端,按令牌对应的身份放开非公开内容:

Authorization: Bearer <草料 JWT>

注意:这里用的不是开放平台的 API Key,两者不通用。API Key 请用于开放平台 MCP

草料 JWT 的对外获取流程尚未开放,开放后会在本页更新获取方式。在此之前,读取组织数据请走开放平台 MCP

公开 MCP 本身不校验凭证,也不解析组织归属,这些判定都在后端完成。

只读契约

服务在每次 entity_get 的返回里都会声明本次遵守的边界:

json
{
  "contract": {
    "profile": "read-only-public",
    "rules": {
      "readOnly": true,
      "publicOnly": true,
      "singleOrgView": true,
      "actionsExecutable": false
    }
  }
}
规则含义
readOnly5 个工具全部只读,没有任何写入能力
publicOnly本次返回只包含公开内容(授权读时该值会相应变化)
singleOrgView一次调用只看一个组织范围内的数据,不跨组织聚合
actionsExecutable操作只列出、不执行

公开 MCP 不支持提交记录、修改内容或变更状态。 entity_actions_list 会告诉你这张码上有哪张表单可以填,并给出 humanUrl,真正的填写要由人在草料页面上完成。需要写入能力时,用开放平台 MCP

数据新鲜度

游客请求的结果会缓存,缓存时间为 120 秒。也就是说,一条记录刚提交完,通过公开读最长可能有 2 分钟看不到。带凭证的请求不走这层缓存。

如果你的场景对实时性敏感,需要在提示词或产品说明里告诉用户这一点,不要让 agent 把「查不到」直接说成「没有」。

跨组织

一次调用只能读到该二维码所属组织范围内的数据,无法聚合多个组织。

常见问题

不带凭证查一张非公开的码,会返回什么?

返回该码的公开部分。如果这张码整体不公开,会返回错误而不是空对象。不用空对象,是为了保住字段语义:缺席字段只表示「未跟踪」,永远不表示「没有」。

同一张码,公开读和授权读的字段结构一样吗?

一样。差别在于字段有没有值,不在于字段在不在。按公开读写的代码不需要为授权读改结构。

下一步