Azure DevOps MCP Server

by AzureDevOpsAPI

1 stars
425 downloads
Not rated
GitHub

About

A Model Context Protocol (MCP) server implementation for Azure DevOps, allowing AI assistants to interact with Azure DevOps APIs through a standardized protocol. It acts as a bridge between AI models and Azure DevOps resources, enabling secure access to projects, work items…

Details

Author
AzureDevOpsAPI
GitHub stars
1
Downloads
425
Categories
Cloud Service

- Access and manage projects, work items, repositories, and more.
- Create and update work items, branches, and pull requests.
- Execute common DevOps workflows through natural language.
- Access repository content via standardized resource URIs.
- Supports multiple authentication methods (PAT, Azure Identity, Azure CLI).
- Provides tools for search, pipelines, wikis, and user details.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Azure DevOps MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install Node.js v16+, then run the server via npx with configuration. Provide environment variables for organization URL and authentication method (PAT, Azure Identity, or Azure CLI). Add the configuration to your Claude Desktop or Cursor AI MCP settings file. The server is invoked with npx -y @tiberriver256/mcp-server-azure-devops.

get_me

Get details of the authenticated user (id, displayName, email)

list_organizations

List all Azure DevOps organizations accessible to the current authentication

list_projects

List all projects in an organization

get_project

Get details of a specific project

get_project_details

Get comprehensive details of a project including process, work item types, and teams

get_repository

Get details of a specific repository

get_repository_details

Get detailed information about a repository including statistics and refs

list_repositories

List repositories in a project

get_file_content

Get content of a file or directory from a repository

get_all_repositories_tree

Displays a hierarchical tree view of files and directories across multiple Azure DevOps repositories within a project, based on their default branches

get_repository_tree

Displays a hierarchical tree view of files and directories within a single repository starting from an optional path

create_branch

Create a new branch from an existing one

create_commit

Create a commit on an existing branch using file changes. - Provide plain branch names (no "refs/heads/"). - ⚠️ Each file path may appear only once per commit request—combine all edits to a file into a single change entry. - Prefer multiple commits when you have sparse or unrelated edits; smaller focused commits keep review context clear. 🎯 RECOMMENDED: Use the SEARCH/REPLACE format (much easier, no line counting!). **Option 1: SEARCH/REPLACE format (EASIEST)** Simply provide the exact text to find and replace: ```json { "changes": [{ "path": "src/api/services/function-call.ts", "search": "return axios.post(apiUrl, payload, requestConfig);", "replace": "return axios.post(apiUrl, payload, requestConfig).then(r => { processResponse(r); return r; });" }] } ``` The server fetches the file, performs the replacement, and generates the diff automatically. No line counting, no hunk headers, no context lines needed! **Option 2: UNIFIED DIFF format (Advanced)** If you prefer full control, provide complete unified diffs: - Each patch MUST have complete hunk headers: @@ -oldStart,oldLines +newStart,newLines @@ - CRITICAL: Every @@ marker MUST include line numbers. Do NOT use @@ without line ranges. - Include 3-5 context lines before and after changes. - For deletions: `--- a/filepath` and `+++ /dev/null` - For additions: `--- /dev/null` and `+++ b/filepath` Example unified diff: ```json { "changes": [{ "patch": "diff --git a/file.yaml b/file.yaml\n--- a/file.yaml\n+++ b/file.yaml\n@@ -4,7 +4,7 @@ spec:\n spec:\n type: ClusterIP\n ports:\n- - port: 8080\n+ - port: 9090\n targetPort: http\n" }] } ```

list_commits

List recent commits on a branch including file-level diff content for each commit

list_work_items

List work items in a project

get_work_item

Get details of a specific work item

create_work_item

Create a new work item

update_work_item

Update an existing work item

manage_work_item_link

Add or remove links between work items

get_work_item_comments

Get comments and discussion history for a specific work item

search_code

Search for code across repositories in a project

search_wiki

Search for content across wiki pages in a project

search_work_items

Search for work items across projects in Azure DevOps

create_pull_request

Create a new pull request, including reviewers, linked work items, and optional tags

get_pull_request

Get a pull request by ID (no repositoryId required; best for Azure DevOps Server where PR IDs are project-scoped)

list_pull_requests

List pull requests in a repository

get_pull_request_comments

Get comments from a specific pull request

add_pull_request_comment

Add a comment to a pull request (repositoryId optional; derived from pullRequestId when omitted)

update_pull_request

Update an existing pull request with new properties, manage reviewers and work items, and add or remove tags

get_pull_request_changes

Get the files changed in a pull request, their unified diffs, source/target branch names, and the status of policy evaluations

get_pull_request_checks

Summarize the latest status checks and policy evaluations for a pull request. - Surfaces pipeline and run identifiers so you can jump straight to the blocking validation. - Pair with pipeline tools (e.g., get_pipeline_run, pipeline_timeline) to inspect failures in depth.

update_pull_request_thread_status

Update the status of a comment thread in a pull request (repositoryId optional; derived from pullRequestId when omitted)

list_pipelines

List pipelines in a project

get_pipeline

Get details of a specific pipeline

list_pipeline_runs

List recent runs for a pipeline

get_pipeline_run

Get details for a specific pipeline run

download_pipeline_artifact

Download a file from a pipeline run artifact and return its textual content

pipeline_timeline

Retrieve the timeline of stages and jobs for a pipeline run, to reduce the amount of data returned, you can filter by state and result

get_pipeline_log

Retrieve a specific pipeline log using the timeline log identifier

trigger_pipeline

Trigger a pipeline run

get_wikis

Get details of wikis in a project

get_wiki_page

Get the content of a wiki page

create_wiki

Create a new wiki in the project

update_wiki_page

Update content of a wiki page

list_wiki_pages

List pages within an Azure DevOps wiki

create_wiki_page

Create a new page in a wiki. If the page already exists at the specified path, it will be updated.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "azure devops mcp server": {
            "azureDevOps": {
                "command": "npx",
                "args": [
                    "-y",
                    "@tiberriver256/mcp-server-azure-devops"
                ],
                "env": {
                    "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
                    "AZURE_DEVOPS_AUTH_METHOD": "azure-identity",
                    "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
                }
            }
        }
    }
}

McpServers

{
    "azureDevOps": {
        "command": "npx",
        "args": [
            "-y",
            "@tiberriver256/mcp-server-azure-devops"
        ],
        "env": {
            "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
            "AZURE_DEVOPS_AUTH_METHOD": "azure-identity",
            "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
        }
    }
}

Azure DevOps MCP Server

A Model Context Protocol (MCP) server implementation for Azure DevOps, allowing AI assistants to interact with Azure DevOps APIs through a standardized protocol.

Overview

This server implements the Model Context Protocol (MCP) for Azure DevOps, enabling AI assistants like Claude to interact with Azure DevOps resources securely. The server acts as a bridge between AI models and Azure DevOps APIs, providing a standardized way to:

- Access and manage projects, work items, repositories, and more
- Create and update work items, branches, and pull requests
- Execute common DevOps workflows through natural language
- Access repository content via standardized resource URIs
- Safely authenticate and interact with Azure DevOps resources

Server Structure

The server is structured around the Model Context Protocol (MCP) for communicating with AI assistants. It provides tools for interacting with Azure DevOps resources including:

- Projects
- Work Items
- Repositories
- Pull Requests
- Branches
- Pipelines

Core Components

- AzureDevOpsServer: Main server class that initializes the MCP server and registers tools
- Tool Handlers: Modular functions for each Azure DevOps operation
- Configuration: Environment-based configuration for organization URL, PAT, etc.

Getting Started

Prerequisites

- Node.js (v16+)
- npm or yarn
- Azure DevOps account with appropriate access
- Authentication credentials (see Authentication Guide for details):
- Personal Access Token (PAT), or
- Azure Identity credentials, or
- Azure CLI login

Running with NPX

Usage with Claude Desktop/Cursor AI

To integrate with Claude Desktop or Cursor AI, add one of the following configurations to your configuration file.

Azure Identity Authentication

Be sure you are logged in to Azure CLI with az login then add the following:

{
  "mcpServers": {
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
        "AZURE_DEVOPS_AUTH_METHOD": "azure-identity",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
      }
    }
  }
}

Personal Access Token (PAT) Authentication

{
  "mcpServers": {
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
        "AZURE_DEVOPS_AUTH_METHOD": "pat",
        "AZURE_DEVOPS_PAT": "<YOUR_PAT>",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
      }
    }
  }
}

For detailed configuration instructions and more authentication options, see the Authentication Guide.

Authentication Methods

This server supports multiple authentication methods for connecting to Azure DevOps APIs. For detailed setup instructions, configuration examples, and troubleshooting tips, see the Authentication Guide.

Supported Authentication Methods

1. Personal Access Token (PAT) - Simple token-based authentication
2. Azure Identity (DefaultAzureCredential) - Flexible authentication using the Azure Identity SDK
3. Azure CLI - Authentication using your Azure CLI login

Example configuration files for each authentication method are available in the examples directory.

Environment Variables

For a complete list of environment variables and their descriptions, see the Authentication Guide.

Key environment variables include:

| Variable | Description | Required | Default |
| ------------------------------ | ---------------------------------------------------------------------------------- | ---------------------------- | ---------------- |
| AZURE_DEVOPS_AUTH_METHOD | Authentication method (pat, azure-identity, or azure-cli) - case-insensitive | No | azure-identity |
| AZURE_DEVOPS_ORG_URL | Full URL to your Azure DevOps organization | Yes | - |
| AZURE_DEVOPS_PAT | Personal Access Token (for PAT auth) | Only with PAT auth | - |
| AZURE_DEVOPS_DEFAULT_PROJECT | Default project if none specified | No | - |
| AZURE_DEVOPS_API_VERSION | API version to use | No | Latest |
| AZURE_TENANT_ID | Azure AD tenant ID (for service principals) | Only with service principals | - |
| AZURE_CLIENT_ID | Azure AD application ID (for service principals) | Only with service principals | - |
| AZURE_CLIENT_SECRET | Azure AD client secret (for service principals) | Only with service principals | - |
| LOG_LEVEL | Logging level (debug, info, warn, error) | No | info |

Troubleshooting Authentication

For detailed troubleshooting information for each authentication method, see the Authentication Guide.

Common issues include:

- Invalid or expired credentials
- Insufficient permissions
- Network connectivity problems
- Configuration errors

Authentication Implementation Details

For technical details about how authentication is implemented in the Azure DevOps MCP server, see the Authentication Guide and the source code in the src/auth directory.

Available Tools

The Azure DevOps MCP server provides a variety of tools for interacting with Azure DevOps resources. For detailed documentation on each tool, please refer to the corresponding documentation.

User Tools

- get_me: Get details of the authenticated user (id, displayName, email)

Organization Tools

- list_organizations: List all accessible organizations

Project Tools

- list_projects: List all projects in an organization
- get_project: Get details of a specific project
- get_project_details: Get comprehensive details of a project including process, work item types, and teams

Repository Tools

- list_repositories: List all repositories in a project
- get_repository: Get details of a specific repository
- get_repository_details: Get detailed information about a repository including statistics and refs
- get_file_content: Get content of a file or directory from a repository

Work Item Tools

- get_work_item: Retrieve a work item by ID
- create_work_item: Create a new work item
- update_work_item: Update an existing work item
- list_work_items: List work items in a project
- manage_work_item_link: Add, remove, or update links between work items

Search Tools

- search_code: Search for code across repositories in a project
- search_wiki: Search for content across wiki pages in a project
- search_work_items: Search for work items across projects in Azure DevOps

Pipelines Tools

- list_pipelines: List pipelines in a project
- get_pipeline: Get details of a specific pipeline
- trigger_pipeline: Trigger a pipeline run with customizable parameters

Wiki Tools

- get_wikis: List all wikis in a project
- get_wiki_page: Get content of a specific wiki page as plain text

Pull Requests Tools

- create_pull_request: Create a new pull request between branches in a repository
- list_pull_requests: List and filter pull requests in a project or repository
- get_pull_request_comments: Get comments and comment threads from a specific pull request
- add_pull_request_comment: Add a comment to a pull request (reply to existing comments or create new threads)

For comprehensive documentation on all tools, see the Tools Documentation.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for contribution guidelines.

Star History

Star History Chart

License

MIT

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.