Azure Utils MCP服务器
用于Azure开发和运营的MCP(模型上下文协议)服务器。兼容任何MCP客户端——Claude Code、Claude Desktop、Cursor等。
涵盖三个方面:
- Cosmos数据库 --列出帐户、数据库和容器;运行SQL查询;读取、写入和删除文档
- 服务总线 --列出名称空间、队列和主题;发送消息;查看、清除和重新排队死信队列
- 授权/PIM --列出符合条件的角色并激活PIM角色分配
身份验证使用 DefaultAzureCredential,它会拾取一个活动 az login 会话自动。可选地,可以通过环境变量使用基于Cosmos DB密钥的身份验证和服务总线连接字符串身份验证(请参见 认证 在......下面
需求
- 紫外线
- Azure命令行界面 与活跃
az login会话
安装
macOS
brew install uv azure-cliLinux
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和分区密钥的硬点删除。
