Sign inSign up

guang1/azure-devops-mcp

By guang1

•Updated about 1 year 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

about 1 year ago

docker pull guang1/azure-devops-mcp