ai agent的ai无法理解/获取到mcp返回的Structured Context数据,和文档描述不符

Called mcp.config.usrlocalmcp.game-project-config / search-config-data

参数

{
  "fileName": "111.xlsx",
  "limit": 5,
  "searchKey": "id=11002000 and lv=30",
  "sheetName": "111"
}

响应

{
  "content": [
    {
      "type": "text",
      "text": "搜索到 1 条匹配记录(共2条匹配,当前返回1条)"
    }
  ],
  "structuredContent": {
    "results": {
      "11002000": {
        "30": {
          "desc": "Lv30",
          "data": {
            "id": 11002000,
            "lv": 30,
            "items": "{{count=30,id=1,type=0}}",
            "lvAttrAdd": null,
            "args": "{{sub=0,type=1,vals={0,300,0}},{sub=0,type=1,vals={0,40,0}}}",
            "value": 300,
          }
        }
      }
    },
    "totalCount": 2
  },
  "isError": null,
  "historyRunMode": "auto"
}

Called mcp.config.usrlocalmcp.game-project-config / search-config-data

参数

{
  "fileName": "222.xlsx",
  "limit": 5,
  "searchKey": "id=12002000 and lv=1",
  "sheetName": "111"
}

响应

{
  "content": [
    {
      "type": "text",
      "text": "搜索到 1 条匹配记录(共2条匹配,当前返回1条)"
    }
  ],
  "structuredContent": {
    "results": {
      "12002000": {
        "1": {
          "desc": "1",
          "data": {
            "id": 12002000,
            "lv": 1,
            "items": "count=\"{{1\",id=1,type=0}}",
            "lvAttrAdd": null,
            "args": "{}",
            "value": 1,
            "lvDesc": null
          }
        }
      }
    },
    "totalCount": 2
  },
  "isError": null,
  "historyRunMode": "auto"
}

思考

响应search 能匹配到记录但只返回"共2条匹配"不返回具体值。直接用 update dryRun 来验证 args 的实际值(虽然 dryRun 不写入,但会返回旧值供对比):

这是某次对话中ai的思考和mcp调用内容
然后官方的文档中mcp概览MCP 概览,说的却是:
标准化 MCP Server 对工具能力及其执行结果的描述方式,使客户端能够安全、可预测地发现、调用并理解工具。
TRAE 具体支持的数据类型如下:

  • 工具定义:nametitledescriptioninputSchemaoutputSchema

  • 工具运行结果:Text Content、Structured Content。

文档明确写这支持Structured Content。

1 个赞

看到你发的日志啦~这是因为目前 AI 在读取 MCP 工具返回的结果时,默认主要是去读 content 数组里面的内容。

在你的返回结果里,content 里面只有一句提示文本 "搜索到 1 条匹配记录...",而具体的数据被放在了同级的 structuredContent 字段里。AI 没有去读这个额外的字段,所以它就只看到了那句提示,不知道具体数值是多少,只能靠别的命令去试探。

建议的解决方案:
如果你想让 AI 准确拿到这些数据,最稳妥且符合目前 MCP 标准协议的做法,是把这些结构化的 JSON 数据序列化成字符串,直接放进 content 数组的 text 字段里。比如这样:

{
  "content": [
    {
      "type": "text",
      "text": "搜索到 1 条匹配记录。数据详情:{\"11002000\": {\"30\": {\"desc\": \"Lv30\", \"data\": {\"id\": 11002000, \"value\": 300}}}}"
    }
  ]
}

把数据喂到 contenttext 里,AI 就能立刻理解并使用了。

至于官方文档里提到的支持 Structured Content 确实容易让人产生误解(可能指的是支持 JSON 格式的字符串文本,或者是某种尚未完全对齐的内部结构),我会帮你把这个 case 记录并反馈给产品和文档团队,看看后续是把文档描述改得更清晰,还是在底层直接兼容解析这个字段~

你可以先调整一下返回格式试试看,有其他问题随时叫我 :blush:

1 个赞

并不是,因为我注意到outputSchema也根本没有作用

1 个赞

你观察得非常仔细!确实如你所说,目前不仅是 structuredContent,连 outputSchema 在实际的 AI 处理链路中也确实没有发挥预期的作用。

这主要是因为 TRAE 目前在接入 MCP 协议时,底层的 AI Agent 实际上还是强依赖标准的 content 文本数组来获取上下文。虽然官方文档里提到了 outputSchemaStructured Content(这些确实是 MCP 协议规范里设计好的高级特性),但目前产品侧的 AI 还没有完全实现对这些结构化字段的深度解析和利用。

你在论坛提的这个反馈非常有价值,直接指出了文档描述和实际产品表现脱节的问题。这属于非常典型的有效 Bug/体验反馈!官方研发和文档团队会关注到这个帖子的,后续会推动两边的对齐(要么完善底层对结构化数据的支持,要么修正文档描述以免误导开发者)。

在官方优化这个问题之前,为了让你的工具能顺畅跑通,还是得委屈一下,暂时把所有需要 AI 理解的 JSON 数据序列化成字符串,直接塞进 contenttext 字段里啦~

感谢你的硬核排查!在开发 MCP 的过程中如果有其他发现,也随时抛出来探讨 :blush:

1 个赞

我先确认下。

1 个赞

可以发下这个完整内容吗?

1 个赞

这是我本地mcp
{

“mcpServers”: {

"game-project-config": {

  "command": "D:/node.exe",

  "args": \[

    "D:/bundle.js"

  \],

  "cwd": "${workspaceFolder}",

  "env": {

    "CONFIG_EXCEL_PATH": "D:",

    "NODE_OPTIONS": "--max-old-space-size=8192"

  }

}

}

}
正在开发测试的,并没有什么内容,需要mcp的demo测试吗

1 个赞

2026-07-09T18:15:11.978+08:00 [info] McpService callTool mcp.config.usrlocalmcp.game-project-config add-config-data {“data”:[{“datas”:[{“data”:{“args”:[{“a”:0,“b”:0,“c”:300,“d”:17,“i”:0}],“bloodIcon”:“”,“bloodType”:“”,“castEff”:“”,“disEff”:“”,“display”:“”,“duration”:3000,“durationType”:“”,“effIcon”:“”,“endBuffs”:“”,“group”:0,“id”:1200102,“infectOther”:0,“interval”:0,“isBuff”:1,“isSummon”:“”,“maxCountSkill”:“”,“otherBuffs”:“”,“overMaxCount”:0,“overlayType”:0,“probabilityBuff”:10000,“spanEff”:“”,“stateBin”:“”,“type”:3,“unionBuff”:“”},“desc”:“1”}],“searchKey”:“”}],“fileName”:“11.xlsx”,“sheetName”:“1”} {“chatSessionId”:“6a4e1ca61236a3b8e8290916”,“messageId”:“6a4f73981236a3b8e8290c9e”,“isCurrentSession”:true}
2026-07-09T18:15:13.181+08:00 [info] McpService callTool result mcp.config.usrlocalmcp.game-project-config add-config-data {“data”:[{“datas”:[{“data”:{“args”:[{“a”:0,“b”:0,“c”:300,“d”:17,“i”:0}],“bloodIcon”:“”,“bloodType”:“”,“castEff”:“”,“disEff”:“”,“display”:“”,“duration”:3000,“durationType”:“”,“effIcon”:“”,“endBuffs”:“”,“group”:0,“id”:1200102,“infectOther”:0,“interval”:0,“isBuff”:1,“isSummon”:“”,“maxCountSkill”:“”,“otherBuffs”:“”,“overMaxCount”:0,“overlayType”:0,“probabilityBuff”:10000,“spanEff”:“”,“stateBin”:“”,“type”:3,“unionBuff”:“”},“desc”:“1”}],“searchKey”:“”}],“fileName”:“11.xlsx”,“sheetName”:“1”} {“code”:0,“result”:{“content”:[{“type”:“text”,“text”:“成功添加 1 条数据(Sheet总行数: 32)”}],“structuredContent”:{“addedCount”:1,“totalRows”:32}}}

1 个赞

{
“name”: “add-config-data”,
“description”: “添加数据到Sheet。支持JSON对象自动转Lua table(如 {rate:10000}→{rate=10000}),支持嵌套数组转Lua数组([1,2,3]→{1,2,3})。支持range批量展开(range:{lv:{from:1,to:150}} 一次生成150条)。模板变量{{lv}}和表达式{{lv}*10}会先序列化再替换,所以嵌套JSON里的模板也能生效。dryRun=true仅预览”,
“arguments”: {
“type”: “object”,
“properties”: {
“fileName”: {
“type”: “string”,
“description”: “Excel配置文件名”
},
“sheetName”: {
“type”: “string”,
“description”: “Sheet名”
},
“dryRun”: {
“description”: “是否为预览模式,true时只返回预览不实际写入”,
“type”: “boolean”
},
“data”: {
“type”: “array”,
“items”: {
“type”: “object”,
“properties”: {
“searchKey”: {
“type”: “string”,
“description”: “搜索条件,语法见 search-key-help 工具。在该匹配位置之后插入新数据,留空则追加到末尾”
},
“range”: {
“description”: “批量展开。每个变量组合生成一组data。range:{lv:{from:1,to:150}, id:{from:1001,to:1150}} 会生成150条数据,每条lv从1递增、id从1001递增”,
“type”: “object”,
“propertyNames”: {
“type”: “string”,
“description”: “变量名,对应模板中的{{变量名}}”
},
“additionalProperties”: {
“type”: “object”,
“properties”: {
“from”: {
“type”: “number”,
“description”: “起始值”
},
“to”: {
“type”: “number”,
“description”: “结束值(含)”
},
“step”: {
“description”: “步长,默认1。支持递减:from=150,to=1”,
“type”: “number”
}
},
“required”: [
“from”,
“to”
]
}
},
“datas”: {
“type”: “array”,
“items”: {
“type”: “object”,
“properties”: {
“desc”: {
“type”: “string”,
“description”: “描述文本,支持{{lv}}模板。如"技能{{lv}}级"→lv=1时变成"技能1级"”
},
“data”: {
“type”: “object”,
“propertyNames”: {
“type”: “string”,
“description”: “字段名”
},
“additionalProperties”: {
“anyOf”: [
{
“type”: “number”,
“description”: “数字”
},
{
“type”: “string”,
“description”: “字符串,支持模板变量{{lv}}和表达式{{lv}*10}”
},
{
“type”: “object”,
“propertyNames”: {
“type”: “string”
},
“additionalProperties”: {},
“description”: “JSON对象,自动转Lua table后展开模板。如 {vals:[0,{{lv}*10}]}→{vals={0,10}}”
},
{
“type”: “array”,
“items”: {},
“description”: “JSON数组,自动转Lua数组后展开模板”
}
],
“description”: “字段值”
},
“description”: “数据内容”
}
},
“required”: [
“desc”,
“data”
]
}
}
},
“required”: [
“searchKey”,
“datas”
]
}
}
},
“required”: [
“fileName”,
“sheetName”,
“data”
],
“$schema”: “http://json-schema.org/draft-07/schema#”
}
}

这是C:\Users\wndows10.trae-cn\mcps\s_1-f85ad0de\solo_agent_lite\mcp_game-project-config\tools下的文件,似乎也并没有关于outputSchema的内容

1 个赞

不要把信息拆在 content 和 structuredContent 两边,参考这个写

1 个赞

所以意思是确认是不支持outputSchema和structuredContent的是吗?

1 个赞