Azure服务交互工具

一个基于MCP框架构建的服务器,提供与Azure存储、虚拟机和应用服务交互的工具。

  • by matthewfreshit
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 matthewfreshit/azure-mcp-server

使用说明

Azure MCP服务器

使用MCP框架构建的模型上下文协议(MCP)服务器,提供与Azure服务交互的工具。

快速开始

# Install dependencies
npm install

# Build the project
npm run build

# Start the server
npm start

项目结构

azure-mcp-server/
├── src/
│   ├── tools/                # MCP Tools
│   │   ├── Storage/          # Azure Storage tools
│   │   ├── VirtualMachine/   # Azure VM tools
│   │   └── AppService/      # Azure App Service tools
│   └── index.ts              # Server entry point
├── package.json
└── tsconfig.json

Azure工具概述

此服务器提供与多个Azure服务交互的工具:

服务 工具前缀 描述
存储 azure_* Blob存储操作
虚拟机 azure_vms_* VM管理操作
应用服务 azure_apps_* 应用服务操作

认证

所有工具都使用@azure/identity中的DefaultAzureCredential,它按以下顺序尝试多种身份验证方法:

  1. 环境变量(AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_LIENT_SECRET)
  2. 管理身份
  3. Azure CLI凭据
  4. Visual Studio代码凭据
  5. 交互式浏览器登录(作为回退)

可用工具

Azure存储工具

必需的权限

  • 存储帐户贡献者:用于管理存储帐户设置
  • 存储Blob数据贡献者:用于blob和容器上的CRUD操作

集装箱作业

工具 描述 示例输入
azure_list_containers 列出容器 { "accountName": "yourstorageaccount" }
azure_create_container 创建容器 { "accountName": "yourstorageaccount", "containerName": "mycontainer" }
azure_delete_container 删除容器 { "accountName": "yourstorageaccount", "containerName": "mycontainer" }

Blob操作

工具 描述 示例输入
azure_list_blobs 列出blob { "accountName": "yourstorageaccount", "containerName": "mycontainer" }
azure_upload_blob 上传blob { "accountName": "yourstorageaccount", "containerName": "mycontainer", "blobName": "example.txt", "content": "This is the content" }
azure_download_blob 下载blob { "accountName": "yourstorageaccount", "containerName": "mycontainer", "blobName": "example.txt" }
azure_delete_blob 删除blob { "accountName": "yourstorageaccount", "containerName": "mycontainer", "blobName": "example.txt" }

Azure虚拟机工具

必需的权限

  • 虚拟机贡献者:用于管理虚拟机
  • 读者:用于列出和查看VM详细信息

VM操作

工具 描述 示例输入
azure_vms_list 列出虚拟机 { "subscriptionId": "your-subscription-id" }
azure_vms_start 启动VM { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "vmName": "your-vm-name" }
azure_vms_stop 停止VM { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "vmName": "your-vm-name" }
azure_vms_restart 重新启动VM { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "vmName": "your-vm-name" }
azure_vms_delete 删除虚拟机 { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "vmName": "your-vm-name" }

Azure应用服务工具

必需的权限

  • 网站贡献者:用于管理应用程序服务
  • 读者:用于列出和查看应用服务详细信息

应用服务操作

工具 描述 示例输入
azure apps_list 列出应用程序服务 { "subscriptionId": "your-subscription-id" }
azure apps_get 获取应用服务详细信息 { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "appName": "your-app-name" }
azure apps_get_config 获取应用服务配置 { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "appName": "your-app-name" }
azure apps_start 启动应用服务 { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "appName": "your-app-name" }
azure apps_stop 停止应用服务 { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "appName": "your-app-name" }
azure apps_restart 重新启动应用程序服务 { "subscriptionId": "your-subscription-id", "resourceGroupName": "your-resource-group", "appName": "your-app-name" }

工具开发

创建新工具

import { MCPTool } from 'mcp-framework';
import { z } from 'zod';

interface MyToolInput {
  message: string;
}

class MyTool extends MCPTool<MyToolInput> {
  name = 'my_tool';
  description = 'Describes what your tool does';

  schema = {
    message: {
      type: z.string(),
      description: 'Description of this input parameter'
    }
  };

  async execute(input: MyToolInput) {
    // Your tool logic here
    return `Processed: ${input.message}`;
  }
}

export default MyTool;

调试

如果您在使用Azure工具时遇到问题,请查看控制台日志以获取详细的调试信息。常见问题包括:

  • 身份验证失败
  • 缺少权限
  • 不存在的资源
  • 网络连接问题

建造和测试

  1. 对工具进行更改
  2. 跑 npm run build 编写
  3. 服务器将在启动时自动加载您的工具

了解更多