azure-devops-mcp

azure-devops-mcp

This server provides a convenient API for interacting with Azure DevOps services, enabling AI assistants and other tools to manage work items, code repositories, boards, sprints, and more. Built with the Model Context Protocol, it provides a standardized interface for communicating with Azure DevOps

RyanCardin15

Version Control
Developer Tools
Cloud Platforms
TypeScript
Visit Server

Tools

listWorkItems

List work items based on a WIQL query

getWorkItemById

Get a specific work item by ID

searchWorkItems

Search for work items by text

getRecentlyUpdatedWorkItems

Get recently updated work items

getMyWorkItems

Get work items assigned to you

createWorkItem

Create a new work item

updateWorkItem

Update an existing work item

addWorkItemComment

Add a comment to a work item

updateWorkItemState

Update the state of a work item

assignWorkItem

Assign a work item to a user

createLink

Create a link between work items

bulkCreateWorkItems

Create or update multiple work items in a single operation

getBoards

Get all boards for a team

getBoardColumns

Get columns for a specific board

getBoardItems

Get items on a specific board

moveCardOnBoard

Move a card on a board

getSprints

Get all sprints for a team

getCurrentSprint

Get the current sprint

getSprintWorkItems

Get work items in a specific sprint

getSprintCapacity

Get capacity for a specific sprint

getTeamMembers

Get members of a team

listProjects

List all projects

getProjectDetails

Get details of a specific project

createProject

Create a new project

getAreas

Get areas for a project

getIterations

Get iterations for a project

createArea

Create a new area in a project

createIteration

Create a new iteration in a project

getProcesses

Get all processes

getWorkItemTypes

Get work item types for a process

getWorkItemTypeFields

Get fields for a work item type

listRepositories

List all repositories

getRepository

Get details of a specific repository

createRepository

Create a new repository

listBranches

List branches in a repository

searchCode

Search for code in repositories

browseRepository

Browse the contents of a repository

getFileContent

Get the content of a file

getCommitHistory

Get commit history for a repository

listPullRequests

List pull requests

createPullRequest

Create a new pull request

getPullRequest

Get details of a specific pull request

getPullRequestComments

Get comments on a pull request

approvePullRequest

Approve a pull request

mergePullRequest

Merge a pull request

runAutomatedTests

Execute automated test suites

getTestAutomationStatus

Check status of automated test execution

configureTestAgents

Configure and manage test agents

createTestDataGenerator

Generate test data for automated tests

manageTestEnvironments

Manage test environments for different test types

getTestFlakiness

Analyze and report on test flakiness

getTestGapAnalysis

Identify gaps in test coverage

runTestImpactAnalysis

Determine which tests to run based on code changes

getTestHealthDashboard

View overall test health metrics

runTestOptimization

Optimize test suite execution for faster feedback

createExploratorySessions

Create new exploratory testing sessions

recordExploratoryTestResults

Record findings during exploratory testing

convertFindingsToWorkItems

Convert exploratory test findings to work items

getExploratoryTestStatistics

Get statistics on exploratory testing activities

runSecurityScan

Run security scans on repositories

getSecurityScanResults

Get results from security scans

trackSecurityVulnerabilities

Track and manage security vulnerabilities

generateSecurityCompliance

Generate security compliance reports

integrateSarifResults

Import and process SARIF format security results

runComplianceChecks

Run compliance checks against standards

getComplianceStatus

Get current compliance status

createComplianceReport

Create compliance reports for auditing

manageSecurityPolicies

Manage security policies

trackSecurityAwareness

Track security awareness and training

rotateSecrets

Rotate secrets and credentials

auditSecretUsage

Audit usage of secrets across services

vaultIntegration

Integrate with secret vaults

listArtifactFeeds

List artifact feeds in the organization

getPackageVersions

Get versions of a package in a feed

publishPackage

Publish a package to a feed

promotePackage

Promote a package version between views

deletePackageVersion

Delete a version of a package

listContainerImages

List container images in a repository

getContainerImageTags

Get tags for a container image

scanContainerImage

Scan a container image for vulnerabilities and compliance issues

manageContainerPolicies

Manage policies for container repositories

manageUniversalPackages

Manage universal packages

createPackageDownloadReport

Create reports on package downloads

checkPackageDependencies

Check package dependencies and vulnerabilities

getAICodeReview

Get AI-based code review suggestions

suggestCodeOptimization

Suggest code optimizations using AI

identifyCodeSmells

Identify potential code smells and anti-patterns

getPredictiveBugAnalysis

Predict potential bugs in code changes

getDeveloperProductivity

Measure developer productivity metrics

getPredictiveEffortEstimation

AI-based effort estimation for work items

getCodeQualityTrends

Track code quality trends over time

suggestWorkItemRefinements

Get AI suggestions for work item refinements

suggestAutomationOpportunities

Identify opportunities for automation

createIntelligentAlerts

Set up intelligent alerts based on patterns

predictBuildFailures

Predict potential build failures before they occur

optimizeTestSelection

Intelligently select tests to run based on changes

README

Azure DevOps MCP Integration

smithery badge

<a href="https://glama.ai/mcp/servers/z7mxfcinp8"> <img width="380" height="200" src="https://glama.ai/mcp/servers/z7mxfcinp8/badge" /> </a>

A powerful integration for Azure DevOps that provides seamless access to work items, repositories, projects, boards, and sprints through the Model Context Protocol (MCP) server.

Overview

This server provides a convenient API for interacting with Azure DevOps services, enabling AI assistants and other tools to manage work items, code repositories, boards, sprints, and more. Built with the Model Context Protocol, it provides a standardized interface for communicating with Azure DevOps.

Demo

Azure DevOps MCP Demo

Features

The integration is organized into eight main tool categories:

Work Item Tools

  • List work items using WIQL queries
  • Get work item details by ID
  • Search for work items
  • Get recently updated work items
  • Get your assigned work items
  • Create new work items
  • Update existing work items
  • Add comments to work items
  • Update work item state
  • Assign work items
  • Create links between work items
  • Bulk create/update work items

Boards & Sprints Tools

  • Get team boards
  • Get board columns
  • Get board items
  • Move cards on boards
  • Get sprints
  • Get the current sprint
  • Get sprint work items
  • Get sprint capacity
  • Get team members

Project Tools

  • List projects
  • Get project details
  • Create new projects
  • Get areas
  • Get iterations
  • Create areas
  • Create iterations
  • Get process templates
  • Get work item types
  • Get work item type fields

Git Tools

  • List repositories
  • Get repository details
  • Create repositories
  • List branches
  • Search code
  • Browse repositories
  • Get file content
  • Get commit history
  • List pull requests
  • Create pull requests
  • Get pull request details
  • Get pull request comments
  • Approve pull requests
  • Merge pull requests

Testing Capabilities Tools

  • Run automated tests
  • Get test automation status
  • Configure test agents
  • Create test data generators
  • Manage test environments
  • Get test flakiness analysis
  • Get test gap analysis
  • Run test impact analysis
  • Get test health dashboard
  • Run test optimization
  • Create exploratory sessions
  • Record exploratory test results
  • Convert findings to work items
  • Get exploratory test statistics

DevSecOps Tools

  • Run security scans
  • Get security scan results
  • Track security vulnerabilities
  • Generate security compliance reports
  • Integrate SARIF results
  • Run compliance checks
  • Get compliance status
  • Create compliance reports
  • Manage security policies
  • Track security awareness
  • Rotate secrets
  • Audit secret usage
  • Configure vault integration

Artifact Management Tools

  • List artifact feeds
  • Get package versions
  • Publish packages
  • Promote packages
  • Delete package versions
  • List container images
  • Get container image tags
  • Scan container images
  • Manage container policies
  • Manage universal packages
  • Create package download reports
  • Check package dependencies

AI-Assisted Development Tools

  • Get AI-powered code reviews
  • Suggest code optimizations
  • Identify code smells
  • Get predictive bug analysis
  • Get developer productivity metrics
  • Get predictive effort estimations
  • Get code quality trends
  • Suggest work item refinements
  • Suggest automation opportunities
  • Create intelligent alerts
  • Predict build failures
  • Optimize test selection

Installation

Installing via Smithery

To install azuredevops-mcp for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @RyanCardin15/azuredevops-mcp --client claude

Prerequisites

  • Node.js (v16 or later)
  • TypeScript (v4 or later)
  • An Azure DevOps account with a Personal Access Token (PAT) or appropriate on-premises credentials

Setup

  1. Clone the repository:

    git clone <repository-url>
    cd AzureDevOps
    
  2. Install dependencies:

    npm install
    
  3. Configure environment variables (create a .env file or set them directly):

    For Azure DevOps Services (cloud):

    AZURE_DEVOPS_ORG_URL=https://dev.azure.com/your-organization
    AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=your-personal-access-token
    AZURE_DEVOPS_PROJECT=your-default-project
    AZURE_DEVOPS_IS_ON_PREMISES=false
    

    For Azure DevOps Server (on-premises):

    AZURE_DEVOPS_ORG_URL=https://your-server/tfs
    AZURE_DEVOPS_PROJECT=your-default-project
    AZURE_DEVOPS_IS_ON_PREMISES=true
    AZURE_DEVOPS_COLLECTION=your-collection
    AZURE_DEVOPS_API_VERSION=6.0  # Adjust based on your server version
    
    # Authentication (choose one):
    
    # For PAT authentication:
    AZURE_DEVOPS_AUTH_TYPE=pat
    AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN=your-personal-access-token
    
    # For NTLM authentication:
    AZURE_DEVOPS_AUTH_TYPE=ntlm
    AZURE_DEVOPS_USERNAME=your-username
    AZURE_DEVOPS_PASSWORD=your-password
    AZURE_DEVOPS_DOMAIN=your-domain
    
    # For Basic authentication:
    AZURE_DEVOPS_AUTH_TYPE=basic
    AZURE_DEVOPS_USERNAME=your-username
    AZURE_DEVOPS_PASSWORD=your-password
    
  4. Build the project:

    npm run build
    

    If you encounter TypeScript errors but want to proceed anyway:

    npm run build:ignore-errors
    
  5. Start the server:

    npm run start
    

Configuration

Personal Access Token (PAT)

For Azure DevOps Services (cloud), you'll need to create a Personal Access Token with appropriate permissions:

  1. Go to your Azure DevOps organization
  2. Click on your profile icon in the top right
  3. Select "Personal access tokens"
  4. Click "New Token"
  5. Give it a name and select the appropriate scopes:
    • Work Items: Read & Write
    • Code: Read & Write
    • Project and Team: Read & Write
    • Build: Read
    • Release: Read

For Azure DevOps Server (on-premises), you have three authentication options:

  1. Personal Access Token (PAT):

    • Similar to cloud setup, but create the PAT in your on-premises instance
    • Set AZURE_DEVOPS_AUTH_TYPE=pat
  2. NTLM Authentication:

    • Use your Windows domain credentials
    • Set AZURE_DEVOPS_AUTH_TYPE=ntlm
    • Provide username, password, and domain
  3. Basic Authentication:

    • Use your local credentials
    • Set AZURE_DEVOPS_AUTH_TYPE=basic
    • Provide username and password

Azure DevOps Services vs. Azure DevOps Server

This integration supports both cloud-hosted Azure DevOps Services and on-premises Azure DevOps Server:

Azure DevOps Services (Cloud)

  • Simple setup with organization URL and PAT
  • Default configuration expects format: https://dev.azure.com/your-organization
  • Always uses PAT authentication
  • Sample configuration files provided in .env.cloud.example

Azure DevOps Server (On-Premises)

  • Requires additional configuration for server URL, collection, and authentication
  • URL format varies based on your server setup: https://your-server/tfs
  • Requires specifying a collection name
  • Supports multiple authentication methods (PAT, NTLM, Basic)
  • May require API version specification for older server versions
  • Sample configuration files provided in .env.on-premises.example

Key Differences

Feature Azure DevOps Services Azure DevOps Server
URL Format https://dev.azure.com/org https://server/tfs
Collection Not required Required
Auth Methods PAT only PAT, NTLM, Basic
API Version Latest (automatic) May need specification
Connection Always internet Can be air-gapped

Example Configuration

Copy either .env.cloud.example or .env.on-premises.example to .env and update the values as needed.

Environment Variables

The server can be configured using the following environment variables:

Variable Description Required Default
AZURE_DEVOPS_ORG_URL URL of your Azure DevOps organization or server Yes -
AZURE_DEVOPS_PROJECT Default project to use Yes -
AZURE_DEVOPS_IS_ON_PREMISES Whether using Azure DevOps Server No false
AZURE_DEVOPS_COLLECTION Collection name for on-premises No* -
AZURE_DEVOPS_API_VERSION API version for on-premises No -
AZURE_DEVOPS_AUTH_TYPE Authentication type (pat/ntlm/basic) No pat
AZURE_DEVOPS_PERSONAL_ACCESS_TOKEN Personal access token No** -
AZURE_DEVOPS_USERNAME Username for NTLM/Basic auth No** -
AZURE_DEVOPS_PASSWORD Password for NTLM/Basic auth No** -
AZURE_DEVOPS_DOMAIN Domain for NTLM auth No -
ALLOWED_TOOLS Comma-separated list of tool methods to enable No All tools

* Required if AZURE_DEVOPS_IS_ON_PREMISES=true ** Required based on chosen authentication type

Tool Filtering with ALLOWED_TOOLS

The ALLOWED_TOOLS environment variable allows you to restrict which tool methods are available. This is completely optional - if not specified, all tools will be enabled.

Format: Comma-separated list of method names with no spaces.

Example:

ALLOWED_TOOLS=listWorkItems,getWorkItemById,searchWorkItems,createWorkItem

This would only enable the specified work item methods while disabling all others.

Usage

Once the server is running, you can interact with it using the MCP protocol. The server exposes several tools for different Azure DevOps functionalities.

Available Tools

Note: By default, only a subset of tools are registered in the index.ts file to keep the initial implementation simple. See the Tool Registration section for information on how to register additional tools.

Example: List Work Items

{
  "tool": "listWorkItems",
  "params": {
    "query": "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.State] = 'Active' ORDER BY [System.CreatedDate] DESC"
  }
}

Example: Create a Work Item

{
  "tool": "createWorkItem",
  "params": {
    "workItemType": "User Story",
    "title": "Implement new feature",
    "description": "As a user, I want to be able to export reports to PDF.",
    "assignedTo": "john@example.com"
  }
}

Example: List Repositories

{
  "tool": "listRepositories",
  "params": {
    "projectId": "MyProject"
  }
}

Example: Create a Pull Request

{
  "tool": "createPullRequest",
  "params": {
    "repositoryId": "repo-guid",
    "sourceRefName": "refs/heads/feature-branch",
    "targetRefName": "refs/heads/main",
    "title": "Add new feature",
    "description": "This PR adds the export to PDF feature"
  }
}

Architecture

The project is structured as follows:

  • src/
    • Interfaces/: Type definitions for parameters and responses
    • Services/: Service classes for interacting with Azure DevOps APIs
    • Tools/: Tool implementations that expose functionality to clients
    • index.ts: Main entry point that registers tools and starts the server
    • config.ts: Configuration handling

Service Layer

The service layer handles direct communication with the Azure DevOps API:

  • WorkItemService: Work item operations
  • BoardsSprintsService: Boards and sprints operations
  • ProjectService: Project management operations
  • GitService: Git repository operations
  • TestingCapabilitiesService: Testing capabilities operations
  • DevSecOpsService: DevSecOps operations
  • ArtifactManagementService: Artifact management operations
  • AIAssistedDevelopmentService: AI-assisted development operations

Tools Layer

The tools layer wraps the services and provides a consistent interface for the MCP protocol:

  • WorkItemTools: Tools for work item operations
  • BoardsSprintsTools: Tools for boards and sprints operations
  • ProjectTools: Tools for project management operations
  • GitTools: Tools for Git operations
  • TestingCapabilitiesTools: Tools for testing capabilities operations
  • DevSecOpsTools: Tools for DevSecOps operations
  • ArtifactManagementTools: Tools for artifact management operations
  • AIAssistedDevelopmentTools: Tools for AI-assisted development operations

Tool Registration

The MCP server requires tools to be explicitly registered in the index.ts file. By default, only a subset of all possible tools are registered to keep the initial implementation manageable.

To register more tools:

  1. Open the src/index.ts file
  2. Add new tool registrations following the pattern of existing tools
  3. Build and restart the server

A comprehensive guide to tool registration is available in the TOOL_REGISTRATION.md file in the repository.

Note: When registering tools, be careful to use the correct parameter types, especially for enum values. The type definitions in the Interfaces directory define the expected types for each parameter. Using the wrong type (e.g., using z.string() instead of z.enum() for enumerated values) will result in TypeScript errors during build.

Example of registering a new tool:

server.tool("searchCode", 
  "Search for code in repositories",
  {
    searchText: z.string().describe("Text to search for"),
    repositoryId: z.string().optional().describe("ID of the repository")
  },
  async (params, extra) => {
    const result = await gitTools.searchCode(params);
    return {
      content: result.content,
      rawData: result.rawData,
      isError: result.isError
    };
  }
);

Troubleshooting

Common Issues

Authentication Errors

  • Ensure your Personal Access Token is valid and has the required permissions
  • Check that the organization URL is correct

TypeScript Errors During Build

  • Use npm run build:ignore-errors to bypass TypeScript errors
  • Check for missing or incorrect type definitions

Runtime Errors

  • Verify that the Azure DevOps project specified exists and is accessible

Contributing

Contributions are welcome! Here's how you can contribute:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your code passes linting and includes appropriate tests.

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
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
Playwright MCP Server

Playwright MCP Server

Provides a server utilizing Model Context Protocol to enable human-like browser automation with Playwright, allowing control over browser actions such as navigation, element interaction, and scrolling.

Featured
Local
TypeScript
MCP Package Docs Server

MCP Package Docs Server

Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.

Featured
Local
TypeScript
Claude Code MCP

Claude Code MCP

An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.

Featured
Local
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.

Featured
Local
JavaScript
Apple MCP Server

Apple MCP Server

Enables interaction with Apple apps like Messages, Notes, and Contacts through the MCP protocol to send messages, search, and open app content using natural language.

Featured
Local
TypeScript
Gitingest-MCP

Gitingest-MCP

An MCP server for gitingest. It allows MCP clients like Claude Desktop, Cursor, Cline etc to quickly extract information about Github repositories including repository summaries, project directory structure, file contents, etc

Featured
Local
Python