mcpField
A
azure-devops-skill

azure-devops-skill

github.com/julianobarbosaCloud & DevOps1461 installsUpdated 2d ago
Repository

About azure-devops-skill

azure-devops-skill is a reference skill for developers and teams working with Azure DevOps REST API v7.2. It documents API operations, authentication, queries, and MCP tool names across work items, pipelines, repositories, tests, wikis, and search.

Key features

  1. 01Work item queries and updates
  2. 02Pipeline and build operations
  3. 03Repository, branch, and pull request workflows
  4. 04Test plan and case management
  5. 05Wiki and code search operations
  6. 06Authentication and API guidance

Use cases

  1. 01Look up or update assigned work items
  2. 02Trigger pipelines and inspect build logs
  3. 03Review repositories, branches, or pull requests
  4. 04Manage test cases and search project content

MCP support

The guide lists Azure DevOps MCP tool names for the documented areas, including work items, pipelines, repositories, test plans, wikis, and search. It serves as a reference for using those tools.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill azure-devops-skill

After installing, type/azure-devops-skillin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
git-repos-reference.md
pipelines-reference.md
test-plans-reference.md
wiki-search-reference.md
work-items-reference.md
scripts/
ado-cli.sh
pipelines.py
pull-requests.py
work-items.py

Details

From the project README

Azure DevOps REST API Skill

Comprehensive guide for Azure DevOps REST API v7.2 operations including work items, pipelines, repositories, test plans, wikis, and search functionality.

Quick Reference

AreaBase URLMCP Tool Prefix
Coredev.azure.com/{org}/_apis/mcp__ado__core_*
Work Itemsdev.azure.com/{org}/{project}/_apis/wit/mcp__ado__wit_*
Pipelinesdev.azure.com/{org}/{project}/_apis/pipelines/mcp__ado__pipelines_*
Git/Reposdev.azure.com/{org}/{project}/_apis/git/mcp__ado__repo_*
Test Plansdev.azure.com/{org}/{project}/_apis/testplan/mcp__ado__testplan_*
Wikidev.azure.com/{org}/{project}/_apis/wiki/mcp__ado__wiki_*
Searchalmsearch.dev.azure.com/{org}/_apis/search/mcp__ado__search_*

Authentication Methods

Personal Access Token (PAT)
# Base64 encode empty username with PAT
AUTH=$(echo -n ":${PAT}" | base64)
curl -H "Authorization: Basic ${AUTH}" https://dev.azure.com/{org}/_apis/projects
OAuth 2.0 Scopes
ScopeAccess Level
vso.workRead work items
vso.work_writeCreate/update work items
vso.codeRead source code
vso.code_writeCreate branches, PRs
vso.build_executeRun pipelines
vso.testRead test plans
vso.wikiRead wikis

API Versioning

Format: {major}.{minor}[-{stage}[.{resource-version}]]

  • Current: 7.2-preview.3
  • Example: api-version=7.2-preview.3

1. Work Item Operations

Available MCP Tools
mcp__ado__wit_get_work_item          - Get single work item
mcp__ado__wit_get_work_items_batch_by_ids - Get multiple work items
mcp__ado__wit_my_work_items          - Get items assigned to me
mcp__ado__wit_create_work_item       - Create new work item
mcp__ado__wit_update_work_item       - Update work item fields
mcp__ado__wit_update_work_items_batch - Bulk update work items
mcp__ado__wit_add_work_item_comment  - Add comment to work item
mcp__ado__wit_list_work_item_comments - List work item comments
mcp__ado__wit_add_child_work_items   - Create child work items
mcp__ado__wit_work_items_link        - Link work items together
mcp__ado__wit_work_item_unlink       - Remove work item links
mcp__ado__wit_link_work_item_to_pull_request - Link to PR
mcp__ado__wit_add_artifact_link      - Add artifact links (branch, commit, build)
mcp__ado__wit_get_work_item_type     - Get work item type definition
mcp__ado__wit_list_backlogs          - List team backlogs
mcp__ado__wit_list_backlog_work_items - Get backlog items
mcp__ado__wit_get_work_items_for_iteration - Get sprint items
mcp__ado__wit_get_query              - Get saved query
mcp__ado__wit_get_query_results_by_id - Execute saved query
WIQL Query Syntax
Basic Structure
SELECT [Fields]
FROM workitems
WHERE [Conditions]
ORDER BY [Fields]
ASOF [DateTime]
Common Macros
MacroDescription
@MeCurrent user
@projectCurrent project
@TodayToday's date
@Today - NN days ago
@CurrentIterationCurrent sprint
@StartOfMonthFirst of month
Example Queries
-- Active tasks assigned to me
SELECT [System.Id], [System.Title], [System.State]
FROM workitems
WHERE [System.TeamProject] = @project
  AND [System.WorkItemType] = 'Task'
  AND [System.State] = 'Active'
  AND [System.AssignedTo] = @Me
ORDER BY [System.Priority] ASC

-- Bugs created in last 30 days
SELECT [System.Id], [System.Title], [System.CreatedDate]
FROM workitems
WHERE [System.TeamProject] = @project
  AND [System.WorkItemType] = 'Bug'
  AND [System.CreatedDate] >= @Today - 30

-- Parent-child hierarchy
SELECT [Source].[System.Id], [Target].[System.Id]
FROM workitemLinks
WHERE [Source].[System.TeamProject] = @project
  AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
MODE (Recursive)
JSON Patch Operations
[
  {"op": "add", "path": "/fields/System.Title", "value": "New Title"},
  {"op": "replace", "path": "/fields/System.State", "value": "Active"},
  {"op": "add", "path": "/relations/-", "value": {
    "rel": "System.LinkTypes.Related",
    "url": "https://dev.azure.com/{org}/_apis/wit/workItems/{id}"
  }}
]
Link Types Reference
TypeRel Name
ParentSystem.LinkTypes.Hierarchy-Reverse
ChildSystem.LinkTypes.Hierarchy-Forward
RelatedSystem.LinkTypes.Related
PredecessorSystem.LinkTypes.Dependency-Reverse
SuccessorSystem.LinkTypes.Dependency-Forward

2. Pipeline Operations

Available MCP Tools
mcp__ado__pipelines_get_build_definitions - List pipeline definitions
mcp__ado__pipelines_get_build_definition_revisions - Get definition history
mcp__ado__pipelines_get_builds         - List builds
mcp__ado__pipelines_get_build_status   - Get build status
mcp__ado__pipelines_get_build_log      - Get build logs
mcp__ado__pipelines_get_build_log_by_id - Get specific log
mcp__ado__pipelines_get_build_changes  - Get commits in build
mcp__ado__pipelines_run_pipeline       - Trigger pipeline run
mcp__ado__pipelines_get_run            - Get pipeline run details
mcp__ado__pipelines_list_runs          - List pipeline runs
mcp__ado__pipelines_update_build_stage - Retry/cancel stage
Pipeline Trigger Example
{
  "resources": {
    "repositories": {
      "self": {"refName": "refs/heads/feature-branch"}
    }
  },
  "templateParameters": {
    "environment": "staging"
  },
  "variables": {
    "customVar": {"value": "custom-value", "isSecret": false}
  }
}
Build Status Values
StatusDescription
noneNot started
inProgressRunning
completedFinished
cancellingBeing cancelled
postponedDelayed
notStartedQueued
Build Result Values
ResultDescription
succeededAll tasks passed
partiallySucceededSome tasks failed
failedBuild failed
canceledUser cancelled

3. Repository Operations

Available MCP Tools
mcp__ado__repo_list_repos_by_project   - List repositories
mcp__ado__repo_get_repo_by_name_or_id  - Get repository details
mcp__ado__repo_list_branches_by_repo   - List branches
mcp__ado__repo_list_my_branches_by_repo - List my branches
mcp__ado__repo_get_branch_by_name      - Get branch details
mcp__ado__repo_create_branch           - Create new branch
mcp__ado__repo_search_commits          - Search commit history
mcp__ado__repo_list_pull_requests_by_repo_or_project - List PRs
mcp__ado__repo_get_pull_request_by_id  - Get PR details
mcp__ado__repo_create_pull_request     - Create PR
mcp__ado__repo_update_pull_request     - Update PR (autocomplete, status)
mcp__ado__repo_update_pull_request_reviewers - Add/remove reviewers
mcp__ado__repo_list_pull_request_threads - List PR comments
mcp__ado__repo_list_pull_request_thread_comments - Get thread comments
mcp__ado__repo_create_pull_request_thread - Create comment thread
mcp__ado__repo_reply_to_comment        - Reply to comment
mcp__ado__repo_resolve_comment         - Resolve thread
mcp__ado__repo_list_pull_requests_by_commits - Find PR by commit
PR Status Values
StatusDescription
activeOpen for review
abandonedClosed without merge
completedMerged
Merge Strategies
StrategyDescription
noFastForwardMerge commit (default)
squashSquash commits
rebaseRebase and fast-forward
rebaseMergeRebase with merge commit

4. Test Plan Operations

Available MCP Tools
mcp__ado__testplan_list_test_plans     - List test plans
mcp__ado__testplan_create_test_plan    - Create test plan
mcp__ado__testplan_create_test_suite   - Create test suite
mcp__ado__testplan_list_test_cases     - List test cases in suite
mcp__ado__testplan_create_test_case    - Create test case
mcp__ado__testplan_update_test_case_steps - Update test steps
mcp__ado__testplan_add_test_cases_to_suite - Add cases to suite
mcp__ado__testplan_show_test_results_from_build_id - Get test results
Test Case Steps Format
1. Navigate to login page|Login page displayed
2. Enter username|Username field populated
3. Enter password|Password field populated
4. Click login button|User is logged in successfully
Test Suite Types
TypeDescription
staticTestSuiteManual hierarchy
dynamicTestSuiteQuery-based
requirementTestSuiteLinked to requirement
Test Outcome Values
OutcomeDescription
PassedTest passed
FailedTest failed
BlockedCannot execute
NotExecutedNot run
InconclusiveNo clear result

5. Wiki Operations

Available MCP Tools
mcp__ado__wiki_list_wikis              - List wikis
mcp__ado__wiki_get_wiki                - Get wiki details
mcp__ado__wiki_list_pages              - List wiki pages
mcp__ado__wiki_get_page                - Get page metadata
mcp__ado__wiki_get_page_content        - Get page content
mcp__ado__wiki_create_or_update_page   - Create/update page
Wiki Types
TypeDescription
projectWikiProject-scoped wiki
codeWikiGit-backed wiki
Page Path Format
  • Root: /
  • Subpage: /Parent/Child
  • Spaces: /My%20Page

6. Search Operations

Available MCP Tools
mcp__ado__search_code                  - Search source code
mcp__ado__search_workitem              - Search work items
mcp__ado__search_wiki                  - Search wiki pages
Code Search Filters
{
  "Project": ["project-name"],
  "Repository": ["repo-name"],
  "Path": ["/src"],
  "Branch": ["main"],
  "CodeElement": ["class", "def", "function"]
}
Work Item Search Filters
{
  "System.TeamProject": ["project-name"],
  "System.WorkItemType": ["Bug", "Task"],
  "System.State": ["Active", "New"],
  "System.AssignedTo": ["[email protected]"]
}

7. Core Operations

Available MCP Tools
mcp__ado__core_list_projects           - List projects
mcp__ado__core_list_project_teams      - List teams
mcp__ado__core_get_identity_ids        - Get user identity
mcp__ado__work_list_team_iterations    - List iterations
mcp__ado__work_list_iterations         - List all iterations
mcp__ado__work_create_iterations       - Create iterations
mcp__ado__work_assign_iterations       - Assign to team
mcp__ado__work_get_team_capacity       - Get team capacity
mcp__ado__work_update_team_capacity    - Update capacity
mcp__ado__work_get_iteration_capacities - Get iteration capacity

8. Advanced Security Operations

Available MCP Tools
mcp__ado__advsec_get_alerts            - Get security alerts
mcp__ado__advsec_get_alert_details     - Get alert details
Alert Types
TypeDescription
DependencyVulnerable dependencies
SecretExposed secrets
CodeCode vulnerabilities

Rate Limiting

TSTU (Throughput Unit) Limits
  • Anonymous: 200 TSTUs/minute
  • Authenticated: 1200 TSTUs/minute
Response Headers
X-RateLimit-Resource: core
X-RateLimit-Delay: 500
X-RateLimit-Limit: 1200
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1609459200
Retry-After: 30
Handling Rate Limits
import time
import requests

def api_call_with_retry(url, headers, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(url, headers=headers)
        if response.status_code == 429:
            retry_after = int(response.headers.get('Retry-After', 30))
            time.sleep(retry_after)
            continue
        return response
    raise Exception("Rate limit exceeded after retries")

Error Handling

HTTP Status Codes
CodeMeaning
200Success
201Created
204No Content (DELETE)
400Bad Request
401Unauthorized
403Forbidden
404Not Found
409Conflict (version)
429Rate Limited
500Server Error
Error Response Format
{
  "$id": "1",
  "innerException": null,
  "message": "Error description",
  "typeName": "Microsoft.VisualStudio.Services.WebApi.VssServiceException",
  "typeKey": "VssServiceException",
  "errorCode": 0
}

Common Field Reference

System Fields
FieldReference Name
IDSystem.Id
TitleSystem.Title
StateSystem.State
Assigned ToSystem.AssignedTo
Area PathSystem.AreaPath
Iteration PathSystem.IterationPath
Work Item TypeSystem.WorkItemType
Created DateSystem.CreatedDate
Changed DateSystem.ChangedDate
TagsSystem.Tags
DescriptionSystem.Description
Scheduling Fields
FieldReference Name
Story PointsMicrosoft.VSTS.Scheduling.Effort
Remaining WorkMicrosoft.VSTS.Scheduling.RemainingWork
Original EstimateMicrosoft.VSTS.Scheduling.OriginalEstimate
Completed WorkMicrosoft.VSTS.Scheduling.CompletedWork

Multi-Repo Work Item Segregation

When a single Azure DevOps project contains multiple repositories, use Area Paths for primary segregation and hierarchical Iteration Paths for repo-scoped sprint/epic tracking.

Target Structure
Area Paths:                          Iteration Paths:
project\                             project\Iteration\
├── repo-a           (per-repo)      ├── Sprint 1        (shared across repos)
├── repo-b           (per-repo)      ├── Sprint 2        (shared across repos)
└── repo-c           (per-repo)      ├── repo-a\         (repo-scoped container)
                                     │   ├── epic-1-...  (auto-created by sync)
                                     │   └── epic-2-...
                                     └── repo-b\         (repo-scoped container)
Path Format Differences (Critical)

Azure DevOps uses two different path formats for iterations:

OperationFormatExample
az boards iteration project create --path\Project\Iteration\Parent (literal "Iteration" segment required)\devops-team\Iteration\azure-quota-automation
az boards work-item update --iterationProject\Parent\Child (no "Iteration" segment, no leading \)devops-team\azure-quota-automation\epic-1-slug
Setup Commands for a New Repo
# 1. Create area path (if not exists)
az boards area project create --name "<repo-name>" --path "\<project>"

# 2. Create iteration container
az boards iteration project create --name "<repo-name>" --path "\<project>\Iteration"

# 3. Configure BMAD sync (devops-sync-config.yaml)
# areaPath: "<project>\\<repo-name>"
# iterationRootPath: "<repo-name>"
Moving Iterations (No Native Move)

Azure DevOps CLI has no move command for iterations. To restructure:

  1. Verify no work items assigned: az boards query --wiql "... WHERE [System.IterationPath] = '...'"
  2. Delete: az boards iteration project delete --path "\project\Iteration\old-path" --yes
  3. Recreate under new parent: az boards iteration project create --name "name" --path "\project\Iteration\new-parent"
  4. Update state files with new iteration IDs
Common Error: TF401347

TF401347: The iteration path does not exist — caused by using the wrong path format. Check:

  • --iteration on work items uses Project\Parent\Child (no "Iteration" segment)
  • --path on iteration create uses \Project\Iteration\Parent (with "Iteration" segment)

Best Practices

1. Use Batch Operations
  • Use mcp__ado__wit_get_work_items_batch_by_ids instead of multiple single calls
  • Max 200 items per batch request
2. Minimize Field Selection
  • Only request fields you need: fields=System.Id,System.Title,System.State
  • Reduces response size and API load
3. Handle Pagination
  • Use $top and $skip for large result sets
  • Follow continuation tokens when provided
4. Version Control
  • Use test operation in JSON Patch for optimistic concurrency
  • Always check rev field before updates
5. Error Recovery
  • Implement exponential backoff for rate limits
  • Log correlation IDs from response headers

References

Comments

Markdown supported