ai agent的ai无法理解/获取到mcp返回的Structured Context数据

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

参数

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

响应

{
  "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": "1.xlsx",
  "limit": 5,
  "searchKey": "id=12002000 and lv=1",
  "sheetName": "11"
}

响应

{
  "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调用内容

1 个赞

看出问题啦~从你提供的返回结果来看,AI 作为 MCP 客户端,默认只会去读取并解析 content 数组里的内容。

在你的返回里,content 里面只写了一句文本 "搜索到 1 条匹配记录...",而真正的数据被放在了外层平级的 structuredContent 字段中。因为具体数据没在 content 里,AI 就没看到它们,所以才会去尝试用别的方法(比如 dryRun)验证实际值。

建议你调整一下 MCP Server 的代码,把需要 AI 理解的具体数据(可以序列化成 JSON 字符串)直接塞进 content 数组的 text 字段里,这样 AI 就能一眼看到并处理啦~

:paperclip: 参考文档:MCP 官方文档

1 个赞