Skip to content
Go back

给 AI 编码代理接上 Microsoft Learn:用 Learn MCP Server 拿到当下的官方文档

代理接入 Learn MCP 前后对比的极简线稿封面

模型再强,也不知道上个月才换的 API 长什么样。Pieter de Bruin 在 Microsoft 开发者博客上记录了一个很容易复现的现象:让代理写一个部署 Azure AI Foundry 的脚本,没接文档的代理会一头扎进一套一年前才是正确答案的方法里,调依赖、改路径、绕来绕去;接上 Microsoft Learn 文档之后,同一个模型直接走到当下正确的 API 上。

这篇博客的价值不是“又一个 MCP 介绍”,而是把“代理为什么经常写出能编译却跑不通的代码”这件事拆得很具体,并且给出了一个不用安装、不用授权就能接上的远端 MCP 服务。下面把原文里的关键事实和接入步骤梳理一遍,方便你直接抄作业。

代理写过期代码的真正原因

代理本身的代码生成能力没问题,问题在于它的训练数据有截止时间,而技术在持续演进。结果是:

你当然可以靠提示工程绕过去:加约束、固定版本、跑一遍测试再让它修。这条路能走通,但等于你在替代理做它本来应该自己做的核查。

Learn MCP Server 的思路是把这件事甩回给代理:让代理在动笔前先去 Microsoft Learn 上查一遍当下的文档

同一个 prompt 的两种命运

原文做了一组很直观的对照实验,prompt 都是同一句:

create a CLI script to deploy Azure AI Foundry

没有 Learn MCP 的版本

代理选了 az ml 扩展,准备用 az ml workspace create --kind hub 来创建 Foundry 资源。这个写法一年前是对的——当时 Foundry 还在用 hub-and-project 模型,挂在 ML workspace API 下面。

然后扩展加载失败,触发了 rpds-py 的 Python 依赖冲突。代理开始排错:

15+ 次工具调用之后,扩展终于加载起来,脚本也跑通了——但它打的是已经过时的 hub-and-project API。

接上 Learn MCP 之后

同一个 prompt、同一个模型,多了一个 Learn MCP Server 连接。

代理的第一步动作变成了向 Microsoft Learn 查询当前的 Foundry 部署指引。它拿到了 quickstart 文档,于是改用 az cognitiveservices——这是 Foundry 资源现在使用的 API 面。整套流程跑下来:

差别不在模型能力,而在代理动手前是否能看到当下的官方文档

一张表对比

维度不接 Learn MCP接上 Learn MCP
Prompt同一句同一句
代理首步动作Web searchMicrosoft Docs Search
选用的 APIaz ml(对 Foundry 已弃用)az cognitiveservices(当下版本)
被卡在哪rpds-py Python 依赖冲突没卡
出代码前的调试步骤15+ 次工具调用0 次
是否包含模型部署是(gpt-4.1-mini,带版本和 SKU)
结果一段对着旧 hub-and-project API 的脚本一段端到端能跑的部署脚本

Learn MCP Server 到底是什么

一句话:它是一个远端 MCP 服务,让任何兼容 MCP 的代理都能直接搜 Microsoft Learn 上的文档、代码示例和指导

关键属性都比较克制:

它解决的是“代理推理时手上没有当下文档”这一个具体问题。当任务里涉及微软技术——部署一个 Azure 服务、迁移一个 .NET 应用、写一个 Bicep 模板——代理可以把 Learn 上的最新指导和你的代码库放在一起推理,少走一些“看起来对、实际过期”的弯路。

接入步骤

这一节是教程部分,命令直接照抄即可。

前置条件

GitHub Copilot CLI

在 Copilot CLI 会话中执行:

/plugin install microsoftdocs/mcp
/restart

/plugin install 会把 microsoftdocs/mcp 这个插件挂上去,/restart 重启 CLI 让插件加载生效。重启后,下一轮对话里代理就能调用 Microsoft Docs Search 类的工具。

验证方式很简单:让它做一个最近发生过变化的任务——比如换了名字的服务、改过签名的命令、新弃用的参数——看它的第一步是不是去查文档。

VS Code

打开 VS Code 的扩展面板,搜索:

@agentPlugins microsoft-docs

选择安装即可。它会作为一个 MCP 插件挂载到 Copilot 的代理模式下。

适合用来验收的 prompt

原文给出了一条很实用的判断方法:故意挑一件最近才变的事让代理做。比如:

如果第一次响应里它就去查 Learn 文档,并且选到了当下的 API,说明接入到位。

这件事提醒了什么

代理写代码看上去是“模型问题”,但很多时候只是一个信息时效性问题。模型不知道某个服务两个月前换了 SKU 命名,也不知道某个扩展上个月被官方下线,于是它会自然地拿训练时的那套写法当成默认答案。

Learn MCP Server 的做法很朴素:

这套思路并不是 Microsoft 独有的。任何足够稳定的官方文档源 + MCP 通道,都可以做类似的事。值得留意的是,有没有让代理在动笔前查当下文档,会越来越变成代理工作流好用与否的一个隐性分界线。

上手建议

如果你关注 AI 助手、开发工具和软件工程实践,可以关注 Aide Hub。这里会继续分享能落地的工具教程、技术观察和项目经验。

参考


Tags


Previous

Template Method vs Strategy:C# 里两种“变中有不变”的算法骨架取舍

Next

Cosmos DB 新项目安全起步:8 步最小可行安全清单