问题描述
yuque_get_resource 和 yuque_update_resource 两个工具(board 资源)在调用真实语雀 API 时必现 400 错误,无法正常使用,即便传入的 resource_id 是刚用 yuque_create_resource 创建出来、确定存在的合法 ID。
Tool execution failed: resource_id is required (Bad request — check the parameters)
复现步骤
- 用
yuque_create_resource 创建一个 board(mindmap/flowchart 均可),拿到返回的 board.resource.id,例如 abc12。
- 立刻用同一个
resource_id: "abc12" 调用 yuque_get_resource(或 yuque_update_resource)。
- 必现报错
resource_id is required。
根因定位
src/services/yuque-client.ts 里的 toBoardResourcePayload():
function toBoardResourcePayload(data) {
const { resource_id: resourceId, ...payload } = toResourcePayload(data);
// The public v2 board API names this field src, but expects the raw resource id.
return {
...payload,
...(resourceId !== undefined && { src: resourceId }),
};
}
这里把 resource_id 重命名成了 src 再发给 GET /yfm/boards 和 PUT /yfm/boards。但实测真实接口要的字段名就是 resource_id,不是 src。
用同一个已确认存在的 resource_id 直接裸调接口对比(X-Auth-Token 省略):
# 当前代码实际发送的参数(错误)
curl -H "X-Auth-Token: $TOKEN" "https://www.yuque.com/api/v2/yfm/boards?doc_id=<doc_id>&src=<resource_id>"
# => {"status":400,"message":"resource_id is required"}
# 修正参数名后(正确,返回的是"找不到该 id"这一层更深的校验,说明字段名本身被接受了)
curl -H "X-Auth-Token: $TOKEN" "https://www.yuque.com/api/v2/yfm/boards?doc_id=<doc_id>&resource_id=<resource_id>"
# => 对存在的 id 返回完整 board 数据;对不存在的 id 返回 {"status":400,"message":"Unable to find a board card for resource_id \"<id>\"."}
两次请求唯一的区别就是参数名 src vs resource_id,报错内容完全不同,可以确认就是参数名映射错了。
期望修复
toBoardResourcePayload() 里把 src: resourceId 改成 resource_id: resourceId(get/update 两处调用都受影响)。
环境
yuque-mcp 版本:1.0.0(npm 最新版)
- 复现方式:通过 MCP 工具调用 + 裸调 REST API 双重验证
感谢!这个 MCP server 其他部分(create_doc/create_resource 等)都很好用,board 资源(mindmap/flowchart)也确认能正常创建和渲染,唯独这两个读/改接口目前完全不可用。
问题描述
yuque_get_resource和yuque_update_resource两个工具(board 资源)在调用真实语雀 API 时必现 400 错误,无法正常使用,即便传入的resource_id是刚用yuque_create_resource创建出来、确定存在的合法 ID。复现步骤
yuque_create_resource创建一个 board(mindmap/flowchart 均可),拿到返回的board.resource.id,例如abc12。resource_id: "abc12"调用yuque_get_resource(或yuque_update_resource)。resource_id is required。根因定位
src/services/yuque-client.ts里的toBoardResourcePayload():这里把
resource_id重命名成了src再发给GET /yfm/boards和PUT /yfm/boards。但实测真实接口要的字段名就是resource_id,不是src。用同一个已确认存在的
resource_id直接裸调接口对比(X-Auth-Token省略):两次请求唯一的区别就是参数名
srcvsresource_id,报错内容完全不同,可以确认就是参数名映射错了。期望修复
toBoardResourcePayload()里把src: resourceId改成resource_id: resourceId(get/update两处调用都受影响)。环境
yuque-mcp版本:1.0.0(npm 最新版)感谢!这个 MCP server 其他部分(
create_doc/create_resource等)都很好用,board 资源(mindmap/flowchart)也确认能正常创建和渲染,唯独这两个读/改接口目前完全不可用。