Sign inSign up

guang1/azure-devops-mcp

By guang1

Updated 12 months ago

Model Context Protocol Server Streamable HTTP/SSE/STDIO for azure devops

Image
Machine learning & AI
Developer tools
0

2.6K

guang1/azure-devops-mcp repository overview

azure-devops-mcp: Model Context Protocol Server Streamable HTTP/SSE for Azure DevOps

Docker Pulls Docker Stars

What is azure-devops-mcp

This Model Context Protocol (MCP) server enables Large Language Models (LLMs) to interact with Azure DevOps services through a standardized API. It allows AI assistants to perform common Azure DevOps operations without needing direct API integration.

Supported MCP Tools

The MCP server supports the following Azure DevOps operations:

  • create_pull_request: Create a new pull request
  • list_all_repositories: Get a list of all repositories in a project
  • get_repository: Get details about a specific repository
  • get_pull_request_statuses: Get the statuses of pull requests
  • get_pull_requests_in_repository: List all pull requests in a repository
  • run_pipeline_on_branch: Trigger a pipeline run on a specific branch
  • get_all_pipelines: List all pipelines in a project

How to use this image

MCP Streamable HTTP/SSE
Simple usage
docker run -d --name azure-devops-mcp \
  -p 8080:8080 \
  -e org.name=your-organization \
  -e project.name=your-project \
  -e pat=your-personal-access-token \
  guang1/azure-devops-mcp:latest
Using an Environment File

Create a configuration file (e.g., azure-devops.config):

org.name=your-organization
project.name=your-project
pat=your-personal-access-token

Then run:

docker run -d --name azure-devops-mcp \
  -p 8080:8080 \
  --env-file azure-devops.config \
  guang1/azure-devops-mcp:latest
Docker Compose for Streamable HTTP/SSE
Basic Example
services:
  azure-devops:
    container_name: azure-devops-mcp
    image: guang1/azure-devops-mcp
    environment:
      - org.name=your-organization
      - project.name=your-project
      - pat=your-personal-access-token
    ports:
      - "8080:8080"
    restart: always
With Environment File
services:
  azure-devops:
    container_name: azure-devops-mcp
    image: guang1/azure-devops-mcp
    env_file:
      - ./azure-devops.config
    ports:
      - "8080:8080"
    restart: always
MCP SSE URL

http://localhost:8080/mcp/sse

MCP Streamable HTTP URL

http://localhost:8080/mcp

MCP STDIO

Must pass quarkus.mcp.server.stdio.enabled=true, quarkus.log.console.enable=false and quarkus.log.console.stderr=false environment variables with -i interactive option.

Simple usage
docker run --rm \
  -e org.name=your-organization \
  -e project.name=your-project \
  -e pat=your-personal-access-token \
  -e quarkus.mcp.server.stdio.enabled=true \
  -e quarkus.log.console.enable=false \
  -e quarkus.log.console.stderr=false \
  -i guang1/azure-devops-mcp:latest
Using an Environment File
docker run --rm --env-file=azure-devops.config \
  -e quarkus.mcp.server.stdio.enabled=true \
  -e quarkus.log.console.enable=false \
  -e quarkus.log.console.stderr=false \
  -i guang1/azure-devops-mcp:latest
Claude Desktop Configuration (STDIO)

To use the Docker version with Claude Desktop, add this to your claude_desktop_config.json or server_config.json file:

Simple usage
{
  "mcpServers": {
    "azure-devops": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-e",
        "org.name=your-organization",
        "-e",
        "project.name=your-project",
        "-e",
        "pat=your-personal-access-token",
        "-e",
        "quarkus.mcp.server.stdio.enabled=true",
        "-e",
        "quarkus.log.console.enable=false",
        "-e",
        "quarkus.log.console.stderr=false",
        "-i",
        "guang1/azure-devops-mcp:latest"
      ]
    }
  }
}
Using an Environment File
{
  "mcpServers": {
    "azure-devops": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "--env-file=azure-devops.config",
        "-e",
        "quarkus.mcp.server.stdio.enabled=true",
        "-e",
        "quarkus.log.console.enable=false",
        "-e",
        "quarkus.log.console.stderr=false",
        "-i",
        "guang1/azure-devops-mcp:latest"
      ]
    }
  }
}

Configuration

Environment Variables
VariableDescriptionRequired
org.nameAzure DevOps organization nameYes
project.nameAzure DevOps project nameYes
patPersonal Access Token with appropriate permissionsYes
Required PAT Permissions

Your Personal Access Token needs these permissions:

  • Code (Read & Write)
  • Build (Read & Execute)
  • Pull Request Threads (Read & Write)

Security Considerations

⚠️ Warning: This MCP server requires a Personal Access Token with write access to repositories and pipelines. Consider the following security practices:

  • Create a dedicated service account with minimal required permissions
  • Regularly rotate your PAT credentials
  • Run the container in a secure, isolated environment
  • Use network security rules to restrict access to the MCP server

Using with LLMs

This MCP server provides a standardized API that Large Language Models can use to interact with your Azure DevOps environment:

  1. Configure the LLM to connect to the MCP server endpoint
  2. Define the capabilities you want to allow
  3. The LLM can now perform Azure DevOps operations through the MCP server

Examples

Creating a Pull Request

The LLM can create a pull request by calling the create_pull_request operation with the appropriate parameters.

Running a Pipeline

The LLM can trigger pipeline runs using the run_pipeline_on_branch operation.

Troubleshooting

If you encounter issues:

  • Verify your PAT has the required permissions
  • Check the organization and project names are correct
  • Ensure your Azure DevOps instance is accessible from the container

Tag summary

Content type

Image

Digest

sha256:f3047fc12

Size

158.2 MB

Last updated

12 months ago

docker pull guang1/azure-devops-mcp