项目简介

Azure MCP 服务器是基于Model Context Protocol (MCP) 构建的后端服务,旨在为LLM(大型语言模型)客户端提供标准化接口,以访问Azure资源、执行相关工具以及获取Azure最佳实践。它支持多种运行模式,可以根据需要暴露不同粒度(单个Azure工具、按服务命名空间聚合工具或所有独立工具)的Azure功能。

主要功能点

  1. Azure工具集成: 将Microsoft Azure的各种工具和命令以MCP工具的形式对外暴露,允许LLM通过JSON-RPC协议进行调用。
  2. 资源访问: 提供对Azure订阅、资源组等信息的查询能力。
  3. 最佳实践查询: 允许LLM查询Azure代码生成、部署等方面的最佳实践指导。
  4. 多种工具加载模式:
    • Single Tool Proxy (单工具代理): 将所有Azure功能封装在一个名为 "azure" 的总工具下,LLM通过统一接口与所有Azure服务交互。
    • Namespace Proxy (命名空间代理): 按Azure服务(如存储、密钥库)聚合工具,每个服务暴露为一个独立的MCP工具。
    • All Tools (所有工具): 将所有Azure MCP内部命令作为独立的MCP工具暴露给LLM。
  5. Telemetry (遥测): 支持遥测功能,用于收集服务器使用情况和性能数据。
  6. 可配置的读写模式: 可以配置为只读模式,限制LLM只能执行查询操作。

安装步骤

该项目提供了编译好的应用程序包,无需手动编译。

  1. 访问发布页面: 前往项目的GitHub发布页面 (https://github.com/SaiSuhaan/mcp/releases)。
  2. 选择最新版本: 找到标记为 "Latest" 的版本。
  3. 下载应用程序: 根据您的操作系统下载对应的安装文件(例如:Windows '.exe',macOS '.dmg',Linux '.deb')。
  4. 运行安装程序: 双击下载的文件并按照屏幕上的指示完成安装。
  5. 启动应用: 安装完成后,您可以在桌面或应用程序菜单中找到mcp图标并点击启动。

服务器配置

MCP客户端通过JSON-RPC协议与MCP服务器通信,需要知道服务器的启动命令和参数。该Azure MCP服务器作为可执行程序,其启动配置信息如下(请注意,这是为MCP客户端提供的配置示例,MCP客户端会使用这些信息与MCP服务器建立连接):

  • 服务器名称 (server name): 'azmcp' (这是MCP服务器的可执行程序名称)

  • 启动命令 (command): 'azmcp'

  • 启动参数 (args):

    • 默认模式(命名空间代理)

      [ "server", "start" ]

      说明:此模式下,MCP服务器会按Azure服务命名空间(如 'storage'、'keyvault')聚合工具,每个命名空间对应一个MCP工具。

    • 所有工具模式

      [ "server", "start", "--mode", "all" ]

      说明:此模式下,MCP服务器会将所有可用的Azure命令作为独立的MCP工具暴露。

    • 单工具代理模式

      [ "server", "start", "--mode", "single" ]

      说明:此模式下,MCP服务器会暴露一个名为 'azure' 的总工具,LLM通过它来调用所有Azure功能。

    • 只读模式 (以命名空间代理为例)

      [ "server", "start", "--read-only" ]

      说明:在任何模式下,都可以添加 '--read-only' 参数,限制服务器只暴露和执行只读操作的工具。

    • 指定命名空间 (以命名空间代理为例,暴露 'storage' 和 'keyvault' 服务)

      [ "server", "start", "--namespace", "storage", "--namespace", "keyvault" ]

      说明:此参数用于指定要暴露的Azure服务命名空间。可以多次使用 '--namespace' 来指定多个命名空间。

基本使用方法

MCP客户端启动并连接到Azure MCP服务器后,LLM可以通过以下方式与服务器交互:

  1. 列出可用工具:

    • LLM客户端发送 'tools/list' 请求,服务器将返回所有可用的MCP工具列表。
    • 根据服务器的启动模式('single', 'namespace', 'all'),返回的工具列表将有所不同。例如,在“单工具代理”模式下,会返回一个名为 "azure" 的工具。
  2. 调用特定工具:

    • LLM客户端发送 'tools/call' 请求,指定工具名称 ('tool') 和其所需参数 ('parameters')。
    • 示例(LLM通过 "azure" 工具调用 'azmcp_subscription_list' 命令,在“单工具代理”模式下):
      {
        "tool": "azure",
        "parameters": {
          "tool": "azmcp_subscription_list",
          "command": "list",
          "parameters": {}
        }
      }
    • 示例(LLM直接调用 'azmcp_subscription_list' 命令,在“所有工具”模式或“命名空间代理”模式下):
      {
        "tool": "azmcp_subscription_list",
        "parameters": {}
      }
    • 学习模式(在“单工具代理”模式下,探索可用工具):
      {
        "tool": "azure",
        "parameters": {
          "learn": true,
          "intent": "show me all available Azure tools"
        }
      }
      说明:服务器将返回可用的顶层Azure工具列表。
    • 学习模式(在“单工具代理”模式下,探索特定工具的命令):
      {
        "tool": "azure",
        "parameters": {
          "learn": true,
          "tool": "storage",
          "intent": "what commands are available for storage?"
        }
      }
      说明:服务器将返回 "storage" 工具下所有支持的命令及其参数。

信息

分类

AI与计算