adtk
adtk — Azure DevOps Toolkit
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
Feature | adtk | microsoft/azure-devops-mcp |
Language | Go (single static binary) | TypeScript (Node.js) |
MCP Tools / Actions | 14 tools / 91 actions | ~75 individual tools |
MCP Prompts | 4 built-in prompts | None |
CLI mode | Full CLI with 15 command groups | No |
Auth | PAT (self-service, no admin) | Azure AD (requires admin consent) |
Startup | ~50ms | ~2s |
Response flattening |
| Raw API responses |
Boards & Iterations | Full support | No |
Test Plans | Full support | No |
Advanced Security | Alert listing & details | No |
Metrics | Cycle time, lead time, time-in-status | No |
Git branch detection | Auto-detect work items from branch | No |
Branch policies & tags | List policies, list/create tags | No |
Variable groups & environments | List/get variable groups, environments | No |
Saved queries | Get and run saved queries | No |
Attachments | Upload, download, list | No |
Write protection |
| None |
Rate limiting | Built-in token bucket | None |
Binary size | ~15 MB |
|
Related MCP server: ctk
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
_linksand convertsSystem.*fields to readable namesWrite protection — All mutations gated behind
ADTK_ENABLE_WRITES=trueRate 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@latestBuild from source
git clone https://github.com/zach-snell/adtk.git
cd adtk
./install.shPre-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-hereCLI 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 --jsonMCP Server
stdio mode (for AI agents)
adtk mcpHTTP Streamable mode
adtk mcp --port 8080MCP 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
Variable | Required | Description |
| Yes | Azure DevOps organization name |
| Yes | Personal Access Token |
| No | Set to |
| No | Comma-separated list of tools to disable |
MCP Tools
adtk exposes 14 MCP tools with 91 actions and 4 MCP prompts:
Tool | Actions | Description |
| get, 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_items | Full work item lifecycle (18 actions) |
| list, get, list_teams, get_team, create | Projects and teams (5 actions) |
| get_current, search | Identity and user lookup (2 actions) |
| wiql, code, work_items, wiki, get_query, run_query | Multi-domain search + saved queries (6 actions) |
| list, get, list_branches, get_file, get_tree, create_branch, search_commits, list_policies, list_tags, create_tag | Git repositories, policies, and tags (10 actions) |
| list, get, create, update, add_comment, list_comments, vote, list_reviewers, update_reviewers, create_thread, update_thread, reply_to_comment | Pull request management (12 actions) |
| list, get, get_current, create, get_team_settings | Sprint/iteration tracking (5 actions) |
| list, get, get_columns | Kanban board management (3 actions) |
| list, get_page, list_pages, create_page, update_page, delete_page | Markdown-native wiki (6 actions) |
| list, get, list_runs, get_run, trigger, get_logs, get_log, get_build_changes, list_definitions, list_variable_groups, get_variable_group, list_environments | CI/CD pipelines, variable groups, and environments (12 actions) |
| list_plans, create_plan, list_suites, create_suite, list_cases, get_test_results | Test plan management (6 actions) |
| list_alerts, get_alert | Security alert management (2 actions) |
| get_metrics | Work item lifecycle metrics — cycle time, lead time, time-in-status (1 action) |
| list, upload, download | Work item attachments (3 actions) |
MCP Prompts
Prompt | Arguments | Description |
|
| Generate a sprint/iteration status report |
|
| Generate a PR review digest for a repository |
|
| Analyze CI/CD pipeline health and failure trends |
|
| Assess 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=truePAT 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 routing —
dev.azure.com,vssps.dev.azure.com,almsearch.dev.azure.com,vsrm.dev.azure.comJSON Patch for work item writes —
Content-Type: application/json-patch+jsonWIQL 2-step — Query IDs, then batch fetch fields (max 200 per request)
Response flattener —
System.Title→title,Microsoft.VSTS.Common.Priority→priorityETag concurrency — Wiki updates use
If-Matchheaders for optimistic concurrencyTeam-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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityAmaintenanceJira CLI & MCP Server — dual-mode Go binary for Jira Cloud with 9 tools, 4 prompts, permission introspection, and dev-status API.Last updated101Apache 2.0
- AlicenseBqualityCmaintenanceConfluence CLI & MCP Server — dual-mode Go binary for Confluence Cloud with 7 tools, folder CRUD, page diff, and write gating.Last updated81Apache 2.0
- AlicenseAqualityCmaintenanceAn MCP server that exposes 41 Azure DevOps tools to AI assistants, enabling management of pipelines, repositories, pull requests, releases, work items, test management, and wikis through natural language.Last updated41MIT
- Alicense-qualityCmaintenanceEnables AI assistants to interact with Azure DevOps through an MCP server with 34 tools for PRs, work items, repos, and branches, optimized for token efficiency and agent-first workflows.Last updated4MIT
Related MCP Connectors
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
A MCP server built for developers enabling Git based project management with project and personal…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zach-snell/adtk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server