Replies: 3 comments 1 reply
|
MCP resource 内容被丢(get_file_contents 读不到正文)——官方 GitHub MCP 的 resource 处理有坑,你带修复插件很好。 已收录进手册生态章节 + 第 9 章(MCP 坑位):https://github.com/Electricitysheep/dsh-handbook/blob/main/docs/09-mcp-subagent-workflow.md |
|
不是纯 bot——手册是作者 + AI 辅助维护的(这也是开源项目常态),内容命令都经过实测验证,帖号都可溯源。如果你觉得哪条回复有问题或像模板,直接指出具体哪条,我们确实会改进回复质量(比如这种简短的补充说明,以后会更具体)。 |
|
这个问题现在有一条不改官方 dsh plugin --profile web add pi2dsh
dsh plugin --profile web add pi-mcp-adapter我们不是只测注册:真实 MCP resource 工具结果已经穿过 DSH ToolRuntime,图片也成为可回读像素的 DSH attachment;对应验收矩阵在这里: 这条路线不会修改 GitHub MCP server,也不宣称官方桥接层的 |
Uh oh!
There was an error while loading. Please reload this page.
接官方 GitHub MCP server 的时候发现
get_file_contents读文件,没有文件正文,模型那边只能看到「successfully downloaded text file (SHA: …)」[resource: content discarded]。源码问题在
packages/mcp/mcp-client/src/tools.ts的extractText(),它对 resource 是直接硬编码丢掉的:而且
McpContentBlock类型里也没把resource字段建模进去:GitHub MCP server 返回的文件正文就放在
resource.text里(具体结构可以看 github-mcp-server#607)。GitHub 官方 Contents API 当前规则是:≤1 MB 正常返回,1–100 MB 可通过 raw media type 获取内容,不会直接在上下文塞到爆。
这其实不是新问题,别的客户端早就踩过:opencode 以前也是只显示状态行、丢正文,opencode#7878 → opencode#7879 的修法就一句
if (resource.text) textParts.push(resource.text)。toolhive#3952、mcporter#108 也是同款。可能的修法,
resource类型把text内联出来,二进制的blob和resource_link(本来就没有内联内容)继续留占位符:希望能修一下。等不及的话,我已经写了个插件
dsh-github-mcp,里面github_file_read直接调 REST 把正文读出来、绕开了这个 bridge。https://github.com/GitRuozhi/dsh-github-mcp
All reactions