数据范围与授权
公开 MCP 不需要鉴权。本文说明默认能读到什么、带凭证能多读到什么,以及这个服务不做哪些事。
默认:公开读
不传 Authorization 请求头时,服务以游客身份读取,返回的是任何人扫这张码都能看到的内容——就是用手机扫码后页面上显示的那些。
这是当前稳定可用的路径,也是默认推荐的接入方式。不需要申请,不需要配置。
扩展:授权读
传入请求头后,服务会把令牌透传给后端,按令牌对应的身份放开非公开内容:
Authorization: Bearer <草料 JWT>注意:这里用的不是开放平台的 API Key,两者不通用。API Key 请用于开放平台 MCP。
草料 JWT 的对外获取流程尚未开放,开放后会在本页更新获取方式。在此之前,读取组织数据请走开放平台 MCP。
公开 MCP 本身不校验凭证,也不解析组织归属,这些判定都在后端完成。
只读契约
服务在每次 entity_get 的返回里都会声明本次遵守的边界:
{
"contract": {
"profile": "read-only-public",
"rules": {
"readOnly": true,
"publicOnly": true,
"singleOrgView": true,
"actionsExecutable": false
}
}
}| 规则 | 含义 |
|---|---|
readOnly | 5 个工具全部只读,没有任何写入能力 |
publicOnly | 本次返回只包含公开内容(授权读时该值会相应变化) |
singleOrgView | 一次调用只看一个组织范围内的数据,不跨组织聚合 |
actionsExecutable | 操作只列出、不执行 |
公开 MCP 不支持提交记录、修改内容或变更状态。 entity_actions_list 会告诉你这张码上有哪张表单可以填,并给出 humanUrl,真正的填写要由人在草料页面上完成。需要写入能力时,用开放平台 MCP。
数据新鲜度
游客请求的结果会缓存,缓存时间为 120 秒。也就是说,一条记录刚提交完,通过公开读最长可能有 2 分钟看不到。带凭证的请求不走这层缓存。
如果你的场景对实时性敏感,需要在提示词或产品说明里告诉用户这一点,不要让 agent 把「查不到」直接说成「没有」。
跨组织
一次调用只能读到该二维码所属组织范围内的数据,无法聚合多个组织。
常见问题
不带凭证查一张非公开的码,会返回什么?
返回该码的公开部分。如果这张码整体不公开,会返回错误而不是空对象。不用空对象,是为了保住字段语义:缺席字段只表示「未跟踪」,永远不表示「没有」。
同一张码,公开读和授权读的字段结构一样吗?
一样。差别在于字段有没有值,不在于字段在不在。按公开读写的代码不需要为授权读改结构。