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 中定义的参数:


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

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,稍后即可生效。