Azure DevOps MCP Server
MCP (Model Context Protocol) server for Azure DevOps work item management. Allows AI assistants to interact with Azure DevOps work items through a standardized protocol.
⚡ Faster than the official Azure DevOps MCP server — this server converts HTML fields (descriptions, acceptance criteria) to Markdown server-side, reducing token usage and improving AI response times.
Features
- ✅ Get work items by ID
- ✅ List work items with WIQL queries
- ✅ List work items assigned to authenticated user
- ✅ Create new work items
- ✅ Update existing work items
- ✅ Add comments to work items
- ✅ Full field support (severity, time tracking, story points, acceptance criteria, area/iteration paths, etc.)
- ✅ HTML to Markdown conversion for descriptions
Installation
Download Pre-built Binaries
Download the latest release for your platform from the releases page.
macOS
# Intel Mac
curl -LO https://github.com/markis/azure-devops-mcp/releases/latest/download/azure-devops-mcp-darwin-amd64
chmod +x azure-devops-mcp-darwin-amd64
mv azure-devops-mcp-darwin-amd64 /usr/local/bin/azure-devops-mcp
# Apple Silicon (M1/M2/M3)
curl -LO https://github.com/markis/azure-devops-mcp/releases/latest/download/azure-devops-mcp-darwin-arm64
chmod +x azure-devops-mcp-darwin-arm64
mv azure-devops-mcp-darwin-arm64 /usr/local/bin/azure-devops-mcp
Linux
# AMD64
curl -LO https://github.com/markis/azure-devops-mcp/releases/latest/download/azure-devops-mcp-linux-amd64
chmod +x azure-devops-mcp-linux-amd64
sudo mv azure-devops-mcp-linux-amd64 /usr/local/bin/azure-devops-mcp
# ARM64
curl -LO https://github.com/markis/azure-devops-mcp/releases/latest/download/azure-devops-mcp-linux-arm64
chmod +x azure-devops-mcp-linux-arm64
sudo mv azure-devops-mcp-linux-arm64 /usr/local/bin/azure-devops-mcp
Windows
Download the appropriate .exe file:
azure-devops-mcp-windows-amd64.exe(64-bit Intel/AMD)azure-devops-mcp-windows-arm64.exe(ARM64)
Add the binary to your PATH.
Build from Source
git clone https://github.com/markis/azure-devops-mcp.git
cd azure-devops-mcp
go build -o azure-devops-mcp ./cmd/azure-devops-mcp
Configuration
Set the following environment variables:
export AZURE_DEVOPS_ORG_URL="https://dev.azure.com/your-org"
export AZURE_DEVOPS_PAT="your-personal-access-token"
export AZURE_DEVOPS_PROJECT="your-project-name"
Creating a Personal Access Token (PAT)
- Go to Azure DevOps → User Settings → Personal Access Tokens
- Create a new token with Work Items (Read & Write) scope
- Copy the token (you won't see it again!)
Usage
Start the MCP server:
azure-devops-mcp
The server runs over stdio and follows the Model Context Protocol specification.
Configuring MCP Clients
Claude Code is Anthropic's CLI tool for developers with agentic workflows and deep codebase awareness.
Config file location:
- All platforms:
~/.claude/settings.json(user-level) or.claude/settings.json(project-level)
Using pre-built binary:
{
"mcpServers": {
"azure-devops": {
"command": "/usr/local/bin/azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
Using go run:
{
"mcpServers": {
"azure-devops": {
"command": "go",
"args": ["run", "github.com/markis/azure-devops-mcp/cmd/azure-devops-mcp@latest"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
CLI shortcut:
claude mcp add azure-devops /usr/local/bin/azure-devops-mcp
Claude Desktop is Anthropic's desktop app with a graphical interface.
Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Using pre-built binary:
{
"mcpServers": {
"azure-devops": {
"command": "/usr/local/bin/azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
Using go run:
{
"mcpServers": {
"azure-devops": {
"command": "go",
"args": ["run", "github.com/markis/azure-devops-mcp/cmd/azure-devops-mcp@latest"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
Config file location:
- macOS/Linux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - Windows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
You can also access this file from Cline's UI: Click the MCP Servers icon → Configure tab → "Configure MCP Servers"
Using pre-built binary:
{
"mcpServers": {
"azure-devops": {
"command": "/usr/local/bin/azure-devops-mcp",
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
Using go run:
{
"mcpServers": {
"azure-devops": {
"command": "go",
"args": ["run", "github.com/markis/azure-devops-mcp/cmd/azure-devops-mcp@latest"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
Add to your OpenCode MCP configuration:
Config file location:
- macOS/Linux/WSL:
~/.config/opencode/opencode.jsonc
Using pre-built binary:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"azure-devops": {
"type": "local",
"command": ["/usr/local/bin/azure-devops-mcp"],
"enabled": true,
"environment": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
Using go run:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"azure-devops": {
"type": "local",
"command": ["go", "run", "github.com/markis/azure-devops-mcp/cmd/azure-devops-mcp@latest"],
"enabled": true,
"environment": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_PROJECT": "your-project-name"
}
}
}
}
Note: After adding the configuration, restart your MCP client for the changes to take effect.
Available Tools
get_work_item- Fetch a single work item by IDlist_work_items- Run a WIQL query and return matching work itemslist_my_work_items- Return active work items assigned to youcreate_work_item- Create a new work itemupdate_work_item- Update an existing work itemadd_comment- Add a comment to a work item
Development
Prerequisites
- Go 1.26+
- golangci-lint (for linting)
Commands
# Run tests
go test ./...
# Run tests with coverage
go test ./... -cover
# Run linter
golangci-lint run
# Build
go build -o azure-devops-mcp ./cmd/azure-devops-mcp
Project Structure
.
├── cmd/azure-devops-mcp/ # Entry point
├── internal/
│ ├── client/ # Azure DevOps API client
│ ├── controller/ # MCP server setup and tool registration
│ └── tools/ # Business logic for MCP tools
├── .github/workflows/ # CI/CD pipelines
└── AGENTS.md # Guidelines for AI coding agents
Test Coverage
Current coverage: 77.2%
internal/client: 85.8% (Azure DevOps API client)internal/tools: 83.1% (business logic)internal/controller: 69.7% (MCP wiring)
Contributing
Contributions are welcome! Please ensure:
- All tests pass:
go test ./... - Linter passes:
golangci-lint run - Code coverage is maintained or improved
- Follow conventional commit messages
License
MIT License - see LICENSE file for details
Acknowledgments
- Built with Model Context Protocol Go SDK
- Uses Azure DevOps Go API
- HTML to Markdown conversion by html-to-markdown