内容
# Azure MCP Servers
阅读完整文章 [使用 MCP 和 Quarkus 部署 Azure 资源](https://www.linkedin.com/pulse/deploying-azure-resources-using-mcp-quarkus-antonio-goncalves-jjaqe)。
在这个仓库中,您将找到一些用于 Azure 的 MCP Servers:
* `mcp-server-azure`: 列出 Azure 区域及其缩写建议。
* `mcp-server-azure-resourcemanager-resources`: 创建和删除 Azure 资源组。
* `mcp-server-azure-resourcemanager-postgresqlflexibleserver`: 创建和删除 Azure PostgreSQL Flexible Servers。
* `mcp-server-azure-resourcemanager-storage`: 创建和删除 Azure 存储账户。
* `mcp-server-azure-storage-blob`: 创建和删除 Blob 容器,创建和读取文本文件。
这些 MCP Servers 允许您管理 Azure 资源,并使用 MCP(Model Contexte Protocol)以自然语言执行各种操作,而无需编写代码(即 Azure SDK),或使用 Azure CLI 命令或 Bicep/Terraform 模板。这使您能够以更直观的方式与 Azure 资源进行交互,从您喜欢的支持 MCP 客户端的聊天工具(如 VS Code、Claude Desktop)和您喜欢的 LLM(如 GPT、Claude 等)。
在下面的截图中,您可以看到如何在 VS Code 中使用 GH Copilot Chat 创建 Azure 资源组和存储账户:

## 如何创建 MCP Server
这些 MCP Servers 是使用 [Quarkus MCP Server 扩展](https://docs.quarkiverse.io/quarkus-mcp-server/dev/) 用 Java 开发的。其工作原理是您定义一个带有 `@Tool` 注解的方法的 Java 类,并可选地添加一些 `@ToolArg`。
`@Tool` 注解定义了工具的名称和描述,而 `@ToolArg` 注解定义了工具接受的参数。这类似于定义 REST API,但您定义的是可以从 MCP 客户端调用的工具,而不是定义端点。
清楚地定义工具的功能和接受的参数非常重要,以便 LLM 能够以自然语言理解工具的目的,从而调用该工具。
请注意,这些注解可以帮助 LLM 执行某些操作。例如,`@ToolArg` 定义了资源组名称,并指定“资源组的名称不能包含空格,并且应以前缀 'rg-' 开头。”这将鼓励 LLM 生成一个以 `rg-` 开头且不包含空格的名称。
```java
@Tool(name = "creates_a_resource_group", description = "在 Azure 中创建一个新的资源组。如果资源组已经存在,则操作失败。")
public ToolResponse createResourceGroup(@ToolArg(name = "resource_group_name", description = "要创建的资源组名称。Azure 中的资源组是一个容器,包含相关资源(存储账户、数据库、消息中心等)。资源组的名称不能包含空格,并且应以前缀 'rg-' 开头。如果没有该前缀,请添加 'rg-'。") String resourceGroupName, McpLog mcpLog) {
AzureResourceManager azure = getAzureResourceManager();
if (azure.resourceGroups().contain(resourceGroupName)) {
return ToolResponse.error("不创建资源组 " + resourceGroupName + " 因为它已经存在");
} else {
ResourceGroup resourceGroup = azure.resourceGroups().define(resourceGroupName)
.withRegion(Region.SWEDEN_CENTRAL)
.create();
mcpLog.info("资源组 " + resourceGroup.name() + " 已创建");
return ToolResponse.success();
}
}
```
然后,您需要构建项目,生成包含所有服务器代码的 Fat-JAR 文件,以便您可以在 VS Code 中配置它(`mcp.json`)或 Claude Desktop:
```json
{
"servers": {
"azure-mgt-resources": {
"type": "stdio",
"command": "~/.sdkman/candidates/java/23.0.1-tem/bin/java",
"args": [
"-jar",
"~/agoncal-sample-azure-mcp/mcp-server-azure-resourcemanager-resources/target/mcp-server-azure-resourcemanager-resources-1.0.0-SNAPSHOT-runner.jar"
]
}
}
}
```
## 认证
要管理资源,每个 MCP server 需要对 Azure 进行身份验证。这是在每个请求的基础上完成的,使用以下代码:
```java
private static AzureResourceManager getAzureResourceManager() {
AzureResourceManager azure = AzureResourceManager.authenticate(
new DefaultAzureCredentialBuilder().build(),
new AzureProfile(AzureEnvironment.AZURE))
.withDefaultSubscription();
return azure;
}
```
连接信息
猜你喜欢
MarkItDown
将文件和办公文档转换为Markdown的Python工具。
MarkItDown MCP
MarkItDown-MCP是一个轻量级服务器,用于将URI转换为Markdown。
Firecrawl
Firecrawl MCP Server 实现了网页抓取、爬虫和内容提取功能。
文件系统操作
Node.js MCP服务器,用于文件系统操作,支持动态访问控制。
OmniRoute
永不停息的编码。免费 AI 网关 — 一个端点,160+ 提供商,零停机时间。智能 4 级自动降级(订阅 → API → 廉价 →...
TrendRadar
TrendRadar:30秒内为您提供真实新闻的热点助手。