MCP Hub
Back to servers

adtk

The most comprehensive Azure DevOps MCP server & CLI — 13 tools, 82 actions, single Go binary.

glama
Forks
1
Updated
Mar 16, 2026

adtk — Azure DevOps Toolkit

CI Go Report Card Docs License

A dual-mode Go CLI & MCP server for Azure DevOps. Single binary, PAT-first auth, 14 MCP tools with 91 actions, 4 MCP prompts.

The most comprehensive Azure DevOps MCP server. A single Go binary — CLI for humans, MCP for AI agents.

Comparison: adtk vs Microsoft azure-devops-mcp

Featureadtkmicrosoft/azure-devops-mcp
LanguageGo (single static binary)TypeScript (Node.js)
MCP Tools / Actions14 tools / 91 actions~75 individual tools
MCP Prompts4 built-in promptsNone
CLI modeFull CLI with 15 command groupsNo
AuthPAT (self-service, no admin)Azure AD (requires admin consent)
Startup~50ms~2s
Response flatteningSystem.TitletitleRaw API responses
Boards & IterationsFull supportNo
Test PlansFull supportNo
Advanced SecurityAlert listing & detailsNo
MetricsCycle time, lead time, time-in-statusNo
Git branch detectionAuto-detect work items from branchNo
Branch policies & tagsList policies, list/create tagsNo
Variable groups & environmentsList/get variable groups, environmentsNo
Saved queriesGet and run saved queriesNo
AttachmentsUpload, download, listNo
Write protectionADTK_ENABLE_WRITES gateNone
Rate limitingBuilt-in token bucketNone
Binary size~15 MBnpm install (~200+ MB)

Features

  • Dual-mode — Full CLI with table output + MCP server for AI agents
  • 14 consolidated MCP tools with 91 actions covering every Azure DevOps domain
  • 4 MCP prompts — sprint_summary, pr_review_digest, pipeline_health, release_readiness
  • Git branch detection — Auto-detect work item IDs from branch names (e.g., feature/12345-description)
  • Work item metrics — Cycle time, lead time, time-in-status computed from revision history
  • PAT-first auth — Self-service Personal Access Tokens, no Azure AD admin approval
  • Single binary — No Node.js, Python, or Docker required
  • Response flattening — Strips _links and converts System.* fields to readable names
  • Write protection — All mutations gated behind ADTK_ENABLE_WRITES=true
  • Rate limiting — Built-in token bucket respecting Azure DevOps TSTU limits
  • Token-optimized — AI agents get clean, concise payloads (40-60% fewer tokens)

Installation

go install

go install github.com/zach-snell/adtk/cmd/adtk@latest

Build from source

git clone https://github.com/zach-snell/adtk.git
cd adtk
./install.sh

Pre-built binaries

Download from the Releases page.

Quick Start

Authenticate

adtk auth
# Or use environment variables:
export AZURE_DEVOPS_ORG=myorg
export AZURE_DEVOPS_PAT=your-pat-here

CLI Usage

# Projects
adtk projects list
adtk projects get MyProject
adtk projects teams MyProject

# Work items
adtk work-items get 42
adtk work-items list -p MyProject

# Repositories
adtk repos list -p MyProject
adtk repos branches myrepo -p MyProject
adtk repos tree myrepo /src -p MyProject
adtk repos policies myrepo -p MyProject
adtk repos tags myrepo -p MyProject

# Pull requests
adtk pull-requests list myrepo -p MyProject
adtk pull-requests get myrepo 1

# Pipelines
adtk pipelines list -p MyProject
adtk pipelines runs 42 -p MyProject
adtk pipelines var-groups -p MyProject
adtk pipelines var-group 1 -p MyProject
adtk pipelines environments -p MyProject

# Iterations & boards
adtk iterations current -p MyProject
adtk boards list -p MyProject
adtk boards columns Stories -p MyProject

# Wiki
adtk wiki list -p MyProject
adtk wiki get ProjectWiki /Home -p MyProject

# Work item metrics
adtk work-items metrics 42 -p MyProject

# Work item auto-detect from git branch
adtk work-items get          # auto-detects work item ID from branch name

# Search
adtk search code "func main" -p MyProject
adtk search work-items "login bug" -p MyProject
adtk search wiql "SELECT [System.Id] FROM WorkItems WHERE [System.State] = 'Active'"
adtk search query "My Saved Queries/Active Bugs" -p MyProject

# Test plans
adtk test-plans list -p MyProject

# Security alerts
adtk security alerts myrepo -p MyProject

# Attachments
adtk attachments list 42 -p MyProject

# All commands support --json for raw output
adtk projects list --json

MCP Server

stdio mode (for AI agents)

adtk mcp

HTTP Streamable mode

adtk mcp --port 8080

MCP Client Configuration

Claude Desktop / Cursor / Claude Code:

{
  "mcpServers": {
    "adtk": {
      "command": "adtk",
      "args": ["mcp"],
      "env": {
        "AZURE_DEVOPS_ORG": "myorg",
        "AZURE_DEVOPS_PAT": "your-pat-here",
        "ADTK_ENABLE_WRITES": "true"
      }
    }
  }
}

Environment Variables

VariableRequiredDescription
AZURE_DEVOPS_ORGYesAzure DevOps organization name
AZURE_DEVOPS_PATYesPersonal Access Token
ADTK_ENABLE_WRITESNoSet to true to enable write operations (default: false)
AZURE_DEVOPS_DISABLED_TOOLSNoComma-separated list of tools to disable

MCP Tools

adtk exposes 14 MCP tools with 91 actions and 4 MCP prompts:

ToolActionsDescription
manage_work_itemsget, batch_get, create, update, delete, add_comment, update_comment, list_comments, get_links, list_types, get_history, batch_update, add_children, link, unlink, add_artifact_link, my_items, iteration_itemsFull work item lifecycle (18 actions)
manage_projectslist, get, list_teams, get_team, createProjects and teams (5 actions)
manage_usersget_current, searchIdentity and user lookup (2 actions)
manage_searchwiql, code, work_items, wiki, get_query, run_queryMulti-domain search + saved queries (6 actions)
manage_reposlist, get, list_branches, get_file, get_tree, create_branch, search_commits, list_policies, list_tags, create_tagGit repositories, policies, and tags (10 actions)
manage_pull_requestslist, get, create, update, add_comment, list_comments, vote, list_reviewers, update_reviewers, create_thread, update_thread, reply_to_commentPull request management (12 actions)
manage_iterationslist, get, get_current, create, get_team_settingsSprint/iteration tracking (5 actions)
manage_boardslist, get, get_columnsKanban board management (3 actions)
manage_wikilist, get_page, list_pages, create_page, update_page, delete_pageMarkdown-native wiki (6 actions)
manage_pipelineslist, get, list_runs, get_run, trigger, get_logs, get_log, get_build_changes, list_definitions, list_variable_groups, get_variable_group, list_environmentsCI/CD pipelines, variable groups, and environments (12 actions)
manage_test_planslist_plans, create_plan, list_suites, create_suite, list_cases, get_test_resultsTest plan management (6 actions)
manage_advanced_securitylist_alerts, get_alertSecurity alert management (2 actions)
manage_metricsget_metricsWork item lifecycle metrics — cycle time, lead time, time-in-status (1 action)
manage_attachmentslist, upload, downloadWork item attachments (3 actions)

MCP Prompts

PromptArgumentsDescription
sprint_summaryproject (required), team, iterationGenerate a sprint/iteration status report
pr_review_digestproject (required), repo (required)Generate a PR review digest for a repository
pipeline_healthproject (required), pipeline_idAnalyze CI/CD pipeline health and failure trends
release_readinessproject (required), iterationAssess release readiness with go/no-go recommendation

Security

Write Protection

adtk is read-only by default. All create, update, delete, and trigger operations require:

export ADTK_ENABLE_WRITES=true

PAT Auth

Uses HTTP Basic Auth with empty username: Authorization: Basic base64(":" + pat). No Azure AD admin consent required.

Rate Limiting

Built-in token bucket rate limiter (30 tokens, refill 1/2s) prevents hitting Azure DevOps TSTU throttling limits.

Architecture

  • Custom HTTP client — Direct REST API calls, no third-party SDK
  • Multi-base-URL routingdev.azure.com, vssps.dev.azure.com, almsearch.dev.azure.com, vsrm.dev.azure.com
  • JSON Patch for work item writes — Content-Type: application/json-patch+json
  • WIQL 2-step — Query IDs, then batch fetch fields (max 200 per request)
  • Response flattenerSystem.Titletitle, Microsoft.VSTS.Common.Prioritypriority
  • ETag concurrency — Wiki updates use If-Match headers for optimistic concurrency
  • Team-scoped APIs — Iterations/boards use {project}/{team} URL routing

Development

# Build
go build -o adtk ./cmd/adtk

# Test
go test -race ./...

# Lint
golangci-lint run ./...

# Vulnerability check
govulncheck ./...

See the development guide for full details.

Documentation

Full documentation: zach-snell.github.io/adtk

License

Apache 2.0 — see LICENSE

Reviews

No reviews yet

Sign in to write a review