Content
# ⭐ Azure DevOps On-Premise MCP Server
This project provides a lightweight server to interact with on-premises Azure DevOps, enabling automation, project management, and streamlined workflows.
Forked from [web-marketing-hr](https://www.npmjs.com/package/@web-marketing-hr/azure-devops-mcp), which itself is a fork of [Microsoft's Azure DevOps MCP](https://github.com/microsoft/azure-devops-mcp)
## 📺 Overview
The Azure DevOps MCP Server brings Azure DevOps context to your agents. Try prompts like:
- "List my ADO projects"
- "List ADO Builds for 'MyProjectName'"
- "List ADO Repos for 'MyProjectName'"
- "List test plans for 'MyProjectName'"
- "List teams for project 'MyProjectName'"
- "List iterations for project 'MyProjectName'"
- "List my work items for project 'MyProjectName'"
- "List work items in current iteration for 'MyProjectName' project and 'MyProjectName Team'"
- "List all wikis in the 'MyProjectName' project"
- "Create a wiki page '/Architecture/Overview' with content about system design"
- "Update the wiki page '/Getting Started' with new onboarding instructions"
- "Get the content of the wiki page '/API/Authentication' from the Documentation wiki"
## 🏆 Expectations
The Azure DevOps MCP Server is built from tools that are concise, simple, focused, and easy to use—each designed for a specific scenario. We intentionally avoid complex tools that try to do too much. The goal is to provide a thin abstraction layer over the REST APIs, making data access straightforward and letting the language model handle complex reasoning.
## ⚙️ Supported Tools
See [TOOLSET.md](./docs/TOOLSET.md) for a comprehensive list.
## 🔌 Installation & Getting Started
For the best experience, use Visual Studio Code and GitHub Copilot. See the [getting started documentation](./docs/GETTINGSTARTED.md) to use our MCP Server with other tools such as Visual Studio 2022, Claude Code, and Cursor.
### Prerequisites
1. Install [VS Code](https://code.visualstudio.com/download) or [VS Code Insiders](https://code.visualstudio.com/insiders)
2. Install [Node.js](https://nodejs.org/en/download) 20+
3. Open VS Code in an empty folder
### Installation
In your project, add a `.vscode\mcp.json` file and setup environment varibales with the following content:
```json
{
"servers": {
"ado-on-prem-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@lotfihoc/ado-on-prem-mcp", "<your_devops_project_name>", "--authentication", "envvar"],
"env": {
"LOG_LEVEL": "info",
"ADO_MCP_MODE": "onprem",
"ADO_MCP_AUTH_TYPE": "basic",
"ADO_MCP_ORG_URL": "https://<on-prem-host>/tfs/<collection_name>",
"ADO_MCP_API_VERSION": "6.0",
"ADO_MCP_BATCH_API_VERSION": "6.0",
"ADO_MCP_MARKDOWN_COMMENTS_API_VERSION": "5.0",
"NODE_EXTRA_CA_CERTS": "<path_to_cert>",
"ADO_MCP_AUTH_TOKEN": "<your_ado_pat>"
}
}
}
}
```
#### Environment variables
- `ADO_MCP_AUTH_TOKEN`:
- DevOps Personal Access Token (PAT)
- `ADO_MCP_MODE`:
- Whether Azure DevOps is on-premises or in the cloud
- `"cloud"` (default) or `"onprem"`
- `ADO_MCP_AUTH_TYPE`
- DevOps authentication mode
- `"bearer"` (default) or `"basic"`
- `ADO_MCP_ORG_URL`:
- Full URL of the on-premises instance, for example:
`https://my-server/tfs/MyCollection`
- `ADO_MCP_API_VERSION`:
- Set Azure DevOps API version
- default: `"6.0-preview"`
- `ADO_MCP_BATCH_API_VERSION`:
- Set Azure DevOps Batch API version
- default: `"6.0-preview"`
- `ADO_MCP_MARKDOWN_COMMENTS_API_VERSION`:
- Set Azure DevOps Markdown API version
- default: `"5.0"`
- `NODE_EXTRA_CA_CERTS`:
- Set this variable to your certifcat path if needed
- `ADO_MCP_AUTH_TOKEN`:
- Ado PAT
If you are using continue dev on vscode, you can use this config
```yaml
mcpServers:
- name: ado-on-prem-mcp
type: stdio
command: npx
args:
- -y
- "@lotfihoc/ado-on-prem-mcp"
- "<your_devops_project_name>"
- "--authentication"
- "envvar"
env:
LOG_LEVEL: "info"
ADO_MCP_MODE: "onprem"
ADO_MCP_AUTH_TYPE: "basic"
ADO_MCP_ORG_URL: "https://<on-prem-host>/tfs/<collection_name>"
ADO_MCP_API_VERSION: "6.0"
ADO_MCP_BATCH_API_VERSION: "6.0"
ADO_MCP_MARKDOWN_COMMENTS_API_VERSION: "5.0"
ADO_MCP_AUTH_TOKEN: ${{ secrets.ADO_TOKEN }}
NODE_EXTRA_CA_CERTS: ${{ secrets.NODE_EXTRA_CA_CERTS }}
```
It's recommended to set `ADO_MCP_AUTH_TOKEN` in your terminal or command line. Windows example:
```bat
setx ADO_MCP_AUTH_TOKEN "<pat_token>"`
```
🔥 To stay up to date with the latest features, you can use our nightly builds. Simply update your `mcp.json` configuration to use `@lotfihoc/ado-on-prem-mcp@next`. Here is an updated example:
```json
{
"servers": {
"ado-on-prem-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@lotfihoc/ado-on-prem-mcp", "<your_devops_project_name>", "--authentication", "envvar"],
"env": {
"LOG_LEVEL": "info",
"ADO_MCP_MODE": "onprem",
"ADO_MCP_AUTH_TYPE": "basic",
"ADO_MCP_ORG_URL": "https://<on-prem-host>/tfs/<collection_name>",
"ADO_MCP_API_VERSION": "6.0",
"ADO_MCP_BATCH_API_VERSION": "6.0",
"ADO_MCP_MARKDOWN_COMMENTS_API_VERSION": "5.0",
"NODE_EXTRA_CA_CERTS": "<path_to_cert>",
"ADO_MCP_AUTH_TOKEN": "<your_ado_pat>"
}
}
}
}
```
Save the file, then click 'Start'.

In chat, switch to [Agent Mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode).
Click "Select Tools" and choose the available tools.

Open GitHub Copilot Chat and try a prompt like `List ADO projects`. The first time an ADO tool is executed browser will open prompting to login with your Microsoft account. Please ensure you are using credentials matching selected Azure DevOps organization.
> 💥 We strongly recommend creating a `.github\copilot-instructions.md` in your project. This will enhance your experience using the Azure DevOps MCP Server with GitHub Copilot Chat.
> To start, just include "`This project uses Azure DevOps. Always check to see if the Azure DevOps MCP server has a tool relevant to the user's request`" in your copilot instructions file.
See the [getting started documentation](./docs/GETTINGSTARTED.md) to use our MCP Server with other tools such as Visual Studio 2022, Claude Code, and Cursor.
## 🌏 Using Domains
Azure DevOps exposes a large surface area. As a result, our Azure DevOps MCP Server includes many tools. To keep the toolset manageable, avoid confusing the model, and respect client limits on loaded tools, use Domains to load only the areas you need. Domains are named groups of related tools (for example: core, work, work-items, repositories, wiki). Add the `-d` argument and the domain names to the server args in your `mcp.json` to list the domains to enable.
For example, use `"-d", "core", "work", "work-items"` to load only Work Item related tools (see the example below).
> By default all domains are loaded
```json
{
"servers": {
"ado-on-prem-mcp-with-filtered-domains": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@lotfihoc/ado-on-prem-mcp", "<your_devops_project_name>", "-d", "core", "work", "work-items", "--authentication", "envvar"],
"env": {
"LOG_LEVEL": "info",
"ADO_MCP_MODE": "onprem",
"ADO_MCP_AUTH_TYPE": "basic",
"ADO_MCP_ORG_URL": "https://<on-prem-host>/tfs/<collection_name>",
"ADO_MCP_API_VERSION": "6.0",
"ADO_MCP_BATCH_API_VERSION": "6.0",
"ADO_MCP_MARKDOWN_COMMENTS_API_VERSION": "5.0",
"NODE_EXTRA_CA_CERTS": "<path_to_cert>",
"ADO_MCP_AUTH_TOKEN": "<your_ado_pat>"
}
}
}
}
```
Domains that are available are: `core`, `work`, `work-items`, `search`, `test-plans`, `repositories`, `wiki`, `pipelines`, `advanced-security`
We recommend that you always enable `core` tools so that you can fetch project level information.
If you are using continiue dev, you can use the following config
```yml
mcpServers:
- name: ado-on-prem-mcp-domains
type: stdio
command: npx
args:
- -y
- "@lotfihoc/ado-on-prem-mcp"
- "<your_devops_project_name>"
- "-d"
- "core"
- "work"
- "work-items"
- "--authentication"
- "envvar"
env:
LOG_LEVEL: "info"
ADO_MCP_MODE: "onprem"
ADO_MCP_AUTH_TYPE: "basic"
ADO_MCP_ORG_URL: "https://<on-prem-host>/tfs/<collection_name>"
ADO_MCP_API_VERSION: "6.0"
ADO_MCP_BATCH_API_VERSION: "6.0"
ADO_MCP_MARKDOWN_COMMENTS_API_VERSION: "5.0"
ADO_MCP_AUTH_TOKEN: ${{ secrets.ADO_TOKEN }}
NODE_EXTRA_CA_CERTS: ${{ secrets.NODE_EXTRA_CA_CERTS }}
```
Don't forget to create `.env` in `.continue` folder to user secrets
# Toolset
The following section provides the list of available tools you can use to interact with Azure Devops On-Premise.
## Overview
| Functional Area | Tool | Description |
| ----------------- | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| Advanced Security | [mcp_ado_advsec_get_alerts](#mcp_ado_advsec_get_alerts) | Retrieve Advanced Security alerts for a repository |
| Advanced Security | [mcp_ado_advsec_get_alert_details](#mcp_ado_advsec_get_alert_details) | Get detailed information about a specific security alert |
| Core | [mcp_ado_core_list_projects](#mcp_ado_core_list_projects) | List all projects in the organization |
| Core | [mcp_ado_core_list_project_teams](#mcp_ado_core_list_project_teams) | List teams within a project |
| Core | [mcp_ado_core_get_identity_ids](#mcp_ado_core_get_identity_ids) | Retrieve identity IDs by search filter |
| Pipelines | [mcp_ado_pipelines_create_pipeline](#mcp_ado_pipelines_create_pipeline) | Create a new pipeline with YAML configuration |
| Pipelines | [mcp_ado_pipelines_get_builds](#mcp_ado_pipelines_get_builds) | Retrieve a list of builds with optional filters |
| Pipelines | [mcp_ado_pipelines_get_build_status](#mcp_ado_pipelines_get_build_status) | Get the status of a specific build |
| Pipelines | [mcp_ado_pipelines_get_build_log](#mcp_ado_pipelines_get_build_log) | Retrieve complete logs for a build |
| Pipelines | [mcp_ado_pipelines_get_build_log_by_id](#mcp_ado_pipelines_get_build_log_by_id) | Get a specific build log by log ID |
| Pipelines | [mcp_ado_pipelines_get_build_changes](#mcp_ado_pipelines_get_build_changes) | Get changes (commits) associated with a build |
| Pipelines | [mcp_ado_pipelines_get_build_definitions](#mcp_ado_pipelines_get_build_definitions) | List build/pipeline definitions in a project |
| Pipelines | [mcp_ado_pipelines_get_build_definition_revisions](#mcp_ado_pipelines_get_build_definition_revisions) | Get revision history of a build definition |
| Pipelines | [mcp_ado_pipelines_run_pipeline](#mcp_ado_pipelines_run_pipeline) | Start a new pipeline run with optional parameters |
| Pipelines | [mcp_ado_pipelines_get_run](#mcp_ado_pipelines_get_run) | Get details of a specific pipeline run |
| Pipelines | [mcp_ado_pipelines_list_runs](#mcp_ado_pipelines_list_runs) | List recent runs for a pipeline |
| Pipelines | [mcp_ado_pipelines_update_build_stage](#mcp_ado_pipelines_update_build_stage) | Update a build stage (cancel, retry, or run) |
| Repositories | [mcp_ado_repo_list_repos_by_project](#mcp_ado_repo_list_repos_by_project) | List all repositories in a project |
| Repositories | [mcp_ado_repo_get_repo_by_name_or_id](#mcp_ado_repo_get_repo_by_name_or_id) | Get repository details by name or ID |
| Repositories | [mcp_ado_repo_list_branches_by_repo](#mcp_ado_repo_list_branches_by_repo) | List all branches in a repository |
| Repositories | [mcp_ado_repo_list_my_branches_by_repo](#mcp_ado_repo_list_my_branches_by_repo) | List branches created by current user |
| Repositories | [mcp_ado_repo_get_branch_by_name](#mcp_ado_repo_get_branch_by_name) | Get details of a specific branch |
| Repositories | [mcp_ado_repo_create_branch](#mcp_ado_repo_create_branch) | Create a new branch from a source branch |
| Repositories | [mcp_ado_repo_search_commits](#mcp_ado_repo_search_commits) | Search for commits with comprehensive filters |
| Repositories | [mcp_ado_repo_list_pull_requests_by_repo_or_project](#mcp_ado_repo_list_pull_requests_by_repo_or_project) | List pull requests with optional filters |
| Repositories | [mcp_ado_repo_list_pull_requests_by_commits](#mcp_ado_repo_list_pull_requests_by_commits) | Find pull requests containing specific commits |
| Repositories | [mcp_ado_repo_get_pull_request_by_id](#mcp_ado_repo_get_pull_request_by_id) | Get details of a specific pull request |
| Repositories | [mcp_ado_repo_create_pull_request](#mcp_ado_repo_create_pull_request) | Create a new pull request |
| Repositories | [mcp_ado_repo_update_pull_request](#mcp_ado_repo_update_pull_request) | Update pull request properties and settings |
| Repositories | [mcp_ado_repo_update_pull_request_reviewers](#mcp_ado_repo_update_pull_request_reviewers) | Add or remove reviewers from a pull request |
| Repositories | [mcp_ado_repo_list_pull_request_threads](#mcp_ado_repo_list_pull_request_threads) | List comment threads on a pull request |
| Repositories | [mcp_ado_repo_list_pull_request_thread_comments](#mcp_ado_repo_list_pull_request_thread_comments) | List comments in a specific thread |
| Repositories | [mcp_ado_repo_create_pull_request_thread](#mcp_ado_repo_create_pull_request_thread) | Create a new comment thread on a pull request |
| Repositories | [mcp_ado_repo_reply_to_comment](#mcp_ado_repo_reply_to_comment) | Reply to a pull request comment |
| Repositories | [mcp_ado_repo_resolve_comment](#mcp_ado_repo_resolve_comment) | Mark a comment thread as resolved |
| Search | [mcp_ado_search_code](#mcp_ado_search_code) | Search for code across repositories |
| Search | [mcp_ado_search_wiki](#mcp_ado_search_wiki) | Search wiki pages by keywords |
| Search | [mcp_ado_search_workitem](#mcp_ado_search_workitem) | Search work items by text and filters |
| Test Plans | [mcp_ado_testplan_list_test_plans](#mcp_ado_testplan_list_test_plans) | List test plans in a project |
| Test Plans | [mcp_ado_testplan_create_test_plan](#mcp_ado_testplan_create_test_plan) | Create a new test plan |
| Test Plans | [mcp_ado_testplan_list_test_suites](#mcp_ado_testplan_list_test_suites) | List test suites in a test plan |
| Test Plans | [mcp_ado_testplan_create_test_suite](#mcp_ado_testplan_create_test_suite) | Create a test suite within a test plan |
| Test Plans | [mcp_ado_testplan_add_test_cases_to_suite](#mcp_ado_testplan_add_test_cases_to_suite) | Add test cases to a test suite |
| Test Plans | [mcp_ado_testplan_list_test_cases](#mcp_ado_testplan_list_test_cases) | List test cases in a test suite |
| Test Plans | [mcp_ado_testplan_create_test_case](#mcp_ado_testplan_create_test_case) | Create a new test case work item |
| Test Plans | [mcp_ado_testplan_update_test_case_steps](#mcp_ado_testplan_update_test_case_steps) | Update steps of an existing test case |
| Test Plans | [mcp_ado_testplan_show_test_results_from_build_id](#mcp_ado_testplan_show_test_results_from_build_id) | Get test results for a specific build |
| Wiki | [mcp_ado_wiki_list_wikis](#mcp_ado_wiki_list_wikis) | List wikis in organization or project |
| Wiki | [mcp_ado_wiki_get_wiki](#mcp_ado_wiki_get_wiki) | Get details of a specific wiki |
| Wiki | [mcp_ado_wiki_list_pages](#mcp_ado_wiki_list_pages) | List pages in a wiki |
| Wiki | [mcp_ado_wiki_get_page](#mcp_ado_wiki_get_page) | Get wiki page metadata (without content) |
| Wiki | [mcp_ado_wiki_get_page_content](#mcp_ado_wiki_get_page_content) | Retrieve wiki page content |
| Wiki | [mcp_ado_wiki_create_or_update_page](#mcp_ado_wiki_create_or_update_page) | Create or update a wiki page |
| Work Items | [mcp_ado_wit_get_work_item](#mcp_ado_wit_get_work_item) | Get a work item by ID |
| Work Items | [mcp_ado_wit_get_work_items_batch_by_ids](#mcp_ado_wit_get_work_items_batch_by_ids) | Retrieve multiple work items by IDs |
| Work Items | [mcp_ado_wit_create_work_item](#mcp_ado_wit_create_work_item) | Create a new work item |
| Work Items | [mcp_ado_wit_update_work_item](#mcp_ado_wit_update_work_item) | Update fields of a work item |
| Work Items | [mcp_ado_wit_update_work_items_batch](#mcp_ado_wit_update_work_items_batch) | Update multiple work items in batch |
| Work Items | [mcp_ado_wit_add_child_work_items](#mcp_ado_wit_add_child_work_items) | Create child work items under a parent |
| Work Items | [mcp_ado_wit_work_items_link](#mcp_ado_wit_work_items_link) | Link work items together |
| Work Items | [mcp_ado_wit_work_item_unlink](#mcp_ado_wit_work_item_unlink) | Remove links from a work item |
| Work Items | [mcp_ado_wit_add_artifact_link](#mcp_ado_wit_add_artifact_link) | Link artifacts (commits, builds, PRs) to work items |
| Work Items | [mcp_ado_wit_link_work_item_to_pull_request](#mcp_ado_wit_link_work_item_to_pull_request) | Link a work item to a pull request |
| Work Items | [mcp_ado_wit_list_work_item_comments](#mcp_ado_wit_list_work_item_comments) | List comments on a work item |
| Work Items | [mcp_ado_wit_add_work_item_comment](#mcp_ado_wit_add_work_item_comment) | Add a comment to a work item |
| Work Items | [mcp_ado_wit_list_work_item_revisions](#mcp_ado_wit_list_work_item_revisions) | Get revision history of a work item |
| Work Items | [mcp_ado_wit_get_work_item_type](#mcp_ado_wit_get_work_item_type) | Get details of a work item type |
| Work Items | [mcp_ado_wit_my_work_items](#mcp_ado_wit_my_work_items) | List work items relevant to current user |
| Work Items | [mcp_ado_wit_get_work_items_for_iteration](#mcp_ado_wit_get_work_items_for_iteration) | Get work items in a specific iteration |
| Work Items | [mcp_ado_wit_list_backlogs](#mcp_ado_wit_list_backlogs) | List backlogs for a team |
| Work Items | [mcp_ado_wit_list_backlog_work_items](#mcp_ado_wit_list_backlog_work_items) | Get work items in a backlog |
| Work Items | [mcp_ado_wit_get_query](#mcp_ado_wit_get_query) | Get a work item query by ID or path |
| Work Items | [mcp_ado_wit_get_query_results_by_id](#mcp_ado_wit_get_query_results_by_id) | Execute a query and get results |
| Work | [mcp_ado_work_list_iterations](#mcp_ado_work_list_iterations) | List all iterations in a project |
| Work | [mcp_ado_work_create_iterations](#mcp_ado_work_create_iterations) | Create new iterations in a project |
| Work | [mcp_ado_work_list_team_iterations](#mcp_ado_work_list_team_iterations) | List iterations assigned to a team |
| Work | [mcp_ado_work_assign_iterations](#mcp_ado_work_assign_iterations) | Assign iterations to a team |
| Work | [mcp_ado_work_get_iteration_capacities](#mcp_ado_work_get_iteration_capacities) | Get capacity for all teams in an iteration |
| Work | [mcp_ado_work_get_team_capacity](#mcp_ado_work_get_team_capacity) | Get capacity for a specific team in iteration |
| Work | [mcp_ado_work_update_team_capacity](#mcp_ado_work_update_team_capacity) | Update team member capacity for iteration |
## Advanced Security
### mcp_ado_advsec_get_alerts
Retrieve Advanced Security alerts for a repository.
- **Required**: `project`, `repository`, `confidenceLevels`
- **Optional**: `alertType`, `continuationToken`, `onlyDefaultBranch`, `orderBy`, `ref`, `ruleId`, `ruleName`, `severities`, `states`, `toolName`, `top`, `validity`
### mcp_ado_advsec_get_alert_details
Get detailed information about a specific Advanced Security alert.
- **Required**: `project`, `repository`, `alertId`
- **Optional**: `ref`
## Core
### mcp_ado_core_list_projects
Retrieve a list of projects in your Azure DevOps organization.
- **Required**: None
- **Optional**: `continuationToken`, `projectNameFilter`, `skip`, `stateFilter`, `top`
### mcp_ado_core_list_project_teams
Retrieve a list of teams for the specified Azure DevOps project.
- **Required**: `project`
- **Optional**: `mine`, `skip`, `top`
### mcp_ado_core_get_identity_ids
Retrieve Azure DevOps identity IDs for a provided search filter.
- **Required**: `searchFilter`
- **Optional**: None
## Pipelines
### mcp_ado_pipelines_create_pipeline
Creates a pipeline definition with YAML configuration for a given project.
- **Required**: `project`, `name`, `yamlPath`, `repositoryType`, `repositoryName`
- **Optional**: `folder`, `repositoryConnectionId`, `repositoryId`
### mcp_ado_pipelines_get_builds
Retrieves a list of builds for a given project.
- **Required**: `project`
- **Optional**: `branchName`, `buildIds`, `buildNumber`, `continuationToken`, `definitions`, `deletedFilter`, `maxBuildsPerDefinition`, `maxTime`, `minTime`, `properties`, `queryOrder`, `queues`, `reasonFilter`, `repositoryId`, `repositoryType`, `requestedFor`, `resultFilter`, `statusFilter`, `tagFilters`, `top`
### mcp_ado_pipelines_get_build_status
Fetches the status of a specific build.
- **Required**: `project`, `buildId`
- **Optional**: None
### mcp_ado_pipelines_get_build_log
Retrieves the logs for a specific build.
- **Required**: `project`, `buildId`
- **Optional**: None
### mcp_ado_pipelines_get_build_log_by_id
Get a specific build log by log ID.
- **Required**: `project`, `buildId`, `logId`
- **Optional**: `endLine`, `startLine`
### mcp_ado_pipelines_get_build_changes
Get the changes associated with a specific build.
- **Required**: `project`, `buildId`
- **Optional**: `continuationToken`, `includeSourceChange`, `top`
### mcp_ado_pipelines_get_build_definitions
Retrieves a list of build definitions for a given project.
- **Required**: `project`
- **Optional**: `builtAfter`, `continuationToken`, `definitionIds`, `includeAllProperties`, `includeLatestBuilds`, `minMetricsTime`, `name`, `notBuiltAfter`, `path`, `processType`, `queryOrder`, `repositoryId`, `repositoryType`, `taskIdFilter`, `top`, `yamlFilename`
### mcp_ado_pipelines_get_build_definition_revisions
Retrieves a list of revisions for a specific build definition.
- **Required**: `project`, `definitionId`
- **Optional**: None
### mcp_ado_pipelines_run_pipeline
Starts a new run of a pipeline.
- **Required**: `project`, `pipelineId`
- **Optional**: `pipelineVersion`, `previewRun`, `resources`, `stagesToSkip`, `templateParameters`, `variables`, `yamlOverride`
### mcp_ado_pipelines_get_run
Gets a run for a particular pipeline.
- **Required**: `project`, `pipelineId`, `runId`
- **Optional**: None
### mcp_ado_pipelines_list_runs
Gets top 10000 runs for a particular pipeline.
- **Required**: `project`, `pipelineId`
- **Optional**: None
### mcp_ado_pipelines_update_build_stage
Updates the stage of a specific build.
- **Required**: `project`, `buildId`, `stageName`, `status`
- **Optional**: `forceRetryAllJobs`
## Repositories
### mcp_ado_repo_list_repos_by_project
Retrieve a list of repositories for a given project.
- **Required**: `project`
- **Optional**: `repoNameFilter`, `skip`, `top`
### mcp_ado_repo_get_repo_by_name_or_id
Get the repository by project and repository name or ID.
- **Required**: `project`, `repositoryNameOrId`
- **Optional**: None
### mcp_ado_repo_list_branches_by_repo
Retrieve a list of branches for a given repository.
- **Required**: `repositoryId`
- **Optional**: `filterContains`, `top`
### mcp_ado_repo_list_my_branches_by_repo
Retrieve a list of my branches for a given repository Id.
- **Required**: `repositoryId`
- **Optional**: `filterContains`, `top`
### mcp_ado_repo_get_branch_by_name
Get a branch by its name.
- **Required**: `repositoryId`, `branchName`
- **Optional**: None
### mcp_ado_repo_create_branch
Create a new branch in the repository.
- **Required**: `repositoryId`, `branchName`
- **Optional**: `sourceBranchName`, `sourceCommitId`
### mcp_ado_repo_search_commits
Search for commits in a repository with comprehensive filtering capabilities.
- **Required**: `project`, `repository`
- **Optional**: `author`, `authorEmail`, `commitIds`, `committer`, `committerEmail`, `fromCommit`, `fromDate`, `historySimplificationMode`, `includeLinks`, `includeWorkItems`, `searchText`, `skip`, `toCommit`, `toDate`, `top`, `version`, `versionType`
### mcp_ado_repo_list_pull_requests_by_repo_or_project
Retrieve a list of pull requests for a given repository.
- **Required**: None (either `repositoryId` or `project` must be provided)
- **Optional**: `created_by_me`, `created_by_user`, `i_am_reviewer`, `project`, `repositoryId`, `skip`, `sourceRefName`, `status`, `targetRefName`, `top`, `user_is_reviewer`
### mcp_ado_repo_list_pull_requests_by_commits
Lists pull requests by commit IDs to find which pull requests contain specific commits.
- **Required**: `project`, `repository`, `commits`
- **Optional**: `queryType`
### mcp_ado_repo_get_pull_request_by_id
Get a pull request by its ID.
- **Required**: `repositoryId`, `pullRequestId`
- **Optional**: `includeWorkItemRefs`
### mcp_ado_repo_create_pull_request
Create a new pull request.
- **Required**: `repositoryId`, `sourceRefName`, `targetRefName`, `title`
- **Optional**: `description`, `forkSourceRepositoryId`, `isDraft`, `labels`, `workItems`
### mcp_ado_repo_update_pull_request
Update a Pull Request by ID with specified fields.
- **Required**: `repositoryId`, `pullRequestId`
- **Optional**: `autoComplete`, `bypassReason`, `deleteSourceBranch`, `description`, `isDraft`, `mergeStrategy`, `status`, `targetRefName`, `title`, `transitionWorkItems`
### mcp_ado_repo_update_pull_request_reviewers
Add or remove reviewers for an existing pull request.
- **Required**: `repositoryId`, `pullRequestId`, `reviewerIds`, `action`
- **Optional**: None
### mcp_ado_repo_list_pull_request_threads
Retrieve a list of comment threads for a pull request.
- **Required**: `repositoryId`, `pullRequestId`
- **Optional**: `baseIteration`, `fullResponse`, `iteration`, `project`, `skip`, `top`
### mcp_ado_repo_list_pull_request_thread_comments
Retrieve a list of comments in a pull request thread.
- **Required**: `repositoryId`, `pullRequestId`, `threadId`
- **Optional**: `fullResponse`, `project`, `skip`, `top`
### mcp_ado_repo_create_pull_request_thread
Creates a new comment thread on a pull request.
- **Required**: `repositoryId`, `pullRequestId`, `content`
- **Optional**: `filePath`, `project`, `rightFileEndLine`, `rightFileEndOffset`, `rightFileStartLine`, `rightFileStartOffset`, `status`
### mcp_ado_repo_reply_to_comment
Replies to a specific comment on a pull request.
- **Required**: `repositoryId`, `pullRequestId`, `threadId`, `content`
- **Optional**: `fullResponse`, `project`
### mcp_ado_repo_resolve_comment
Resolves a specific comment thread on a pull request.
- **Required**: `repositoryId`, `pullRequestId`, `threadId`
- **Optional**: `fullResponse`
## Search
### mcp_ado_search_code
Search Azure DevOps Repositories for a given search text.
- **Required**: `searchText`
- **Optional**: `branch`, `includeFacets`, `path`, `project`, `repository`, `skip`, `top`
### mcp_ado_search_wiki
Search Azure DevOps Wiki for a given search text.
- **Required**: `searchText`
- **Optional**: `includeFacets`, `project`, `skip`, `top`, `wiki`
### mcp_ado_search_workitem
Get Azure DevOps Work Item search results for a given search text.
- **Required**: `searchText`
- **Optional**: `areaPath`, `assignedTo`, `includeFacets`, `project`, `skip`, `state`, `top`, `workItemType`
## Test Plans
### mcp_ado_testplan_list_test_plans
Retrieve a paginated list of test plans from an Azure DevOps project.
- **Required**: `project`
- **Optional**: `continuationToken`, `filterActivePlans`, `includePlanDetails`
### mcp_ado_testplan_create_test_plan
Creates a new test plan in the project.
- **Required**: `project`, `name`, `iteration`
- **Optional**: `areaPath`, `description`, `endDate`, `startDate`
### mcp_ado_testplan_list_test_suites
Retrieve a paginated list of test suites from an Azure DevOps project and Test Plan Id. Returns test suites in a properly nested hierarchical structure.
- **Required**: `project`, `planId`
- **Optional**: `continuationToken`
### mcp_ado_testplan_create_test_suite
Creates a new test suite in a test plan.
- **Required**: `project`, `planId`, `parentSuiteId`, `name`
- **Optional**: None
### mcp_ado_testplan_add_test_cases_to_suite
Adds existing test cases to a test suite.
- **Required**: `project`, `planId`, `suiteId`, `testCaseIds`
- **Optional**: None
### mcp_ado_testplan_list_test_cases
Gets a list of test cases in the test plan.
- **Required**: `project`, `planid`, `suiteid`
- **Optional**: None
### mcp_ado_testplan_create_test_case
Creates a new test case work item.
- **Required**: `project`, `title`
- **Optional**: `areaPath`, `iterationPath`, `priority`, `steps`, `testsWorkItemId`
### mcp_ado_testplan_update_test_case_steps
Update an existing test case work item.
- **Required**: `id`, `steps`
- **Optional**: None
### mcp_ado_testplan_show_test_results_from_build_id
Gets a list of test results for a given project and build ID.
- **Required**: `project`, `buildid`
- **Optional**: None
## Wiki
### mcp_ado_wiki_list_wikis
Retrieve a list of wikis for an organization or project.
- **Required**: None
- **Optional**: `project`
### mcp_ado_wiki_get_wiki
Get the wiki by wikiIdentifier.
- **Required**: `wikiIdentifier`
- **Optional**: `project`
### mcp_ado_wiki_list_pages
Retrieve a list of wiki pages for a specific wiki and project.
- **Required**: `wikiIdentifier`, `project`
- **Optional**: `continuationToken`, `pageViewsForDays`, `top`
### mcp_ado_wiki_get_page
Retrieve wiki page metadata by path. This tool does not return page content.
- **Required**: `wikiIdentifier`, `project`, `path`
- **Optional**: `recursionLevel`
### mcp_ado_wiki_get_page_content
Retrieve wiki page content.
- **Required**: None (either `url` OR `wikiIdentifier` and `project`)
- **Optional**: `path`, `project`, `url`, `wikiIdentifier`
### mcp_ado_wiki_create_or_update_page
Create or update a wiki page with content.
- **Required**: `wikiIdentifier`, `path`, `content`
- **Optional**: `branch`, `etag`, `project`
## Work Items
### mcp_ado_wit_get_work_item
Get a single work item by ID.
- **Required**: `id`, `project`
- **Optional**: `asOf`, `expand`, `fields`
### mcp_ado_wit_get_work_items_batch_by_ids
Retrieve list of work items by IDs in batch.
- **Required**: `project`, `ids`
- **Optional**: `fields`
### mcp_ado_wit_create_work_item
Create a new work item in a specified project and work item type.
- **Required**: `project`, `workItemType`, `fields`
- **Optional**: None
### mcp_ado_wit_update_work_item
Update a work item by ID with specified fields.
- **Required**: `id`, `updates`
- **Optional**: None
### mcp_ado_wit_update_work_items_batch
Update work items in batch.
- **Required**: `updates`
- **Optional**: None
### mcp_ado_wit_add_child_work_items
Create one or many child work items from a parent by work item type and parent id.
- **Required**: `parentId`, `project`, `workItemType`, `items`
- **Optional**: None
### mcp_ado_wit_work_items_link
Link work items together in batch.
- **Required**: `project`, `updates`
- **Optional**: None
### mcp_ado_wit_work_item_unlink
Remove one or many links from a single work item.
- **Required**: `project`, `id`
- **Optional**: `type`, `url`
### mcp_ado_wit_add_artifact_link
Add artifact links (repository, branch, commit, builds) to work items.
- **Required**: `workItemId`, `project`
- **Optional**: `artifactUri`, `branchName`, `buildId`, `comment`, `commitId`, `linkType`, `projectId`, `pullRequestId`, `repositoryId`
### mcp_ado_wit_link_work_item_to_pull_request
Link a single work item to an existing pull request.
- **Required**: `projectId`, `repositoryId`, `pullRequestId`, `workItemId`
- **Optional**: `pullRequestProjectId`
### mcp_ado_wit_list_work_item_comments
Retrieve list of comments for a work item by ID.
- **Required**: `project`, `workItemId`
- **Optional**: `top`
### mcp_ado_wit_add_work_item_comment
Add comment to a work item by ID.
- **Required**: `project`, `workItemId`, `comment`
- **Optional**: `format`
### mcp_ado_wit_list_work_item_revisions
Retrieve list of revisions for a work item by ID.
- **Required**: `project`, `workItemId`
- **Optional**: `expand`, `skip`, `top`
### mcp_ado_wit_get_work_item_type
Get a specific work item type.
- **Required**: `project`, `workItemType`
- **Optional**: None
### mcp_ado_wit_my_work_items
Retrieve a list of work items relevant to the authenticated user.
- **Required**: `project`
- **Optional**: `includeCompleted`, `top`, `type`
### mcp_ado_wit_get_work_items_for_iteration
Retrieve a list of work items for a specified iteration.
- **Required**: `project`, `iterationId`
- **Optional**: `team`
### mcp_ado_wit_list_backlogs
Receive a list of backlogs for a given project and team.
- **Required**: `project`, `team`
- **Optional**: None
### mcp_ado_wit_list_backlog_work_items
Retrieve a list of backlogs for a given project, team, and backlog category.
- **Required**: `project`, `team`, `backlogId`
- **Optional**: None
### mcp_ado_wit_get_query
Get a query by its ID or path.
- **Required**: `project`, `query`
- **Optional**: `depth`, `expand`, `includeDeleted`, `useIsoDateFormat`
### mcp_ado_wit_get_query_results_by_id
Retrieve the results of a work item query given the query ID.
- **Required**: `id`
- **Optional**: `project`, `responseType`, `team`, `timePrecision`, `top`
## Work
### mcp_ado_work_list_iterations
List all iterations in a specified Azure DevOps project.
- **Required**: `project`
- **Optional**: `depth`, `excludedIds`
### mcp_ado_work_create_iterations
Create new iterations in a specified Azure DevOps project.
- **Required**: `project`, `iterations`
- **Optional**: None
### mcp_ado_work_list_team_iterations
Retrieve a list of iterations for a specific team in a project.
- **Required**: `project`, `team`
- **Optional**: `timeframe`
### mcp_ado_work_assign_iterations
Assign existing iterations to a specific team in a project.
- **Required**: `project`, `team`, `iterations`
- **Optional**: None
### mcp_ado_work_get_iteration_capacities
Get an iteration's capacity for all teams in iteration and project.
- **Required**: `project`, `iterationId`
- **Optional**: None
### mcp_ado_work_get_team_capacity
Get the team capacity of a specific team and iteration in a project.
- **Required**: `project`, `team`, `iterationId`
- **Optional**: None
### mcp_ado_work_update_team_capacity
Update the team capacity of a team member for a specific iteration in a project.
- **Required**: `project`, `team`, `teamMemberId`, `iterationId`, `activities`
- **Optional**: `daysOff`
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
cc-switch
All-in-One Assistant for Claude Code, Codex & Gemini CLI across platforms.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers
Time
A Model Context Protocol server for time and timezone conversions.