项目简介

MCP Azure DevOps 集成服务器是一个基于Model Context Protocol (MCP) 构建的后端服务,旨在将Azure DevOps的功能无缝集成到LLM(大型语言模型)应用中。它通过标准化的JSON-RPC协议,让LLM客户端能够直接访问Azure DevOps的各项REST API,包括项目管理、工作项操作、团队协作和流程定义等。该服务器支持多种传输协议,并提供一套丰富的工具集,极大地简化了LLM与Azure DevOps的交互。

主要功能点

  • 完整的MCP协议支持:遵循MCP规范,通过JSON-RPC 2.0协议进行通信,支持Stdio、HTTP和WebSocket(即将推出)等多种传输模式。
  • 深度集成Azure DevOps:提供超过80种工具,覆盖Azure DevOps Core APIs(项目、团队、进程)、Work Items(创建、更新、查询、附件)、Work Management(看板、Backlog)等核心功能。
  • 灵活的部署选项:可容器化部署为Docker镜像,支持Kubernetes和Docker Compose,也方便本地开发运行。
  • 上下文感知:作为MCP服务器,能够为LLM客户端提供结构化的上下文信息,例如列出可用的项目和团队,并通过工具调用执行复杂操作。
  • 可扩展的工具体系:采用Spring Boot实现,易于扩展和添加新的Azure DevOps API操作作为MCP工具。

安装步骤

有多种方式运行此MCP服务器,推荐使用Docker。

  • 使用Docker (推荐)

    1. 构建Docker镜像: 在仓库根目录运行以下命令:
      docker build -t mcp-azure-devops .
    2. 创建环境变量文件 '.env': 在该文件中配置连接Azure DevOps所需的凭据。
      AZURE_DEVOPS_ORGANIZATION=你的AzureDevOps组织名称
      AZURE_DEVOPS_PAT=你的AzureDevOps个人访问令牌
    3. 运行Docker容器: 选择一种传输模式。
      • STDIO模式 (适用于本地MCP客户端):
        docker run -i --env-file .env mcp-azure-devops stdio
      • HTTP模式 (适用于远程访问,在端口8080上):
        docker run -p 8080:8080 --env-file .env mcp-azure-devops http
  • 本地开发运行

    1. 安装Java 21+。
    2. 配置环境变量:
      export AZURE_DEVOPS_ORGANIZATION=你的AzureDevOps组织名称
      export AZURE_DEVOPS_PAT=你的AzureDevOps个人访问令牌
    3. 使用Gradle运行:
      ./gradlew bootRun

服务器配置

MCP服务器通过JSON-RPC协议与MCP客户端通信。MCP客户端需要配置连接到该服务器的命令及其参数。以下是常用的配置示例,以JSON格式展示,用于说明MCP客户端如何启动和连接此服务器:

  • 通过Docker以STDIO模式连接 (由MCP客户端启动服务器):

    {
      "servers": {
        "azure-devops-mcp": {
          "command": "docker",
          "args": [
            "run",
            "--rm",
            "-i",
            "--env",
            "AZURE_DEVOPS_ORGANIZATION=你的AzureDevOps组织名称",
            "--env",
            "AZURE_DEVOPS_PAT=你的AzureDevOps个人访问令牌",
            "mcp-azure-devops",
            "stdio"
          ]
        }
      }
    }
    • 'azure-devops-mcp': 服务器名称,可自定义。
    • 'command': 用于启动服务器的可执行文件,此处为 'docker'。
    • 'args': 启动命令的参数列表。
      • '-i': 保持STDIN打开,用于STDIO通信。
      • '--env': 设置环境变量,'AZURE_DEVOPS_ORGANIZATION' 和 'AZURE_DEVOPS_PAT' 必须提供您的Azure DevOps组织名称和个人访问令牌。
      • 'mcp-azure-devops': 之前构建的Docker镜像名称。
      • 'stdio': 指定服务器以STDIO模式运行。
  • 通过HTTP模式连接 (MCP客户端连接已运行的远程服务器):

    {
      "servers": {
        "azure-devops-remote": {
          "command": "socat",
          "args": [
            "-",
            "TCP:远程服务器IP:8080"
          ]
        }
      }
    }
    • 'azure-devops-remote': 服务器名称。
    • 'command': 用于建立TCP连接的工具,此处为 'socat'。
    • 'args': 'socat' 命令的参数。
      • '-': 标准输入输出。
      • 'TCP:远程服务器IP:8080': 指向已在HTTP模式下运行的MCP服务器的IP地址和端口(默认为8080)。

基本使用方法

一旦MCP客户端(例如VS Code插件、Claude Desktop等)配置并连接到此服务器,它就可以通过JSON-RPC调用服务器提供的工具来与Azure DevOps交互。

例如,通过MCP客户端调用 'azuredevops_core_get_projects' 工具来列出项目:

  • JSON-RPC请求示例 (由MCP客户端发送):

    {
      "jsonrpc": "2.0",
      "method": "tools/call",
      "id": 1,
      "params": {
        "name": "azuredevops_core_get_projects",
        "arguments": {}
      }
    }
  • JSON-RPC请求示例 (由MCP客户端发送,用于创建工作项):

    {
      "jsonrpc": "2.0",
      "method": "tools/call",
      "id": 2,
      "params": {
        "name": "azuredevops_wit_work_item_create",
        "arguments": {
          "project": "您的项目名称",
          "type": "User Story",
          "title": "新功能开发",
          "description": "实现用户身份验证功能"
        }
      }
    }

服务器将处理这些请求并返回相应的JSON-RPC响应。

信息

分类

开发者工具