Model Context Protocol(MCP)问世已有一段时间,在此期间,支持 MCP 的服务不断增多,其作为大语言模型(LLM)工具的应用范围也在逐步扩大。无论是工具提供方还是客户端的服务数量都在增加,预计今后支持 MCP 的场景还将进一步拓展。
在这样的背景下,微软推出了 Azure MCP Server—— 一款可通过 MCP 操作 Azure 资源的 MCP 服务器。(相关链接:github.com)
目前,该服务器可操作的资源虽有限,但已能实现 CosmosDB、Blob Storage 等数据的查询功能。本文将先简要介绍 MCP,随后讲解如何从 GitHub Copilot 调用 Azure MCP Server,从而轻松搭建使用 Azure 资源的 Web 应用。
MCP 是什么
MCP 是 Model Context Protocol 的缩写,顾名思义,它指的是一种协议(即标准规范)。具体而言,这是一种针对 “使用 LLM 模型的应用在调用工具时,如何获取上下文并调用工具” 这一流程所制定的标准规范。
提到工具调用,大家可能会想到 Function Calling(函数调用),但 MCP 与它属于不同层面的概念,具体区别如下:
- Function Calling(函数调用):输入用户提示词与各工具的信息后,选择并调用对应工具的功能。
- MCP:规定了 LLM 应用应如何选择工具、工具方应如何提供工具的标准规范。
在 Model Context Protocol 中,定义了 “MCP Server”(MCP 服务器)与 “MCP Client”(MCP 客户端)两种角色:
- 宿主(Host):指使用 MCP 的 LLM 应用。
- MCP Server(MCP 服务器):提供工具,负责提供工具信息并执行工具调用。
- MCP Client(MCP 客户端):从 MCP Server 获取工具信息,决定调用哪个工具并执行调用操作。

严格来说,MCP Server 还可提供提示词模板等其他功能,本文在此暂不展开说明。
例如,Claude Desktop、GitHub Copilot 等属于工具调用方服务,对应上述的 “宿主”,其内部包含了 MCP 客户端。
本文将按照以下架构开展操作:通过由 NodeJS 启动的 MCP Server 来操作 Azure 资源。

关于 Azure MCP Server
这是微软发布的 MCP 服务器,可通过工具提供 Azure 资源的操作能力,支持标准输入与 HTTP 两种通信方式。
可操作的内容示例如下:
- 获取 CosmosDB 容器列表
- 向 CosmosDB 容器执行 SQL 查询
- 获取 Blob Storage 容器列表
搭建使用 Azure 资源的 Web 应用
本次我们将搭建一个简易 Web 应用,实现文件的上传、下载与删除功能,并记录 “谁在何时上传了文件”。后端将采用 Blob Storage 作为文件存储,CosmosDB 用于管理上传历史。
开发环境如下:
- VS Code Insiders
- GitHub Copilot
- Python 3.10.11
启动 Azure MCP Server
启动 Azure MCP Server 十分简单。
https://github.com/Azure/azure-mcp
执行以下命令启动服务器
bashnpx -y @azure/mcp@latest server start --transport sse
若出现如下输出,则表示启动成功
plaintextinfo: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5008
配置 VS Code 中的 GitHub Copilot,使其适配 Azure MCP Server
仅启动 MCP Server 无法让客户端识别,需完成注册操作以确保 LLM 应用能正常识别。由于本次使用 GitHub Copilot,具体操作可参考链接code.visualstudio.com。
核心步骤为在 .vscode/mcp.json
文件中写入以下内容即可:
json
{
"servers": {
"azure-mcp-dev": {
"url": "http://localhost:5008"
}
}
}
通过 GitHub Copilot 搭建应用
首先,需预先在 Azure 中手动创建以下资源组及资源:
- 资源组:mcp-dev
- CosmosDB:ssk-mcp-cosmos-dev
- 存储账户:sskmcpblobdev
理论上,我们希望让 Azure MCP Server 完成资源创建的全过程,但将资源创建操作完全交给 LLM 存在一定风险,因此本次仅手动完成这部分工作。
完成上述准备后,向已关联 Azure MCP Server 的 GitHub Copilot 输入以下提示词:
“我想在名为 mcp-dev 的资源组中,使用 Blob Storage 和 CosmosDB 搭建一个文件上传管理系统。
- 支持用户各自上传、下载、删除文件。
- 通过 CosmosDB 记录每个用户何时更新了哪个文件。
- 使用 Python 的 FastAPI 进行开发。
请基于上述条件完成以下操作:
- 修改 Azure 资源配置。
- 输出展示数据库与存储配置的文档。”
此时,Copilot 会先检查现有资源状态,如下所示:

其中显示 “Ran azmcp-group-list” 的部分,即为正在执行 Azure MCP Server 操作的过程,能看出它正在确认资源组、存储及 CosmosDB 的状态。

Copilot 在首次回复中会告知所需的设计方案,之后我们可进一步指令其输出代码。

需要注意的是,Copilot 会生成源代码,但不会主动创建容器。由于若不明确指示,它通常不会执行修改资源的操作,因此需补充相关指令。

补充指令后,资源所需的各个容器便会分别创建完成。

至此,源代码与后端资源的搭建就全部完成了。
实际使用体验
下面我们来运行一下这个应用。界面是通过向 GitHub Copilot 输入提示词生成的。

由于没有对外观做任何指定,所以界面处于最基础的状态。这里展示的是已上传 schema.json
文件后的状态,Azure 资源中也同步了上传的文件及相关操作历史。

像这样,借助 Azure MCP Server 与 GitHub Copilot,从 Azure 资源配置到应用创建的全过程,都可以通过提示词一次性完成。在 Azure 上搭建简单应用时,这一组合应该会非常实用。
总结
本文借助 Azure MCP Server 与 GitHub Copilot,轻松验证了 Azure 资源配置与应用开发的全流程。
除了 GitHub Copilot 原本就具备的应用创建能力外,现在连适配应用的资源配置都能通过提示词一站式完成,非常便捷。
未来,MCP Server 的工具扩展功能还将进一步完善,想必能为我们带来更高效的开发体验。
那么,我们下次再见。