Skip to content

[Bug] yuque_get_resource / yuque_update_resource 参数名错误:发送 src 而非 resource_id,导致 400 #83

Description

@Waaangjl

问题描述

yuque_get_resourceyuque_update_resource 两个工具(board 资源)在调用真实语雀 API 时必现 400 错误,无法正常使用,即便传入的 resource_id 是刚用 yuque_create_resource 创建出来、确定存在的合法 ID。

Tool execution failed: resource_id is required (Bad request — check the parameters)

复现步骤

  1. yuque_create_resource 创建一个 board(mindmap/flowchart 均可),拿到返回的 board.resource.id,例如 abc12
  2. 立刻用同一个 resource_id: "abc12" 调用 yuque_get_resource(或 yuque_update_resource)。
  3. 必现报错 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/boardsPUT /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: resourceIdget/update 两处调用都受影响)。

环境

  • yuque-mcp 版本:1.0.0(npm 最新版)
  • 复现方式:通过 MCP 工具调用 + 裸调 REST API 双重验证

感谢!这个 MCP server 其他部分(create_doc/create_resource 等)都很好用,board 资源(mindmap/flowchart)也确认能正常创建和渲染,唯独这两个读/改接口目前完全不可用。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions