Azure MCP服务器工具

为Azure开发和运维提供模型上下文协议(MCP)服务器,支持Cosmos DB、Service Bus和授权/PIM操作。

  • by BrianDeacon
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 BrianDeacon/azure-utils-mcp

使用说明

Azure Utils MCP服务器

用于Azure开发和运营的MCP(模型上下文协议)服务器。兼容任何MCP客户端——Claude Code、Claude Desktop、Cursor等。

涵盖三个方面:

  • Cosmos数据库 --列出帐户、数据库和容器;运行SQL查询;读取、写入和删除文档
  • 服务总线 --列出名称空间、队列和主题;发送消息;查看、清除和重新排队死信队列
  • 授权/PIM --列出符合条件的角色并激活PIM角色分配

身份验证使用 DefaultAzureCredential,它会拾取一个活动 az login 会话自动。可选地,可以通过环境变量使用基于Cosmos DB密钥的身份验证和服务总线连接字符串身份验证(请参见 认证 在......下面

需求

安装

macOS

brew install uv azure-cli

Linux

curl -LsSf https://astral.sh/uv/install.sh | sh
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash   # Debian/Ubuntu

有关其他Linux发行版,请参阅 Azure CLI安装文档.

视窗

winget install --id=astral-sh.uv
winget install --id=Microsoft.AzureCLI

配置

克劳德代码 用户:

claude mcp add --scope user azure-utils -- uvx azure-utils-mcp

对于其他MCP客户端,请在服务器配置中添加以下内容:

{
  "mcpServers": {
    "azure-utils": {
      "command": "uvx",
      "args": ["azure-utils-mcp"]
    }
  }
}

添加服务器后重新启动MCP客户端。

从源代码安装

git clone https://github.com/BrianDeacon/azure-utils-mcp
cd azure-utils-mcp
uv sync
az login

然后使用克隆的路径进行配置:

{
  "mcpServers": {
    "azure-utils": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/azure-utils-mcp", "azure-utils-mcp"]
    }
  }
}

认证

所有工具默认为 DefaultAzureCredential,它会拾取一个活动 az login 会话、托管身份或其他标准Azure凭据源。

对于Cosmos DB和Service Bus,您可以通过设置环境变量来选择使用基于密钥或连接字符串的身份验证。每个工具都接受一个可选参数来指定从哪个环境变量读取,并具有合理的默认值:

服务 工具参数 默认环境变量 它包含什么
Cosmos数据库 key_env_var AZURE_COSMOS_KEY 数据平面操作的帐户密钥
服务巴士 connection_string_env_var AZURE_SERVICEBUS_CONNECTION_STRING 数据平面操作的连接字符串

如果设置了指定的环境变量,则其值将用于身份验证。如果不是, DefaultAzureCredential 被用作后备方案。

这种设计允许您通过重写env var名称将不同的工具调用指向不同的凭据。例如,您可以使用 MY_DEV_COSMOS_KEY 对于一个帐户和 MY_PROD_COSMOS_KEY 另一方面,保持两者在你的环境中没有冲突。

其他环境变量:

  • AZURE_SUBSCRIPTION_ID --被使用 list_accounts / list_namespaces 如果设置;否则,从 az login

Cosmos数据库工具

这 account 参数接受短帐户名(例如。 my-cosmos-account)或完整的端点URL https:// 前缀和 .documents.azure.com 如果缺少后缀,则会自动添加。

所有Cosmos DB数据平面工具(除 cosmosdb_list_accounts)接受可选 key_env_var 参数(默认值 AZURE_COSMOS_KEY).看 认证.

cosmosdb_list_accounts

列出当前Azure订阅中的所有Cosmos DB帐户。

cosmosdb_list_databases

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

cosmosdb_list_containers

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

cosmosdb_get_container_info

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
container string yes 容器名称
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

返回分区键路径、索引策略、默认TTL、唯一键策略和系统属性。

cosmosdb_query_items

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
container string yes 容器名称
query string yes SQL查询(例如。 SELECT * FROM c WHERE c.status = 'active')
max_items integer no 返回的最大项目数(默认值100,上限1000)
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

cosmosdb_query_items_to_file

同 cosmosdb_query_items 而是将结果写入文件。当结果集可能很大时使用。

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
container string yes 容器名称
query string yes SQL查询
output_file string yes 将结果写入JSON数组的路径
max_items integer no 返回的最大项目数(默认值100,上限1000)
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

cosmosdb_count_items

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
container string yes 容器名称
where string no SQL WHERE子句体(例如。 c.status = 'active').如果省略,则计算所有项目。
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

cosmosdb_read_item

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
container string yes 容器名称
item_id string yes 项目 id 字段值
partition_key string yes 分区键值
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

cosmosdb_upsert_item

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
container string yes 容器名称
item object yes 完整项目文档--必须包含 id 现场
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

cosmosdb_delete_item

破坏性的。

参数 类型 必填 说明
account string yes Cosmos DB帐户名或端点
database string yes 数据库名称
container string yes 容器名称
item_id string yes 项目 id 字段值
partition_key string yes 分区键值
key_env_var string no 持有帐户密钥的Env var(默认值 AZURE_COSMOS_KEY)

服务总线工具

这 namespace 参数接受短名称(例如。 my-namespace)或完全限定的主机名。这 .servicebus.windows.net 如果缺少后缀,则会自动附加后缀。

所有服务总线数据平面工具(除 servicebus_list_namespaces)接受可选 connection_string_env_var 参数(默认值 AZURE_SERVICEBUS_CONNECTION_STRING).看 认证.

servicebus_list_namespaces

列出当前Azure订阅中的所有Service Bus命名空间。

servicebus_list_queues

参数 类型 必填 说明
namespace string yes 服务总线命名空间
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_list_topics

参数 类型 必填 说明
namespace string yes 服务总线命名空间
include_subscriptions boolean no 如果为true,则返回主题图→ 订阅名称(默认为false)
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_send_message

参数 类型 必填 说明
namespace string yes 服务总线命名空间
queue string yes 队列或主题名称
body string yes 消息正文
session_id string no 启用会话的队列需要
correlation_id string 否 相关ID
application_properties object no 自定义属性的键/值映射
scheduled_enqueue_time string no ISO 8601日期时间用于将消息排队
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_send_batch

参数 类型 必填 说明
namespace string yes 服务总线命名空间
queue string yes 队列或主题名称
messages array yes 消息对象数组,每个对象都有 body (必填),另加可选 session_id, correlation_id, application_properties, scheduled_enqueue_time
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_peek_messages / servicebus_peek_messages_to_file

参数 类型 必填 说明
namespace string yes 服务总线命名空间
queue string yes 队列名称
max_count integer no 最大消息数(默认10,上限100)
session_id string no 在特定会话中查看
output_file string yes(仅to_file) 写入消息正文的路径
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_peek_dlq / servicebus_peek_dlq_to_file

参数 类型 必填 说明
namespace string yes 服务总线命名空间
queue string yes 队列名称
max_count integer no 最大消息数(默认10,上限100)
output_file string yes(仅to_file) 写入消息正文的路径
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_purge_queue / servicebus_purge_dlq

破坏性的。

参数 类型 必填 说明
namespace string yes 服务总线命名空间
queue string yes 队列名称
max_messages integer 否 安全上限(默认值1000)
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_requeue_dlq

参数 类型 必填 说明
namespace string yes 服务总线命名空间
queue string yes 队列名称
max_messages integer no 安全上限(默认值100)
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_peek_subscription_messages / servicebus_peek_subscription_messages_to_file

参数 类型 必填 说明
namespace string yes 服务总线命名空间
topic string yes 主题名称
subscription string yes 订阅名称
max_count integer no 最大消息数(默认10,上限100)
session_id string no 在特定会话中查看
output_file string yes(仅to_file) 写入消息正文的路径
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_peek_subscription_dlq / servicebus_peek_subscription_dlq_to_file

参数 类型 必填 说明
namespace string yes 服务总线命名空间
topic string yes 主题名称
subscription string yes 订阅名称
max_count integer no 最大消息数(默认10,上限100)
output_file string yes(仅to_file) 写入消息正文的路径
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_purge_subscription / servicebus_purge_subscription_dlq

破坏性的。

参数 类型 必填 说明
namespace string yes 服务总线命名空间
topic string yes 主题名称
subscription string yes 订阅名称
max_messages integer 否 安全上限(默认值1000)
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

servicebus_requeue_subscription_dlq

参数 类型 必填 说明
namespace string yes 服务总线命名空间
topic string yes 主题名称
subscription string yes 订阅名称
max_messages integer no 安全上限(默认值100)
connection_string_env_var string no 保存连接字符串的Env var(默认值 AZURE_SERVICEBUS_CONNECTION_STRING)

授权/PIM工具

authorization_list_eligible_roles

列出您有资格在所有可访问的订阅中激活的所有Azure PIM角色。返回角色名称、范围以及资格是永久的还是有时间限制的。

authorization_activate_role

参数 类型 必填 说明
role string yes 返回的角色名称 authorization_list_eligible_roles
scope string yes 返回的范围 authorization_list_eligible_roles
justification string yes 激活原因
duration string no ISO 8601持续时间(例如。 PT4H).默认为策略最大值。

返回激活状态和请求ID。 Provisioned 指立即激活; PendingApproval 意味着审批人必须首先采取行动。


安全

  • 身份验证默认为 DefaultAzureCredential.当通过环境变量使用基于键或连接字符串的身份验证时,只有env var 名字 作为工具参数传递,而不是秘密值本身。
  • purge_* 和 requeue_* 工具强制执行 max_messages 安全帽,防止意外批量操作。
  • cosmosdb_delete_item 是一个需要项目ID和分区密钥的硬点删除。