Skip to main content
Glama
azure-devops MCP Server
by mmruesch12

Azure DevOps MCP Server

An MCP (Model Context Protocol) server that provides integration with Azure DevOps, allowing AI assistants to interact with Azure DevOps work items, pull requests, and wikis.

Features

  • Work Items Management (create, list, get)

  • Pull Request Operations (create, list, get, comment, diff)

  • Wiki Page Management (create, edit)

Related MCP server: image-reader MCP Server

Setup

  1. Install dependencies:

npm install
  1. Configure environment variables (create a .env file):

AZURE_DEVOPS_ORG_URL=https://dev.azure.com/your-org
AZURE_DEVOPS_PAT=your-personal-access-token
AZURE_DEVOPS_PROJECT=default-project
AZURE_DEVOPS_REPOSITORY=default-repo
  1. Build the server:

npm run build

Installation

Add the server configuration to your MCP settings:

For VSCode

On macOS/Linux

Add to ~/.vscode/cline_mcp_settings.json or the Cursor/Roo equivalent:

{
  "mcpServers": {
    "azure-devops": {
      "command": "node",
      "args": ["/path/to/azure-devops-mcp/build/index.js"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "your-org-url",
        "AZURE_DEVOPS_PAT": "your-pat",
        "AZURE_DEVOPS_PROJECT": "your-project",
        "AZURE_DEVOPS_REPOSITORY": "your-repo"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

On Windows

Add to %USERPROFILE%\.vscode\cline_mcp_settings.json or the Cursor/Roo equivalent:

{
  "mcpServers": {
    "azure-devops": {
      "command": "node",
      "args": ["C:/path/to/azure-devops-mcp/build/index.js"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "your-org-url",
        "AZURE_DEVOPS_PAT": "your-pat",
        "AZURE_DEVOPS_PROJECT": "your-project",
        "AZURE_DEVOPS_REPOSITORY": "your-repo"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Available Tools

Work Items

list_work_items

Lists work items in a project.

{
  "project": string,        // Required
  "types"?: string[],      // Optional: Filter by work item types
  "states"?: string[],     // Optional: Filter by states
  "assignedTo"?: string    // Optional: Filter by assigned user
}

get_work_item

Get details of a specific work item.

{
  "project": string,       // Required
  "id": number            // Required: Work item ID
}

create_work_item

Create a new work item.

{
  "project": string,       // Required
  "type": string,         // Required: e.g., "Task", "Bug"
  "title": string,        // Required
  "description"?: string, // Optional
  "assignedTo"?: string  // Optional
}

Pull Requests

list_pull_requests

List pull requests in a repository.

{
  "status"?: "active" | "completed" | "abandoned"  // Optional
}

get_pull_request

Get details of a specific pull request.

{
  "pullRequestId": number  // Required
}

create_pull_request

Create a new pull request.

{
  "title": string,         // Required
  "description": string,   // Required
  "sourceBranch": string, // Required
  "targetBranch": string, // Required
  "reviewers"?: string[]  // Optional: Array of reviewer email addresses
}

create_pull_request_comment

Add a comment to a pull request.

{
  "pullRequestId": number,                                      // Required
  "content": string,                                           // Required
  "threadId"?: number,                                         // Optional: For replies
  "filePath"?: string,                                         // Optional: For file comments
  "lineNumber"?: number,                                       // Optional: For line comments
  "status"?: "active"|"fixed"|"pending"|"wontfix"|"closed"    // Optional: Thread status
}

get_pull_request_diff

Get the diff for a pull request.

{
  "pullRequestId": number,  // Required
  "filePath"?: string,     // Optional: Specific file to get diff for
  "iterationId"?: number   // Optional: Specific iteration to get diff for
}

Wiki

create_wiki_page

Create a new wiki page.

{
  "project": string,    // Required
  "wiki": string,      // Required
  "path": string,      // Required
  "content": string    // Required
}

edit_wiki_page

Edit an existing wiki page.

{
  "project": string,    // Required
  "wiki": string,      // Required
  "path": string,      // Required
  "content": string,   // Required
  "etag": string       // Required: For concurrency control
}

Development

Run in development mode with environment variables:

npm run dev

Note

Unless explicitly specified in the tool arguments, the project and repository parameters will use default values from your environment configuration.

Available Tools

12 tools
create_pull_requestC

Create a new pull request

Inputs: description (required), sourceBranch (required), targetBranch (required), title (required), +1 more.

create_pull_request_commentC

Add a comment to a pull request

Inputs: content (required), pullRequestId (required), filePath, lineNumber, +2 more.

create_wiki_pageC

Create a new wiki page

Inputs: content (required), path (required), project (required), wiki (required).

create_work_itemC

Create a new work item

Inputs: project (required), title (required), type (required), assignedTo, +1 more.

edit_wiki_pageC

Edit an existing wiki page

Inputs: content (required), path (required), project (required), wiki (required), +1 more.

get_projectC

Get details of a specific Azure DevOps project

Inputs: id, name.

get_pull_requestB

Get details of a specific pull request

Inputs: pullRequestId (required).

get_pull_request_diffC

Get the diff for a pull request

Inputs: pullRequestId (required), filePath, iterationId.

get_work_itemC

Get details of a specific work item

Inputs: id (required), project (required).

list_projectsB

List all accessible projects in the Azure DevOps organization

Inputs: no named parameters.

list_pull_requestsC

List pull requests in a repository

Inputs: status.

list_work_itemsC

List work items in a project

Inputs: project (required), assignedTo, states, types.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 12 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose targeting specific resources and actions in Azure DevOps. For example, create_pull_request vs. create_pull_request_comment vs. get_pull_request_diff are all related to pull requests but handle different operations, with no overlapping functionality that would cause confusion.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case throughout, such as create_pull_request, list_projects, and get_work_item. The naming is predictable and readable, with no deviations in style or convention.

    Tool Count5/5

    With 12 tools, this server is well-scoped for Azure DevOps operations, covering core areas like projects, pull requests, work items, and wiki pages. Each tool earns its place without feeling excessive or insufficient for the domain.

    Completeness4/5

    The tool set provides strong coverage for key workflows in Azure DevOps, including CRUD operations for pull requests, work items, and wiki pages, plus project listing and details. Minor gaps exist, such as missing update or delete operations for pull requests and work items, but agents can likely work around these with available tools.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers