Azure DevOps MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Azure DevOps MCP Server list recent builds for Project Alpha"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Azure DevOps MCP Server
A READ-ONLY MCP (Model Context Protocol) server that connects AI assistants to Azure DevOps Server (on-premises). Works with Claude Code CLI, VS Code AI extensions (Continue, Cline), Cursor, and any MCP-compatible client.
Features
Projects: List and explore projects
Git/Repos: Browse repositories, commits, branches, pull requests, diffs, and code search
Builds: List builds, view logs, analyze errors
Work Items: Query work items, find linked commits/PRs
Releases: View releases and deployment status
Pipelines: List YAML pipelines, view runs, get pipeline configuration
Test Results: View test runs, results, and analyze failures
Related MCP server: mcp-devops-onpremise
Prerequisites
Node.js 18 or higher
Azure DevOps Server 2020 or 2022 (on-premises)
Personal Access Token (PAT) with read scopes
Installation
Option 1: npm (Recommended)
npx azure-devops-mcp@latestOption 2: Clone and Build
git clone https://github.com/elad-nofy/azure-devops-mcp.git
cd azure-devops-mcp
npm install
npm run buildConfiguration
Create a Personal Access Token (PAT)
Go to Azure DevOps Server
Click on your profile icon > Security > Personal access tokens
Create a new token with the following scopes:
Code: Read
Build: Read
Work Items: Read
Release: Read
Test Management: Read
Configure MCP Client
Claude Code CLI
Add to your global settings (~/.claude.json on macOS/Linux, %USERPROFILE%\.claude.json on Windows):
Windows:
{
"mcpServers": {
"azure-devops": {
"command": "cmd",
"args": ["/c", "npx", "azure-devops-mcp"],
"env": {
"AZURE_DEVOPS_URL": "http://your-tfs-server:8080/tfs",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_COLLECTION": "YourCollection",
"AZURE_DEVOPS_PROJECT": "YourDefaultProject"
}
}
}
}macOS / Linux:
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": ["azure-devops-mcp"],
"env": {
"AZURE_DEVOPS_URL": "http://your-tfs-server:8080/tfs",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_COLLECTION": "YourCollection",
"AZURE_DEVOPS_PROJECT": "YourDefaultProject"
}
}
}
}VS Code (Continue/Cline)
Add similar configuration to the extension's MCP settings.
Environment Variables
Variable | Required | Description |
| Yes | Server base URL (e.g., |
| Yes | Personal Access Token |
| No | Collection name (default: |
| No | Default project for commands |
Available Tools
Projects
Tool | Description |
| Test connection to Azure DevOps and verify authentication |
| List all projects in the organization |
| Get detailed project information |
Git / Repositories
Tool | Description |
| List repositories in a project |
| List branches in a repository |
| Get commit history with filters |
| Get commit details with changes |
| Get file diff for a commit |
| List pull requests |
| Get PR details with comments |
| Compare two branches (regression analysis) |
| Search for text in repository files |
| Get file content from a repo at a specific branch/commit |
| Find commits referencing a work item |
| Find PRs linked to a work item |
Builds
Tool | Description |
| List recent builds |
| Get build details |
| Get build logs |
| List build definitions |
| Extract errors from failed builds |
Work Items
Tool | Description |
| Search work items (WIQL or filters) |
| Get work item details |
| List available work item types |
| List iterations/sprints in a project |
| List area paths in a project |
Releases
Tool | Description |
| List releases |
| Get release details |
| List release definitions |
| Get deployment logs |
Pipelines
Tool | Description |
| List YAML pipelines |
| Get recent pipeline runs |
| Get pipeline YAML configuration |
| Get pipeline variables |
Test Results
Tool | Description |
| List test runs in a project |
| Get test run details |
| Get test results from a run |
| Get failed tests from a run |
| Get test runs for a specific build |
| Analyze and group test failures |
Usage Examples
Once configured, you can ask your AI assistant questions like:
"Show me the recent builds for project X"
"What's the status of PR #123?"
"List all bugs assigned to me"
"Show me the commits from last week"
"Why did build #456 fail?"
"What tests failed in build #789?"
"Compare branches Dev/9.1 and Dev/9.2"
"Search for 'IMediator' in the Controllers folder"
Development
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run devTroubleshooting
Connection errors
Verify
AZURE_DEVOPS_URLis correct and accessibleCheck if your PAT has not expired
Ensure your network allows connection to the server
Permission errors
Verify PAT has required scopes
Check if you have access to the project/repository
"Project is required" errors
Set
AZURE_DEVOPS_PROJECTenvironment variable, orPass
projectparameter in tool calls
License
MIT
Available Tools
39 toolsanalyze_build_errorsA
Analyze a failed build and extract errors, warnings, and issues from logs
Inputs: buildId (required), project.
analyze_test_failuresB
Analyze test failures in a build - groups failures by error type
Inputs: buildId (required), project.
compare_branchesA
Compare two branches - shows commits in target that are not in base (useful for regression analysis)
Inputs: repository (required), baseBranch (required), targetBranch (required), project, +1 more.
get_buildA
Get detailed information about a specific build
Inputs: buildId (required), project.
get_build_logsB
Get build logs - useful for analyzing build errors and failures
Inputs: buildId (required), project, logId.
get_commitB
Get detailed information about a specific commit including changes
Inputs: repository (required), commitId (required), project, includeChanges.
get_commit_diffA
Get the diff/changes for a file in a commit
Inputs: repository (required), commitId (required), path (required), project.
get_commits_for_work_itemA
Find commits associated with a work item ID (searches commit messages for #ID)
Inputs: repository (required), workItemId (required), project, top.
get_failed_testsA
Get failed tests from a test run - useful for investigating failures
Inputs: runId (required), project.
get_file_contentA
Get the content of a file from a repository at a specific branch or commit
Inputs: repository (required), path (required), project, branch, +1 more.
get_pipeline_runsC
Get recent runs for a pipeline
Inputs: pipelineId (required), project, branch, top.
get_pipeline_variablesB
Get variables defined for a pipeline
Inputs: pipelineId (required), project.
get_pipeline_yamlB
Get the YAML configuration for a pipeline
Inputs: pipelineId (required), project.
get_projectA
Get detailed information about a specific project
Inputs: project (required).
get_prs_for_work_itemB
Find pull requests linked to a work item
Inputs: repository (required), workItemId (required), project.
get_pull_requestA
Get detailed information about a pull request including comments and threads
Inputs: repository (required), pullRequestId (required), project.
get_releaseB
Get detailed information about a specific release
Inputs: releaseId (required), project.
get_release_logsA
Get deployment logs for a release environment
Inputs: releaseId (required), environmentId (required), project.
get_test_resultsB
Get test results from a test run - shows which tests passed/failed
Inputs: runId (required), project, top.
get_test_runB
Get detailed information about a specific test run
Inputs: runId (required), project.
get_test_runs_for_buildB
Get test runs associated with a specific build
Inputs: buildId (required), project.
get_work_itemB
Get detailed information about a specific work item
Inputs: id (required), expand.
list_areasA
List area paths in a project - useful for organizing and filtering work items by team or component
Inputs: project, depth.
list_branchesC
List branches in a repository
Inputs: repository (required), project.
list_build_definitionsC
List build/pipeline definitions
Inputs: project, name, path.
list_buildsB
List recent builds with status and results
Inputs: project, definitions, branchName, statusFilter, +3 more.
list_commitsB
Get commit history for a repository
Inputs: repository (required), project, branch, author, +3 more.
list_iterationsA
List iterations (sprints) in a project - useful for sprint planning and filtering work items
Inputs: project, depth.
list_pipelinesB
List pipeline definitions in a project
Inputs: project, name, path, top.
list_projectsA
List all projects in the Azure DevOps organization/collection
Inputs: no named parameters.
list_pull_requestsC
List pull requests in a repository
Inputs: repository (required), project, status, creatorId, +2 more.
list_release_definitionsC
List release/deployment pipeline definitions
Inputs: project, searchText, path.
list_releasesB
List releases with deployment status
Inputs: project, definitionId, statusFilter, environmentStatusFilter, +1 more.
list_reposA
List all Git repositories in a project
Inputs: project.
list_test_runsB
List test runs for a project - useful for finding test execution history
Inputs: project, buildUri, top.
list_work_item_typesA
List available work item types in a project
Inputs: project.
query_work_itemsC
Query work items using WIQL (Work Item Query Language) or simple filters
Inputs: project, wiql, workItemType, state, +5 more.
search_codeB
Search for code/text content in a repository
Inputs: repository (required), searchText (required), project, path, +3 more.
test_connectionA
Test the connection to Azure DevOps Server and verify authentication
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 39 tools
Most tools target distinct resources (builds, repos, work items, tests, releases), but some overlap exists, e.g., list_builds vs get_pipeline_runs, and multiple test analysis tools. Descriptions help differentiate, but an agent might occasionally select the wrong tool.
All tool names follow a consistent verb_noun pattern with lowercase and underscores (e.g., list_branches, get_work_item, analyze_build_errors). No mixing of conventions, making the set predictable for agents.
At 39 tools, the count is high but justified by the broad scope of Azure DevOps (builds, repos, work items, tests, releases). However, it exceeds the typical 15-25 range and feels heavy, fitting the 'borderline' description.
The tool surface is heavily read-oriented, lacking mutation operations such as create, update, delete for work items, pull requests, pipelines, and releases. This is a significant gap for a DevOps server, likely causing agent failures when workflows require state changes.
Maintenance
Related MCP Connectors
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Read-only MCP server exposing a user ORANO library to their own AI agent.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI assistants to manage Azure DevOps resources including Work Items, Git repositories, pipelines, and user identities.20 npmMIT
- AlicenseCqualityBmaintenanceMCP server for on-premises Azure DevOps that lets AI assistants browse repositories, review pull requests, manage work items, and interact with wikis, with NTLM authentication support.36332 PyPI6Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for Azure DevOps Server 2022 (on-premises) that enables AI assistants to interact with work items, repositories, builds, and sprints through 29 tools.33 npmMIT
- FlicenseBqualityDmaintenanceAn MCP server that enables AI assistants to interact with Azure DevOps projects, work items, repositories, pipelines, wikis, and more via 21 tools.21-