MCP Azure DevOps Server

MCP Azure DevOps Server

A Model Context Protocol server that enables AI assistants to interact with Azure DevOps services, providing capabilities for work item management, project management, and team collaboration through natural language.

Category
Visit Server

Tools

query_work_items

Searches for work items using Work Item Query Language (WIQL). Use this tool when you need to: - Find work items matching specific criteria - Search across projects for related tasks or bugs - Create dynamic reports based on work item attributes - Identify work items assigned to specific team members IMPORTANT: WIQL syntax is similar to SQL and allows you to query work items based on their fields. The query must follow Azure DevOps WIQL syntax rules, with proper SELECT, FROM, and WHERE clauses. Args: query: The WIQL query string (e.g., "SELECT * FROM workitems WHERE [System.State] = 'Active'") top: Maximum number of results to return (default: 30) Returns: Formatted string containing detailed information for each matching work item, with all fields and values formatted as markdown

get_work_item

Retrieves detailed information about one or multiple work items. Use this tool when you need to: - View the complete details of a specific work item - Examine the current state, assigned user, and other properties - Get information about multiple work items at once - Access the full description and custom fields of work items Args: id: The work item ID or a list of work item IDs Returns: Formatted string containing comprehensive information for the requested work item(s), including all system and custom fields, formatted as markdown with clear section headings

get_work_item_comments

Retrieves all comments associated with a specific work item. Use this tool when you need to: - Review discussion history about a work item - See feedback or notes left by team members - Check if specific questions have been answered - Understand the context and evolution of a work item Args: id: The work item ID project: Optional project name. If not provided, will be determined from the work item. Returns: Formatted string containing all comments on the work item, including author names, timestamps, and content, organized chronologically and formatted as markdown

add_work_item_comment

Adds a new comment to a work item. Use this tool when you need to: - Provide feedback or clarification on a work item - Document decisions made about the work - Add context without changing the work item's fields - Communicate with team members about specific tasks IMPORTANT: Comments in Azure DevOps become part of the permanent work item history and cannot be edited or deleted after they are added. The comment will be attributed to the user associated with the Personal Access Token used for authentication. Args: id: The work item ID text: The text of the comment (supports markdown formatting) project: Optional project name. If not provided, will be determined from the work item. Returns: Formatted string containing confirmation and the added comment with author information and timestamp

create_work_item

Creates a new work item in Azure DevOps. Use this tool when you need to: - Add a new task, user story, bug, or other work item to a project - Create work items with specific field values and metadata - Establish work hierarchies by setting parent relationships - Track new requirements, features, or issues in your project IMPORTANT: The work item will be created immediately and visible to all users with access to the specified project. It will also trigger any configured notifications or automation rules. Args: title: The title of the work item project: The project name or ID where the work item will be created work_item_type: Type of work item (e.g., "User Story", "Bug", "Task") fields: Optional dictionary of additional field name/value pairs to set description: Optional description of the work item state: Optional initial state for the work item assigned_to: Optional user email to assign the work item to parent_id: Optional ID of parent work item for hierarchy iteration_path: Optional iteration path for the work item area_path: Optional area path for the work item story_points: Optional story points value priority: Optional priority value tags: Optional tags as comma-separated string Returns: Formatted string containing the created work item details including ID, title, type, state, and all other specified fields, formatted as markdown

update_work_item

Modifies an existing work item's fields and properties. Use this tool when you need to: - Change the status or state of a work item - Reassign work to a different team member - Update the description or details of a requirement - Modify effort estimates or priority levels - Add or change classification (area/iteration) - Update any field supported by the work item type IMPORTANT: This tool updates the work item directly in Azure DevOps. Changes will be immediately visible to all users with access to the work item and will trigger any configured notifications or workflows. You must specify at least one field to update. Args: id: The ID of the work item to update fields: Optional dictionary of field name/value pairs to update project: Optional project name or ID title: Optional new title for the work item description: Optional new description state: Optional new state assigned_to: Optional user email to assign to iteration_path: Optional new iteration path area_path: Optional new area path story_points: Optional new story points value priority: Optional new priority value tags: Optional new tags as comma-separated string Returns: Formatted string containing the updated work item details with all current field values, formatted as markdown

add_parent_child_link

Adds a parent-child relationship between two work items. Use this tool when you need to: - Establish hierarchy between work items - Organize epics, features, user stories, and tasks - Create a structured breakdown of work - Enable rollup of effort and progress tracking IMPORTANT: The child work item will immediately appear under the parent in hierarchical views. This relationship affects how the items are displayed in backlogs and boards. In Azure DevOps, a work item can have only one parent but multiple children. Args: parent_id: ID of the parent work item child_id: ID of the child work item project: Optional project name or ID Returns: Formatted string containing the updated child work item details showing the new parent relationship, formatted as markdown

get_work_item_types

Gets a list of all work item types in a project. Use this tool when you need to: - See what work item types are available in a project - Get reference names for work item types to use in other operations - Plan work item creation by understanding available types Args: project: Project ID or project name Returns: A formatted table of all work item types with names, reference names, and descriptions

get_work_item_type

Gets detailed information about a specific work item type. Use this tool when you need to: - Get complete details about a work item type - Understand the states and transitions for a work item type - Learn about the color and icon for a work item type Args: project: Project ID or project name type_name: The name of the work item type Returns: Detailed information about the work item type including states, color, icon, and reference name

get_work_item_type_fields

Gets a list of all fields for a specific work item type. Use this tool when you need to: - See what fields are available for a work item type - Find required fields for creating work items of a specific type - Get reference names for fields to use in queries or updates Args: project: Project ID or project name type_name: The name of the work item type Returns: A formatted table of all fields with names, reference names, types, and required/read-only status

get_work_item_type_field

Gets detailed information about a specific field in a work item type. Use this tool when you need to: - Get complete details about a work item field - Check allowed values for a field - Verify if a field is required or read-only Args: project: Project ID or project name type_name: The name of the work item type field_name: The reference name or display name of the field Returns: Detailed information about the field including type, allowed values, and constraints

get_work_item_templates

Gets a list of all work item templates for a team. Use this tool when you need to: - Find available templates for creating work items - Get template IDs for use in other operations - Filter templates by work item type Args: team_context: Dictionary containing team information with keys: project: Project name (Optional if project_id is provided) project_id: Project ID (Optional if project is provided) team: Team name (Optional if team_id is provided) team_id: Team ID (Optional if team is provided) work_item_type: Optional work item type name to filter templates Returns: A formatted table of all templates with names, work item types, and descriptions

get_work_item_template

Gets detailed information about a specific work item template. Use this tool when you need to: - View default field values in a template - Understand what a template pre-populates in a work item - Get complete details about a template Args: team_context: Dictionary containing team information with keys: project: Project name (Optional if project_id is provided) project_id: Project ID (Optional if project is provided) team: Team name (Optional if team_id is provided) team_id: Team ID (Optional if team is provided) template_id: The ID of the template Returns: Detailed information about the template including default field values

get_project_process_id

Gets the process ID associated with a project. Use this tool when you need to: - Find out which process a project is using - Get the process ID for use in other process-related operations - Verify process information for a project Args: project: Project ID or project name Returns: Formatted information about the process including name and ID

get_process_details

Gets detailed information about a specific process. Use this tool when you need to: - View process properties and configuration - Get a list of work item types defined in a process - Check if a process is the default for the organization Args: process_id: The ID of the process Returns: Detailed information about the process including properties and available work item types

list_processes

Lists all available processes in the organization. Use this tool when you need to: - See what processes are available in your Azure DevOps organization - Find process IDs for project creation or configuration - Check which process is set as the default Returns: A formatted table of all processes with names, IDs, and descriptions

get_projects

Retrieves all projects accessible to the authenticated user in the Azure DevOps organization. Use this tool when you need to: - Get an overview of all available projects - Find project IDs for use in other operations - Check project states and visibility settings - Locate specific projects by name Args: state_filter: Filter on team projects in a specific state (e.g., "WellFormed", "Deleting") top: Maximum number of projects to return Returns: Formatted string containing project information including names, IDs, descriptions, states, and visibility settings, formatted as markdown with each project clearly separated

get_all_teams

Retrieves all teams in the Azure DevOps organization. Use this tool when you need to: - Get an overview of all teams across projects - Find team IDs for use in other operations - Determine which teams exist in the organization - Locate specific teams by name Args: user_is_member_of: If true, return only teams where the current user is a member. Otherwise return all teams the user has read access to. top: Maximum number of teams to return skip: Number of teams to skip Returns: Formatted string containing team information including names, IDs, descriptions, and associated projects, formatted as markdown with each team clearly separated

get_team_members

Retrieves the membership roster for a specific team. Use this tool when you need to: - See who belongs to a particular team - Find team administrators - Check user assignments across teams - Determine team size and composition Args: project_id: The name or ID (GUID) of the team project the team belongs to team_id: The name or ID (GUID) of the team top: Maximum number of members to return skip: Number of members to skip Returns: Formatted string containing team members information including display names, emails, IDs, and administrator status, formatted as markdown with each member clearly separated

get_team_area_paths

Retrieves the area paths assigned to a specific team. Use this tool when you need to: - Understand a team's areas of responsibility - Check default area path assignments - Determine how work is classified and routed to teams - Set up board and backlog configurations IMPORTANT: Area paths in Azure DevOps determine which work items appear on a team's backlogs and boards. The default area path is used when creating new work items through a team's interface. Args: project_name_or_id: The name or ID of the team project team_name_or_id: The name or ID of the team Returns: Formatted string containing team area path information including the default area path and all assigned paths, with indicators for paths that include sub-areas

get_team_iterations

Retrieves the iterations (sprints) assigned to a specific team. Use this tool when you need to: - View a team's sprint schedule - Find date ranges for iterations - Determine which iteration is currently active - Plan work based on team's iteration calendar IMPORTANT: Iterations in Azure DevOps define time periods for planning and tracking work. They determine sprint dates and are used for capacity planning, burndown charts, and velocity calculations. Args: project_name_or_id: The name or ID of the team project team_name_or_id: The name or ID of the team current: If True, return only the current iteration Returns: Formatted string containing team iteration information including names, date ranges, and time frames (past/current/future), formatted as markdown

README

MCP Azure DevOps Server

A Model Context Protocol (MCP) server enabling AI assistants to interact with Azure DevOps services.

Overview

This project implements a Model Context Protocol (MCP) server that allows AI assistants (like Claude) to interact with Azure DevOps, providing a bridge between natural language interactions and the Azure DevOps REST API.

Features

Currently implemented:

Work Item Management

  • Query Work Items: Search for work items using WIQL queries
  • Get Work Item Details: View complete work item information
  • Create Work Items: Add new tasks, bugs, user stories, and other work item types
  • Update Work Items: Modify existing work items' fields and properties
  • Add Comments: Post comments on work items
  • View Comments: Retrieve the comment history for a work item
  • Parent-Child Relationships: Establish hierarchy between work items

Project Management

  • Get Projects: View all accessible projects in the organization
  • Get Teams: List all teams within the organization
  • Team Members: View team membership information
  • Team Area Paths: Retrieve area paths assigned to teams
  • Team Iterations: Access team iteration/sprint configurations

Planned features:

  • Pipeline Operations: Query pipeline status and trigger new pipeline runs
  • Pull Request Handling: Create, update, and review Pull Requests
  • Sprint Management: Plan and manage sprints and iterations
  • Branch Policy Administration: Configure and manage branch policies

Getting Started

Prerequisites

  • Python 3.10+
  • Azure DevOps account with appropriate permissions
  • Personal Access Token (PAT) with necessary scopes for Azure DevOps API access

Installation

# Clone the repository
git clone https://github.com/Vortiago/mcp-azure-devops.git
cd mcp-azure-devops

# Install in development mode
uv pip install -e ".[dev]"

# Install from PyPi
pip install mcp-azure-devops

Configuration

Create a .env file in the project root with the following variables:

AZURE_DEVOPS_PAT=your_personal_access_token
AZURE_DEVOPS_ORGANIZATION_URL=https://your-organization.visualstudio.com or https://dev.azure.com/your-organisation

Note: Make sure to provide the full URL to your Azure DevOps organization.

Running the Server

# Development mode with the MCP Inspector
mcp dev src/mcp_azure_devops/server.py

# Install in Claude Desktop
mcp install src/mcp_azure_devops/server.py --name "Azure DevOps Assistant"

Usage Examples

Query Work Items

Show me all active bugs assigned to me in the current sprint

Create a Work Item

Create a user story in the ProjectX with the title "Implement user authentication" and assign it to john.doe@example.com

Update a Work Item

Change the status of bug #1234 to "Resolved" and add a comment explaining the fix

Team Management

Show me all the team members in the "Core Development" team in the "ProjectX" project

View Project Structure

List all projects in my organization and show me the iterations for the Development team

Development

The project is structured into feature modules, each implementing specific Azure DevOps capabilities:

  • features/work_items: Work item management functionality
  • features/projects: Project management capabilities
  • features/teams: Team management features
  • utils: Common utilities and client initialization

For more information on development, see the CLAUDE.md file.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured