通过 MCP 与 Azure 对话
Azure CLI MCP 服务器
这是一个 MCP 服务器,它封装了 Azure CLI,添加了一个友好的提示以改善其功能,并将其暴露出来。
演示
使用 Claude Desktop 的 2 分钟简短演示

使用 VS Code 的完整 18 分钟演示

它能做什么?
它可以访问完整的 Azure CLI,因此可以执行 Azure CLI 能做的任何事情。以下是一些场景:
- 列出您的资源并检查它们的配置。例如,您可以获取部署到 Azure OpenAI 的模型的速率限制。
- 修复某些配置或安全问题。例如,您可以要求它保护 Blob 存储帐户。
- 创建资源。例如,您可以要求它创建一个 Azure 容器应用实例、一个 Azure 容器注册表,并使用托管标识将它们连接起来。
使用它是否安全?
由于 MCP 服务器由 LLM 驱动,我们建议您小心并验证它生成的命令。然后,如果您使用的是像 Claude 3.7 或 GPT-4o 这样优秀的 LLM,它在 Azure 上有出色的训练数据,我们的体验非常好。
请阅读我们的 许可证,其中声明“软件按原样提供,不附带任何形式的保证”,因此您使用此 MCP 服务器需自行承担风险。
它是否安全,我应该在远程服务器上运行它吗?
简短回答:不。
这个 MCP 服务器为您运行 az
命令,可能会被攻击者入侵以运行其他任何命令。当前的实现(与目前大多数 MCP 服务器一样)仅支持 stio
传输协议:它应该在您的机器上本地运行,使用您的 Azure CLI 凭据,就像您自己操作一样。
将来,完全可以让这个 MCP 服务器支持 http
传输和 Azure 令牌认证,以便不同的人可以远程使用它。这是第二步,将在 MCP 规范和 SDK 更加稳定后完成。
如何安装它?
该服务器可以在 Docker 容器中运行,也可以作为 Java 可执行 JAR 文件运行。
对于这两个选项,只有 stio
传输可用。http
传输将在以后提供。
使用 Docker 安装和配置服务器
创建 Azure 服务主体并设置 AZURE_CREDENTIALS
环境变量。您可以通过在终端中运行以下命令来实现:
bash
az ad sp create-for-rbac --name "azure-cli-mcp" --role contributor --scopes /subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group> --json-auth
这将创建一个新的具有指定名称和角色的服务主体,并以 JSON 格式输出凭据。
然后,您可以使用以下命令通过 Docker 运行服务器。要进行身份验证,请使用上一个命令的输出设置 AZURE_CREDENTIALS
。
bash
docker run --rm -p 6273:6273 -e AZURE_CREDENTIALS="{"clientId":"....","clientSecret":"....",...}" -i ghcr.io/jdubois/azure-cli-mcp:latest
使用 VS Code
从 VS Code 使用服务器:
- 安装 GitHub Copilot
- 使用命令面板安装此 MCP 服务器:
MCP: 添加服务器...
- 配置使用
stio
传输协议连接到服务器 - 要运行的命令是
docker run -i --rm -e AZURE_CREDENTIALS ghcr.io/jdubois/azure-cli-mcp:latest
。您需要将AZURE_CREDENTIALS
环境变量设置为服务主体创建输出的 JSON,引号需要转义:请参阅下面的完整且安全的示例。
- 配置使用
- 将 GitHub Copilot 配置为在
Agent
模式下运行,点击聊天窗口底部的箭头 - 在聊天窗口顶部,您应该看到配置为工具的
azure-cli-mcp
服务器
您可以使用文档中描述的方法保护 AZURE_CREDENTIALS
环境变量
在文档中,这是一个完整的示例:
json
{
"inputs": [
{
"type": "promptString",
"id": "azure-credentials",
"description": "Azure 凭据",
"password": true
}
],
"servers": {
"azure-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AZURE_CREDENTIALS",
"ghcr.io/jdubois/azure-cli-mcp:latest"
],
"env": {
"AZURE_CREDENTIALS": "${input:azure-credentials}"
}
}
}
}
使用 Claude Desktop
从 Claude Desktop 使用服务器时,将服务器添加到您的 claude_desktop_config.json
文件中。
AZURE_CREDENTIALS
环境变量应设置为服务主体创建输出的 JSON,引号需要转义。
json
{
"mcpServers": {
"azure-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AZURE_CREDENTIALS",
"ghcr.io/jdubois/azure-cli-mcp:latest"
],
"env": {
"AZURE_CREDENTIALS": "{\"clientId\":\"...\",\"clientSecret\":\"...\",..."
}
}
}
}
使用 Smithery.ai 安装
您可以通过 Smithery.ai 安装 MCP 服务器:
这类似于我们在上面的 Docker 容器安装,但运行在 Smithery.ai 的服务器上。虽然这种安装最初是最简单的,请注意:
- 您需要一个
AZURE_CREDENTIALS
密钥,如下面的 Docker 安装部分所述,并且该密钥将发送到 Smithery.ai。 - Smithery.ai 是第三方服务,您需要信任他们为您构建此 MCP 服务器(它使用与我们的 Docker 镜像相同的 Dockerfile,但不是由我们构建的)。
- 这仍然是早期预览服务,因此我们无法保证它将如何演变。
使用 Java 安装和配置服务器
此配置是在本地运行服务器。它比使用 Docker 更容易设置,
但它安全性较低,因为它直接使用您机器上配置的 Azure CLI 凭据。
- 安装 Azure CLI:您可以通过遵循 此处 的说明来完成。
- 登录到您的 Azure 帐户。您可以通过在终端中运行
az login
来完成。 - 确保您已安装 Java 17 或更高版本。您可以通过在终端中运行
java -version
来检查。
二进制文件可在 GitHub 发布页面 上找到,以下是使用 GitHub CLI 下载最新版本的方法:
- 下载最新版本:
gh release download --repo jdubois/azure-cli-mcp --pattern='azure-cli-mcp.jar'
使用 VS Code
- 安装 GitHub Copilot
- 使用命令面板安装此 MCP 服务器:
MCP: 添加服务器...
- 配置使用
stio
传输协议连接到服务器 - 要运行的命令是
java -jar ~/Downloads/azure-cli-mcp.jar
(您需要指向下载azure-cli-mcp.jar
文件的位置)
- 配置使用
- 将 GitHub Copilot 配置为在
Agent
模式下运行,点击聊天窗口底部的箭头 - 在聊天窗口顶部,您应该看到配置为工具的
azure-cli-mcp
服务器
使用 Claude Desktop
从 Claude Desktop 使用服务器时,将服务器添加到您的 claude_desktop_config.json
文件中。请注意,您需要指向下载 azure-cli-mcp.jar
文件的位置。
json
{
"mcpServers": {
"azure-cli": {
"command": "java",
"args": [
"-jar",
"~/Downloads/azure-cli-mcp.jar"
]
}
}
}