借助 Azure MCP Server 与 GitHub Copilot,尽可能简化 Azure 应用搭建流程

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 获取工具信息,决定调用哪个工具并执行调用操作。
https://modelcontextprotocol.io/docs/concepts/architecture

严格来说,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 的工具扩展功能还将进一步完善,想必能为我们带来更高效的开发体验。

那么,我们下次再见。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注