【Azure APIM】通过 API Management 公开API为 MCP Server 的试验 (二)

简介: 本文详解如何将 Azure API 管理(APIM)中已有的 REST API(如 Echo API)快速配置为 MCP 服务器,涵盖创建步骤、VS Code 配置、常见连接错误(如 SSE 流终止)及关键规避方案——禁用全局响应日志有效负载记录,并建议仅暴露单个 GET 操作以确保稳定。

问题描述

在昨天的博文中“【Azure APIM】通过 API Management 公开现有 MCP Server 的试验 (一) ”,介绍了如何在APIM中配置MCP Server。接下来,将介绍,如何把APIM中已经存在的API转换为MCP Server呢?


问题解答

在APIM MCP的文档介绍中,有将APIM公开为MCP服务器的步骤,本文将根据这个步骤操作并进行验证。

登录 Azure 门户,进入目标 APIM 实例后,按以下步骤创建 MCP Server:

  1. 在左侧菜单中选择 APIs > MCP servers
  2. 选择 + Create MCP server
  3. 选择 Expose an API as an MCP server
  4. Backend MCP server 中,选择APIM的默认API(Echo API),并勾选全部的Operations (这里将产生一个隐藏错误)
  5. New MCP server 区域填写 APIM 中的 MCP Server 名称与描述,如 mcp echo server
  6. 可选地将 MCP Server 加入一个 Product。这样客户端便可以通过该 Product 的订阅密钥访问服务。
  7. 选择 Create,等待 APIM 创建完成。


动态展示图:

创建完成后,复制页面中的“MCP Server URL”,作为下一步在VS Code中配置MCP Server的URL。

 


在VS Code中添加MCP配置

可以通过命令面板执行 MCP: Add Server 添加服务器,也可以直接在工作区的 .vscode/mcp.json 中配置。

示例配置如下:


"my-mcp-server-echo": {

           "url": "https://xxxxxxxx.azure-api.cn/mcp-echo-server/mcp",

           "type": "http",

           "headers": {

               "Ocp-Apim-Subscription-Key": "xxxxxxxxxxxxxxxxxxx"

           }

       }


只是在启动MCP服务的时候,遇见了错误:


2026-08-04 21:00:31.984 [info] Starting server my-mcp-server-echo

2026-08-04 21:00:31.985 [info] Connection state: Starting

2026-08-04 21:00:31.987 [info] Starting server from LocalProcess extension host

2026-08-04 21:00:31.989 [info] Connection state: Running

2026-08-04 21:05:35.085 [info] Error connecting to https://xxxx.azure-api.cn/mcp-echo-server/mcp for async notifications, will retry

2026-08-04 21:05:35.086 [warning] Error reading SSE stream: TypeError: terminated

2026-08-04 21:05:35.091 [info] Connection state: Error Error sending message to https://xxxxx.azure-api.cn/mcp-echo-server/mcp: TypeError: fetch failed



这个错误的原因与已知的Bug有关:https://learn.microsoft.com/zh-cn/azure/api-management/export-rest-mcp-server#prerequisites

如果在 API Management 服务实例的全局范围(所有 API),通过 Application Insights 或 Azure Monitor 启用诊断日志记录,请将“前端响应”的“要记录的有效负载字节数”设置设定为 0。

此设置可防止在所有 API 中意外记录响应主体,并有助于确保 MCP 服务器的正常运行。

若要选择性地记录特定 API 的有效负载,请在 API 范围内单独配置设置,从而允许对响应日志记录进行有针对性的控制。

目前的解决办法是,不要选择所有的API,为测试把API转换为MCP Tools的功能,只需要选择一个 Get 接口用于实验。

  • 导航到APIM的MCP服务页面 -->  选择MCP服务的Tools页面。如下,只勾选 Retrieve Resource 操作作为测试。

测试MCP调用

在 GitHub Copilot Chat 中切换至 Agent 模式,输入“调用apim echo mcp服务的get接口,获取test资源”,并查看mcp的调用情况

 

参考资料

将 API 管理中的 REST API 公开为 MCP 服务器 : https://learn.microsoft.com/zh-cn/azure/api-management/export-rest-mcp-server

 



当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
1月前
|
存储 运维 安全
医疗内网纵深防御安全体系实战方案
本文剖析医疗内网“终端失控、边界模糊、数据泄露”三大痛点,结合等保2.0与《数据安全法》要求,提出以身份为核心、数据为资产的纵深防御方案:涵盖网络准入控制、终端全生命周期管理、安全数据交换、外设精细化管控等闭环措施,兼顾业务连续性与合规达标。
|
3月前
|
缓存 人工智能 NoSQL
大模型调用太贵?阿里云Tair语义缓存公测:命中即省
大模型成本黑洞在Output Token!Qwen/GPT-4o等模型输出Token价格是输入的4–6倍,且Prompt Cache无法复用。阿里云Tair AI Gateway推出语义缓存,通过向量检索识别语义相同请求,命中率最高达59.84%,F1准确率0.89,毫秒级返回,降本超47%。
581 0
|
架构师 中间件
阿里中间件首席架构师钟华:《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》新书出版(含试读PDF)!
阿里中间件首席架构师钟华:《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》新书出版!
38900 115
|
1月前
|
存储 人工智能 运维
从“看得见”到“自己治”:畅捷通可观测与智能运维实践
畅捷通基于阿里云云监控 2.0 与 STAROps 推进智能运维改造,通过五层一体化可观测体系与 UModel 运维数字孪生构建数据底座,叠加智能巡检、故障自愈与容量预测三大 AI 场景闭环,使运维模式实现由"以人为主"向"AI 为主、人工审核"的范式转换。
|
1月前
|
消息中间件 存储 安全
RocketMQ 高可用创新论文入选 ACM FSE:无需复制业务数据,实现有状态服务秒级接管
面向云上有状态服务高可用,提出无需额外业务数据复制的秒级故障接管机制,在不牺牲成本和稳态性能的前提下,实现云上有状态消息服务的快速恢复。
|
2月前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
4499 147
|
2月前
|
人工智能 安全 调度
一周上线!信永中和基于阿里云 AgentTeams + AI 网关打造多智能体 AI 平台
信永中和携手阿里云,基于 AgentTeams 与 AI 网关搭建企业级多智能体平台,一周内完成上线!本文将完整介绍这段从知识问答走向任务执行的企业 AI 落地路径。
480 11
|
11天前
|
监控 NoSQL Unix
【Azure Redis】Redis 指标 ClockSkewSeconds 解读:含义、读数与时钟偏差的影响
《ClockSkewSeconds 解析》:详解 Redis 监控中时钟偏差指标的含义——反映节点与参考时钟的时间差(秒级),非请求耗时;阐明其对 Key 过期、日志关联及分布式一致性的影响,强调稳定时间比瞬时偏差更关键。
|
12天前
|
NoSQL JavaScript 前端开发
【Azure Function】NodeJS Function大批量写入到Redis遇见丢失数据情况的分析
Azure Functions 中批量写 Redis 时,看到 Invocation 已完成,不代表每个 Redis SET 都完成了。如果代码用 callback 调用 client.set(),随后立即执行 client.quit() 或直接返回,Function Runtime 可能认为本次执行已经结束,但 Redis 写入还在事件循环里排队。我的建议很明确:所有外部依赖调用都必须 await,批量写入要么顺序等待,要么用受控并发等待全部 Promise 完成。
|
1月前
|
JSON 自然语言处理 监控
ICP备案查询 API 接口教程:域名备案信息实时核验与合规监控
本文是面向开发者与企业技术决策者的客观技术教程,介绍ICP备案查询接口的能力、接入方式、计费模式与最佳实践。内容基于阿里云云市场公开文档,涵盖实时核验、结构化返回、多语言支持、按量计费等核心特性,供接入前评估参考。
462 0
ICP备案查询 API 接口教程:域名备案信息实时核验与合规监控