You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure API Manager中MCP Server未传递POST请求体问题排查

Azure APIM MCP Server POST请求体丢失问题排查及解决

可能原因及对应解决方案

1. MCP工具定义未配置请求体映射

MCP Server不会自动将用户填写的表单参数组装成后端API需要的JSON请求体,必须在工具定义里明确配置requestTemplate,把参数映射到请求体结构中。

示例正确的工具定义片段:

"tools": [
  {
    "name": "calculator",
    "description": "执行加减乘除运算",
    "parameters": [
      {
        "name": "number1",
        "description": "第一个运算数字",
        "type": "integer",
        "required": true
      },
      {
        "name": "number2",
        "description": "第二个运算数字",
        "type": "integer",
        "required": true
      }
    ],
    "requestTemplate": {
      "method": "POST",
      "url": "{{your-backend-api-url}}",
      "headers": {
        "Content-Type": "application/json"
      },
      "body": {
        "number1": "{{number1}}",
        "number2": "{{number2}}"
      }
    }
  }
]

这里的{{number1}}和{{number2}}必须和parameters里定义的参数名完全一致,同时指定Content-Type确保后端能解析JSON。

2. APIM入站策略清空或篡改了请求体

如果APIM配置了入站策略,比如错误的set-body操作,会直接清空请求体。检查你的APIM策略,确保逻辑是根据MCP传递的参数生成正确的JSON请求体,而不是丢弃内容。

示例正确的入站策略(如果需要手动处理):

<policies>
  <inbound>
    <base />
    <set-body>@{
        var requestBody = context.Request.Body.As<JObject>(true);
        var number1 = requestBody["number1"]?.ToString();
        var number2 = requestBody["number2"]?.ToString();
        return JsonConvert.SerializeObject(new { number1 = int.Parse(number1), number2 = int.Parse(number2) });
    }</set-body>
    <set-header name="Content-Type" exists-action="override">
      <value>application/json</value>
    </set-header>
  </inbound>
  <!-- 其他策略 -->
</policies>

如果不需要额外处理,确保没有会修改或清空请求体的策略。

3. MCP参数类型与后端API不匹配

如果MCP工具定义里的参数类型设为string,但后端API期望integer类型,可能导致参数无法正确序列化到请求体中。务必保证parameters里的type字段和后端API的请求体字段类型一致(比如integer对应数字类型)。

4. 请求头未正确设置Content-Type

即使请求体格式正确,如果没有设置Content-Type: application/json,后端API可能无法识别请求体格式,导致解析失败。在requestTemplate的headers里必须明确添加这个头。


内容的提问来源于stack exchange,提问作者Chris Hammond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:28:21