@mixmedia/azdo-mcp
v0.0.1-beta
Published
MCP server for using the Azure DevOps API, used the GitHub MCP Server as starter
Readme
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 withpathandcontentmessage(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):privateorpublicprocessTemplateId(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):privateorpublic
- 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.
