azure-devops-mcp

An MCP server that exposes Azure DevOps work-item operations — works with any MCP client (Claude Code, Claude Desktop, custom agents, or your own orchestrator).

Endpoint

POST https://<this-host>/<org>/<project>/mcp

Transport: Streamable HTTP (JSON-RPC 2.0). Protocol version: 2025-06-18.

Auth

Send an Azure DevOps Personal Access Token (PAT) as Basic auth — empty username, PAT in the password slot.

Authorization: Basic <base64(":")>

Required PAT scopes: Work Items (Read, Write & Manage), Identity (Read) for resolve_user, and Project & Team (Read) for iteration/area listing.

Tools

Read

ToolPurpose
list_work_itemsFilter by assignee, type, state, dates. Returns minimal summary fields including changedBy.
list_recently_updatedItems changed since a timestamp. Convenience wrapper for polling.
list_new_work_itemsItems created since a timestamp.
get_work_itemFull detail for one item: description, repro steps, iteration, area, tags, parent, recent comments.
list_mentions_sinceFind @mentions in comments created after a timestamp. Returns oldest first for tick-by-tick processing.
query_wiqlRun a raw WIQL SELECT. Returns matching ids + hydrated summaries (or just ids with hydrate: false).

Write

ToolPurpose
create_work_itemCreate a new item of the given type. Set title, description, assignee, iteration/area, tags, parent in one call.
update_work_itemPatch arbitrary fields (title, description, assignee, iteration, area, tags, state, parent, or any custom field via fields escape hatch).
update_stateFocused wrapper to change System.State. Allowed transitions depend on the process template.
add_linkAdd a relationship link: parent, child, related, predecessor, successor.
add_commentAppend an HTML comment. For @mentions, use Azure DevOps's data-vss-mention markup.

Metadata

ToolPurpose
resolve_userLook up users by display name or email. Use the returned uniqueName in assignedTo fields.
list_iterationsIteration nodes (sprints) as backslash-joined paths — for setting iterationPath on create/update.
list_areasArea nodes as backslash-joined paths — for setting areaPath.

Quickstart (curl)

curl -X POST https://<this-host>/<org>/<project>/mcp \
  -H "Authorization: Basic $(printf ':%s' "$ADO_PAT" | base64)" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Source

github.com/hybriden/azure-devops-mcp