npm azure-board-mcpstdioupdated 5mo ago
MCP server for Azure DevOps. Work with tasks, sprints, bugs, pull requests, repositories, and pipelines directly from Claude, Cursor, or any MCP-compatible AI.
What can you do with Azure Boards MCP?
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 — fields, comments, PRs |
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 |
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) |
create_pr |
Open a PR with optional reviewers and linked work items |
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 |
Diagnose build failures (build output) |
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
Install
Add Azure Boards MCP to your client. Pick the one you use.
claude mcp add azure-board-mcp -- npx -y azure-board-mcpcodex mcp add azure-board-mcp -- npx -y azure-board-mcpamp mcp add azure-board-mcp -- npx -y azure-board-mcp{
"mcpServers": {
"azure-board-mcp": {
"command": "npx",
"args": [
"-y",
"azure-board-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"azure-board-mcp": {
"command": "npx",
"args": [
"-y",
"azure-board-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"azure-board-mcp","command":"npx","args":["-y","azure-board-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"azure-board-mcp": {
"command": "npx",
"args": [
"-y",
"azure-board-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"azure-board-mcp": {
"command": "npx",
"args": [
"-y",
"azure-board-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"azure-board-mcp": {
"command": "npx",
"args": [
"-y",
"azure-board-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"azure-board-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"azure-board-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"azure-board-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"azure-board-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y azure-board-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance13/25
- Trust6/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 158 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 1.0.0Latest | Mar 27, 2026 |