trackmcp
Back to directory
3 stars TypeScriptOthers Updated Jul 8, 2025

Documentation

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)

Setup

1. Install dependencies:

bash
npm install

2. Configure environment variables (create a .env file):

env
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

3. Build the server:

bash
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:

json
{
  "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:

json
{
  "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.

typescript
{
  "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.

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

create_work_item

Create a new work item.

typescript
{
  "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.

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

get_pull_request

Get details of a specific pull request.

typescript
{
  "pullRequestId": number  // Required
}

create_pull_request

Create a new pull request.

typescript
{
  "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.

typescript
{
  "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.

typescript
{
  "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.

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

edit_wiki_page

Edit an existing wiki page.

typescript
{
  "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:

bash
npm run dev

Note

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

Frequently asked questions

What is azdo-mcp?

azdo-mcp is a Model Context Protocol (MCP) server listed in the TrackMCP directory.

How do I install azdo-mcp?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is azdo-mcp open source?

Yes — it is hosted on GitHub at https://github.com/mmruesch12/azdo-mcp and has 3 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP