使用说明
azure-board-mcp
MCP server for Azure DevOps. Work with tasks, sprints, bugs, pull requests, repositories, and pipelines directly from Claude, Cursor, or any MCP-compatible AI.
Quick start
# 1. Configure your editors (Claude Code, Cursor, VS Code, Claude Desktop)
npx azure-board-mcp install
# 2. Sign in once
npx azure-board-mcp authenticate
# 3. Restart your editor — done
On first use the AI will ask which Azure DevOps project to work on and remember it.
Install & authenticate
Browser sign-in (default)
npx azure-board-mcp authenticate
Opens your browser for Microsoft sign-in. Picks your org from a list. No Azure AD app setup required — uses a shared app registration built into the package.
PAT — Personal Access Token
For headless / CI environments or orgs that block third-party OAuth:
npx azure-board-mcp authenticate --pat
Create a PAT at https://dev.azure.com/{org}/_usersSettings/tokens with scopes: Work Items (Read & Write), Build (Read), Code (Read).
Editor setup
Option A — automatic (recommended)
npx azure-board-mcp install
Detects and configures Claude Code, Cursor, VS Code, and Claude Desktop automatically.
Option B — manual
Claude Code (~/.claude/settings.json):
{
"mcpServers": {
"azure": {
"command": "npx",
"args": ["-y", "azure-board-mcp@latest"]
}
}
}
Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"azure": {
"command": "npx",
"args": ["-y", "azure-board-mcp@latest"]
}
}
}
VS Code (User settings.json):
{
"mcp": {
"servers": {
"azure": {
"type": "stdio",
"command": "npx",
"args": ["-y", "azure-board-mcp@latest"]
}
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"azure": {
"command": "npx",
"args": ["-y", "azure-board-mcp@latest"]
}
}
}
Claude Code skill
Install a skill so Claude automatically knows when to use this MCP:
npx azure-board-mcp skills
This installs ~/.claude/skills/azure-board-mcp/SKILL.md. After restarting Claude Code, it will proactively use Azure DevOps tools whenever you ask about tasks, sprints, PRs, builds, etc.
CLI reference
npx azure-board-mcp <command>
COMMANDS
install Auto-configure MCP in detected editors
skills Install the Claude Code skill
authenticate Browser OAuth sign-in
authenticate --pat Personal Access Token sign-in
check Validate stored credentials
logout Clear stored credentials
help Show help
AUTHENTICATE FLAGS
--pat Use PAT instead of browser OAuth
--read-only Request read-only OAuth scopes
--client-id <id> Use your own Azure AD app
--tenant-id <id> Specify tenant (single-tenant apps only)
Tools (30)
Work-item, commit, and PR lists are paginated — they return a compact page (default 15, max 50) with a
Showing X–Y of Nheader. Passskipto page through results instead of requesting a largetop. List views fetch only the fields they render, so they're fast and light on context.
Auth & project
| Tool | When to use |
|---|---|
auth_status |
Diagnose auth issues, check which project is active |
switch_project |
Change the active project, or list available ones |
Work items
| Tool | When to use |
|---|---|
list_work_items |
My tasks, sprint board, filter by state/type/keyword (paginated) |
get_work_item |
Full detail on a specific ticket: every field (custom ones like Definition of Done too), all comments, PRs. Nothing truncated |
create_work_item |
Create a task, bug, user story, epic, feature |
update_work_item |
Close, reassign, move sprint, update estimates |
add_comment |
Post a note or status update on a ticket |
list_comments / update_comment / delete_comment |
Read, edit, or delete ticket comments by ID |
list_child_work_items |
Subtasks of a ticket, optionally the whole subtree |
delete_work_item |
Move to Recycle Bin, or destroy permanently |
link_work_items |
Set parent/child, related, or dependency links |
query_wiql |
Advanced queries with custom WIQL (paginated) |
get_work_item_history |
Audit trail — which fields changed, when, by whom |
get_backlog |
Ordered, priority-ranked product backlog |
Boards, sprints & teams
| Tool | When to use |
|---|---|
get_sprint |
Current sprint dates and team capacity |
list_sprints |
All sprints with start/end dates |
get_board |
Kanban columns, state mappings, WIP limits |
list_team_members |
Who's on a team (names, emails, admin flag) |
list_paths |
Valid area / iteration path values for create/update |
Repositories
| Tool | When to use |
|---|---|
list_repos |
Discover repo names and URLs |
list_files |
Browse directory structure |
get_file |
Read file contents (up to 500 lines) |
list_commits |
Recent commits on a branch (paginated) |
list_pull_requests |
Open PRs, reviewer votes, merge status (paginated) |
list_branches |
Branches with ahead/behind counts |
create_pr |
Open a PR with reviewers (by email), linked work items, optional auto-complete |
get_pull_request |
Full PR: description, reviewers and votes, linked work items, changed files |
list_pr_comments |
Comment threads with file/line context and replies |
add_pr_comment |
General comment, inline file comment, or reply to a thread |
update_pr_thread |
Resolve or reopen a thread |
vote_pr |
Approve, approve with suggestions, wait for author, reject, reset |
manage_pr_reviewers |
Add (optionally required) or remove reviewers |
update_pr |
Edit title/description/draft, complete (merge), auto-complete, abandon, reactivate |
Pipelines, builds & releases
| Tool | When to use |
|---|---|
list_pipelines |
Discover pipeline definitions |
list_builds |
Recent builds — status, result, branch, link |
run_pipeline |
Trigger a pipeline run |
get_build_timeline |
Which stage/job/task failed, with error/warning counts |
get_build_logs |
Full logs and error messages of failed steps, or any step by name or log ID |
cancel_build |
Cancel an in-progress build |
list_releases |
Recent releases with per-environment deploy status |
create_release |
Create and trigger a release from a definition |
Environment variables
Override stored credentials — useful for CI/Docker:
AZURE_ORG=my-org
AZURE_PROJECT=my-project
AZURE_PAT=my-pat # PAT auth
AUTH_TOKEN=my-token # OAuth bearer token
Using your own Azure AD app
By default everyone shares the built-in app registration. If your org blocks it, or you need full control:
1. Register the app
- Azure Portal → App registrations → New registration
- Name: anything (e.g.
azure-board-mcp) - Supported account types: "Any organizational directory" (multitenant) or "My organization only"
- Click Register
2. Configure it
In Authentication:
- Add a platform → Mobile and desktop applications → check
http://localhost→ Configure - Allow public client flows → Yes → Save
In API permissions:
- Add a permission → APIs my organization uses → search
Azure DevOps - Select
user_impersonation(delegated) → Add - Click Grant admin consent (optional — skips the per-user consent prompt)
3. Use it
npx azure-board-mcp authenticate --client-id <your-app-id>
# Single-tenant:
npx azure-board-mcp authenticate --client-id <your-app-id> --tenant-id <your-tenant-id>
For org admins — pre-approve for everyone in your org:
https://login.microsoftonline.com/{tenant-id}/adminconsent
?client_id=e2ba32e7-6d24-4919-ba7b-37199c495247
&redirect_uri=http://localhost
License
MIT