「 AI 」 十一月 08, 2026

MCP 透传请求头配置

文章字数 5.2k 阅读约需 5 mins. 阅读次数

API => MCP Server

API 转 MCP Server 过程可参考:Harness 低成本调用存量 API 。

假设 API 访问权限需通过请求头传递:

curl -i -X POST 'http://host:port/api/idx' \ 
  -H 'Content-Type: application/json' \ 
  -b 'XSRF-TOKEN=xxxxx;SESSION=xxxxx' \ 
  -H 'X-XSRF-TOKEN: xxxxx' \ 
  -d '{"idxName":"MCP测试指标","idxDesc":""}' 

Nacos v3.2.2 中,不支持 在新版控制台配置 argsPosition 参数,可选择升级到 v3.3.0,但实测不为每个工具配置这个参数也能透传请求头。

即,只需在 Harness 中配置 MCP Server 时,添加请求头即可,Nacos 和 Higress 中无需额外配置。

swagger2openapi

可使用 swagger2openapi 工具,将 Swagger 2.0 JSON 文档转换为 OpenAPI 3.0 格式:

# Install(node 12.x)
$ npm install -g swagger2openapi
# Convert
$ swagger2openapi api-docs.json -o openapi.json

如遇 S2OError: Could not resolve reference #/definitions/xxx 报错,可添加 --warnOnly 参数。

如遇 S2OError: (Patchable) parameter.type is mandatory for non-body parameters 报错,可添加 --patch 参数。

swagger2openapi --warnOnly --patch api-docs.json -o openapi.json

得到的 openapi.json 在 Nacos 中导入时可能会报错:

Tool `pageUsingGET_9` has invalid JSON parameters:
        - Value is not accepted. Valid values: "array", "boolean", "integer", "null", "number", "object", "string".

原因是转换后的 JSON 中,对于对象类型的参数,type 填写的是 ref,需要调整成 object:

"queryConditions": {
  "description": "查询条件",
  "type": "ref"
}

=>

"queryConditions": {
  "description": "查询条件",
  "type": "object"
}

另外,如果 openapi.json 中包含的接口数量过多,可能会导致在 Nacos 中导入后保存时报 413 Content Too Large 错误,进而无法保存 MCP Server。可选择要使用的接口精简工具数量之后再导入 MCP Server 中。

Harness 中配置 MCP

VS Code

Add MCP servers in VS Code 提到 MCP 的配置文件可以放置在不同位置,以作用于不同的范围。以放在 ./.vscode/mcp.json 为例:

{
    "servers": {
        "xxx/idx-mcp": {
            "url": "http://127.0.0.1:8082/mcp/idx-mcp",
            "type": "http",
            "headers": {
                "Cookie": "XSRF-TOKEN=${input:xsrfToken};SESSION=${input:idxSession}",
                "X-XSRF-TOKEN": "${input:xsrfToken}"
            }
        }
    },
    "inputs": [
        {
            "type": "promptString",
            "id": "xsrfToken",
            "description": "idx-mcp 的 xsrfToken 值",
            "password": true
        },
        {
            "type": "promptString",
            "id": "idxSession",
            "description": "idx-mcp 的 SESSION 值",
            "password": true
        }
    ]
}

直接用 VS Code 打开 mcp.json 文件,点击 Start 启动 MCP 服务后会弹出输入框,要求输入 inputs 中定义的参数:

start

fill

过期之后可以在密文上点击浮动按钮清理后重新输入:

clear

DeepSeek Harness

~/.dsh/profiles/web/cordis.patch.yml:

- insert:
    - id: streamable-http-mcp-test
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: test
        transport: streamable-http
        url: http://127.0.0.1:8082/mcp/idx-mcp
        headers:
          Cookie: "XSRF-TOKEN=xxxxx;SESSION=xxxxx"
          X-XSRF-TOKEN: "xxxxx"

过期之后可直接修改配置文件中密文内容,无需重启 dsh,稍后即可生效。

0%