mcp-server-azdo
The Azure DevOps MCP Server facilitates file operations, repository management, and search functionalities through Azure DevOps Services API. It includes features such as automatic branch creation, comprehensive error handling, and advanced search capabilities. The server is currently under active development and testing.
Azure DevOps MCP Server
MCP Server for the Azure DevOps Services API, enabling file operations, repository management, search functionality, and more.
[!WARNING]
This implementation is not yet tested and undergoing active development.
Features
- Automatic Branch Creation: When creating/updating files or pushing changes, branches are automatically created if they don't exist
- Comprehensive Error Handling: Clear error messages for common issues
- Git History Preservation: Operations maintain proper Git history without force pushing
- Batch Operations: Support for both single-file and multi-file operations
- Advanced Search: Support for searching code, work items, pull requests, and users
Tools
-
create_or_update_file
- Create or update a single file in a repository
- Inputs:
project
(string): Azure DevOps project namerepo
(string): Repository namepath
(string): Path where to create/update the filecontent
(string): Content of the filemessage
(string): Commit messagebranch
(string): Branch to create/update the file insha
(optional string): SHA of file being replaced (for updates)
- Returns: File content and commit details
-
push_files
- Push multiple files in a single commit
- Inputs:
project
(string): Azure DevOps project namerepo
(string): Repository namebranch
(string): Branch to push tofiles
(array): Files to push, each withpath
andcontent
message
(string): Commit message
- Returns: Updated branch reference
-
search_repositories
- Search for Azure DevOps repositories
- Inputs:
query
(string): Search querypage
(optional number): Page number for paginationperPage
(optional number): Results per page (max 100)
- Returns: Repository search results
-
create_repository
- Create a new Azure DevOps repository
- Inputs:
project
(string): Azure DevOps project namename
(string): Repository namedescription
(optional string): Repository descriptiondefaultBranch
(optional string): Default branch name
- Returns: Created repository details
-
get_file_contents
- Get contents of a file or directory
- Inputs:
project
(string): Azure DevOps project namerepo
(string): Repository namepath
(string): Path to file/directorybranch
(optional string): Branch to get contents from
- Returns: File/directory contents
-
create_work_item
- Create a new work item (issue, task, etc.)
- Inputs:
project
(string): Azure DevOps project nametype
(string): Work item type (e.g.,Bug
,Task
)fields
(object): Fields for the work item (e.g.,System.Title
,System.Description
)
- Returns: Created work item details
-
create_pull_request
- Create a new pull request
- Inputs:
project
(string): Azure DevOps project namerepo
(string): Repository nametitle
(string): PR titledescription
(optional string): PR descriptionsourceBranch
(string): Branch containing changestargetBranch
(string): Branch to merge intoreviewers
(optional array): List of reviewers
- Returns: Created pull request details
-
list_dashboards
- List dashboards in a project
- Inputs:
project
(string): Azure DevOps project name
- Returns: Array of dashboard details
-
list_queries
- List queries in a project
- Inputs:
project
(string): Azure DevOps project name
- Returns: Array of query details
-
list_test_cases
- List test cases in a project
- Inputs:
project
(string): Azure DevOps project nameplanId
(optional number): Test plan ID to filter test cases
- Returns: Array of test case details
-
list_test_plans
- List test plans in a project
- Inputs:
project
(string): Azure DevOps project name
- Returns: Array of test plan details
-
list_artifacts
- List artifacts in a project
- Inputs:
project
(string): Azure DevOps project name
- Returns: Array of artifact details
-
list_artifact_feeds
- List artifact feeds in an organization
- Inputs:
organization
(string): Azure DevOps organization name
- Returns: Array of artifact feed details
-
get_artifact_feed
- Get a specific artifact feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed ID
- Returns: Artifact feed details
-
create_artifact_feed
- Create a new artifact feed
- Inputs:
organization
(string): Azure DevOps organization namename
(string): Feed namedescription
(optional string): Feed descriptionproject
(optional string): Project ID
- Returns: Created feed details
-
update_artifact_feed
- Update an artifact feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed IDname
(optional string): New namedescription
(optional string): New description
- Returns: Updated feed details
-
delete_artifact_feed
- Delete an artifact feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed ID
- Returns: Success status
-
list_artifact_packages
- List packages in a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed ID
- Returns: Array of package details
-
get_artifact_package
- Get a specific package in a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed IDpackageId
(string): Package ID
- Returns: Package details
-
delete_artifact_package
- Delete a package from a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed IDpackageId
(string): Package ID
- Returns: Success status
-
list_artifact_views
- List views in a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed ID
- Returns: Array of view details
-
get_artifact_view
- Get a specific view in a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed IDviewId
(string): View ID
- Returns: View details
-
create_artifact_view
- Create a new view in a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed IDname
(string): View namedescription
(optional string): View description
- Returns: Created view details
-
update_artifact_view
- Update a view in a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed IDviewId
(string): View IDname
(optional string): New namedescription
(optional string): New description
- Returns: Updated view details
-
delete_artifact_view
- Delete a view from a feed
- Inputs:
organization
(string): Azure DevOps organization namefeedId
(string): Feed IDviewId
(string): View ID
- Returns: Success status
-
list_projects
- List all projects in the organization
- Inputs: none
- Returns: Array of project details
-
get_project
- Get details of a specific project
- Inputs:
id
(string): Project ID or name
- Returns: Project details
-
create_project
- Create a new project
- Inputs:
name
(string): Project namedescription
(optional string): Project descriptionvisibility
(string):private
orpublic
processTemplateId
(string): ID of the process template
- Returns: Created project details
-
update_project
- Update an existing project
- Inputs:
id
(string): Project IDname
(optional string): New namedescription
(optional string): New descriptionvisibility
(optional string):private
orpublic
- Returns: Updated project details
-
delete_project
- Delete a project
- Inputs:
id
(string): Project ID
- Returns: Success status
-
list_process_templates
- List all process templates
- Inputs: none
- Returns: Array of process template details
-
get_process_template
- Get details of a process template
- Inputs:
id
(string): Process template ID
- Returns: Process template details
-
list_iterations
- List all iterations in a project
- Inputs:
project
(string): Project name or ID
- Returns: Array of iteration details
-
get_iteration
- Get details of a specific iteration
- Inputs:
project
(string): Project name or IDid
(string): Iteration ID
- Returns: Iteration details
-
create_iteration
- Create a new iteration in a project
- Inputs:
project
(string): Project name or IDname
(string): Iteration namestartDate
(optional string): Start datefinishDate
(optional string): Finish datepath
(optional string): Path for the iteration
- Returns: Created iteration details
-
update_iteration
- Update an iteration
- Inputs:
project
(string): Project name or IDid
(string): Iteration IDname
(optional string): New namestartDate
(optional string): New start datefinishDate
(optional string): New finish date
- Returns: Updated iteration details
-
delete_iteration
- Delete an iteration
- Inputs:
project
(string): Project name or IDid
(string): Iteration ID
- Returns: Success status
-
list_areas
- List all areas in a project
- Inputs:
project
(string): Project name or ID
- Returns: Array of area details
-
get_area
- Get details of a specific area
- Inputs:
project
(string): Project name or IDid
(string): Area ID
- Returns: Area details
-
create_area
- Create a new area in a project
- Inputs:
project
(string): Project name or IDname
(string): Area namepath
(optional string): Path for the area
- Returns: Created area details
-
update_area
- Update an area
- Inputs:
project
(string): Project name or IDid
(string): Area IDname
(optional string): New namepath
(optional string): New path
- Returns: Updated area details
-
delete_area
- Delete an area
- Inputs:
project
(string): Project name or IDid
(string): Area ID
- Returns: Success status
Setup
Personal Access Token
Create an Azure DevOps Personal Access Token with appropriate permissions:
- Go to Personal access tokens (in Azure DevOps Settings > Personal Access Tokens)
- Select the required scopes (e.g.,
Code
,Work Items
,Test Management
) - Copy the generated token
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json
:
Docker
{
"mcpServers": {
"azure-devops": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DEVOPS_PERSONAL_ACCESS_TOKEN",
"mcp/azure-devops"
],
"env": {
"DEVOPS_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
NPX
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-azure-devops"
],
"env": {
"DEVOPS_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.