Azure DevOps工具包

一个基于Arcade.dev构建的Azure DevOps MCP服务器,提供21种工具,用于与Azure DevOps项目、工作项、仓库、流水线等进行交互。

  • by subrahmaniank
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 subrahmaniank/arcade-azure-devops-mcp

使用说明

街机蔚蓝devops mcp

用于Azure DevOps的MCP服务器 Arcade.dev。使AI助手能够与Azure DevOps项目、工作项、存储库、管道、wiki等进行交互。

特性

21工具 涵盖:

  • 核心:列出项目、团队、搜索身份
  • 工作项:获取、创建、更新、查询工作项;添加注释
  • 仓库:列出仓库、分支、拉取请求;创建PR
  • 管道:列出定义、版本;队列构建;运行管道
  • 维基:列出wiki,获取wiki页面
  • 搜索:跨存储库搜索代码

快速开始

1.安装依赖项

uv sync

2.配置凭据

提供Azure DevOps凭据有两种选择:

选项A:环境变量(.env 文件)

复制示例环境文件并添加您的凭据:

cp .env.example .env

编辑 .env:

AZURE_DEVOPS_ORG=your-organization-name
AZURE_DEVOPS_PAT=your-personal-access-token

选项B:街机秘密(建议用于制作)

如果没有 .env 如果找到文件或环境变量,服务器会自动回退到 街机秘密这非常适合:

  • 向Arcade市场发布
  • 共享工具包而不暴露凭据
  • 通过Arcade Deploy进行生产部署

在Arcade中配置机密:

# Login to Arcade
arcade login

# Set your secrets
arcade secrets set AZURE_DEVOPS_ORG "your-organization-name"
arcade secrets set AZURE_DEVOPS_PAT "your-personal-access-token"

或通过配置 街机仪表板.

它是如何工作的:

  1. 服务器首先检查环境变量
  2. 如果未找到,请通过以下方式向Arcade Cloud请求机密 context.get_secret()
  3. Arcade提示用户授权秘密访问(仅限第一次)

3.创建个人访问令牌(PAT)

  1. 首选 https://dev.azure.com/{your-org}/_usersSettings/tokens
  2. 点击“新建令牌”
  3. 选择范围:代码(读取/写入)、工作项(读取/写)、构建(读取/执行)、Wiki(读取/编写)
  4. 复制令牌

4.运行MCP服务器

# stdio transport (default) - for Claude Desktop, CLI tools
uv run server.py stdio

# http transport - for Cursor, VS Code
uv run server.py http

对于HTTP传输,请在上查看API文档http://127.0.0.1:8000/docs

配置MCP客户端

光标IDE

arcade configure cursor

或手动添加到 .cursor/mcp.json:

对于环境变量:

{
  "mcpServers": {
    "azure-devops": {
      "command": "uv",
      "args": ["run", "server.py", "stdio"],
      "cwd": "/path/to/arcade-azure-devops-mcp",
      "env": {
        "AZURE_DEVOPS_ORG": "your-org",
        "AZURE_DEVOPS_PAT": "your-pat"
      }
    }
  }
}

使用Arcade Secrets(无本地凭据):

{
  "mcpServers": {
    "azure-devops": {
      "command": "uv",
      "args": ["run", "server.py", "stdio"],
      "cwd": "/path/to/arcade-azure-devops-mcp"
    }
  }
}

VS Code

arcade configure vscode

克劳德桌面

arcade configure claude

可用工具

类别 工具 描述
核心 list_projects 列出组织中的所有项目
get_project 获取项目详细信息
list_teams 列出项目中的团队
search_identities 搜索用户/组
工作项 get_work_item 按ID获取工作项
create_work_item 创建新工作项
update_work_item 更新现有工作项
run_work_item_query 运行WIQL查询
my_work_items 获得分配给您的工作项
add_work_item_comment 向工作项添加注释
回购协议 list_repositories 列出Git存储库
list_branches 列出存储库中的分支
list_pull_requests 列出拉取请求
create_pull_request 创建新的PR
管道 list_build_definitions 列出管道定义
list_builds 列表构建
queue_build 排队新建
run_pipeline 启动管道运行
维基 list_wikis 列出Wiki
get_wiki_page 获取wiki页面内容
搜索 search_code 跨存储库搜索代码

建筑

请求流

┌────────────┐      ┌────────────┐      ┌──────────────┐      ┌─────────────┐
│ MCP Client │      │ MCP Server │      │ Arcade Cloud │      │ Azure DevOps│
└─────┬──────┘      └─────┬──────┘      └──────┬───────┘      └──────┬──────┘
      │                   │                    │                     │
      │  Call tool        │                    │                     │
      │──────────────────>│                    │                     │
      │                   │                    │                     │
      │                   │ Check env vars     │                     │
      │                   │◄──────────────────►│                     │
      │                   │                    │                     │
      │                   │ [If env vars missing - paid tier]        │
      │                   │ get_secret()       │                     │
      │                   │───────────────────>│                     │
      │                   │<───────────────────│                     │
      │                   │                    │                     │
      │                   │ API Request (Basic Auth)                 │
      │                   │─────────────────────────────────────────>│
      │                   │<─────────────────────────────────────────│
      │                   │                    │                     │
      │  Tool result      │                    │                     │
      │<──────────────────│                    │                     │
      │                   │                    │                     │
View Mermaid diagram (for GitHub/GitLab)
sequenceDiagram
    participant C as MCP Client
    participant S as MCP Server
    participant A as Arcade Cloud
    participant D as Azure DevOps

    C->>S: Call tool (e.g., list_projects)
    
    Note over S: Resolve Credentials
    S->>S: Check env: AZURE_DEVOPS_ORG
    S->>S: Check env: AZURE_DEVOPS_PAT
    
    alt Environment variables exist
        S->>S: Use local credentials
    else Environment variables missing (paid tier)
        S->>A: context.get_secret("AZURE_DEVOPS_ORG")
        A-->>S: Return organization name
        S->>A: context.get_secret("AZURE_DEVOPS_PAT")
        A-->>S: Return PAT token
    end
    
    Note over S,D: API Request
    S->>D: GET /{org}/_apis/projects?api-version=7.1
    D-->>S: JSON response
    
    S-->>C: Tool result

组件概述

┌─────────────────────────────────────────────────────────────────────────────┐
│                              MCP CLIENT                                     │
│                         (Cursor / Claude Desktop)                           │
└─────────────────────────────────┬───────────────────────────────────────────┘
                                  │ MCP Protocol (stdio/http)
                                  ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                              MCP SERVER                                     │
│  ┌─────────────────┐  ┌──────────────────┐  ┌─────────────────────────┐    │
│  │  MCPApp         │  │  Azure DevOps    │  │  AuthManager            │    │
│  │  Framework      │──│  Tools (21)      │──│  (credential resolver)  │    │
│  └─────────────────┘  └──────────────────┘  └───────────┬─────────────┘    │
└─────────────────────────────────────────────────────────┼───────────────────┘
                                                          │
                        ┌─────────────────────────────────┼─────────────────┐
                        │                                 │                 │
                        ▼ [Priority 1]                    ▼ [Priority 2]    │
          ┌─────────────────────────┐       ┌───────────────────────┐       │
          │  Local .env /           │       │  Arcade Cloud         │       │
          │  Environment Variables  │       │  (Secrets API)        │       │
          └─────────────────────────┘       │  [Paid tier only]     │       │
                                            └───────────────────────┘       │
                                                                            │
                                                          ┌─────────────────┘
                                                          ▼
                                            ┌───────────────────────┐
                                            │  Azure DevOps         │
                                            │  REST API v7.1        │
                                            └───────────────────────┘
View Mermaid diagram (for GitHub/GitLab)
flowchart TB
    subgraph MCPClient [MCP Client]
        Cursor[Cursor / Claude Desktop]
    end
    
    subgraph MCPServer [MCP Server]
        App[MCPApp Framework]
        Tools[Azure DevOps Tools]
        Auth[AuthManager]
    end
    
    subgraph External [External Services]
        Arcade[Arcade Cloud - Secrets API]
        ADO[Azure DevOps REST API v7.1]
    end
    
    subgraph Local [Local Config]
        Env[.env file / Environment Variables]
    end
    
    Cursor -->|MCP Protocol| App
    App --> Tools
    Tools --> Auth
    Auth -->|Priority 1| Env
    Auth -.->|Priority 2 - Paid Tier| Arcade
    Auth -->|Basic Auth| ADO

凭证解析优先级

  1. 环境变量 (.env 文件或系统环境)-先检查
  2. Arcade Cloud的秘密 -如果找不到env变量,则回退(需要付费Arcade层)

项目结构

arcade-azure-devops-mcp/
├── server.py                  # MCP server entry point with all tools
├── arcade_azure_devops_mcp/   # Azure DevOps client library
│   ├── __init__.py
│   ├── client.py              # REST API client (httpx)
│   ├── models.py              # Pydantic models
│   └── auth/                  # Authentication
│       ├── __init__.py
│       ├── manager.py         # Credential management (env + Arcade secrets)
│       └── oauth.py           # OAuth/Azure AD (optional)
├── pyproject.toml             # Dependencies & entry points
├── .env.example               # Environment template
└── README.md

发展

# Install with dev dependencies
uv sync --all-extras

# Run tests
uv run pytest

发布到Arcade

要将此工具包发布到Arcade市场:

# Ensure pyproject.toml has correct entry points
arcade publish

然后,用户可以通过以下方式安装:

arcade install arcade-azure-devops-mcp

许可证

麻省理工学院

链接