Azure Selfhosted
FreeMaintainedMCP server for connecting AI assistants to your own azure instance and cloud
About
MCP server for connecting AI assistants to your own azure instance and cloud
README
MCP server for self-hosted (and cloud) Azure DevOps instances with Personal Access Token authentication. Provides 39 tools covering Azure DevOps Work Item Tracking, Git, Test Plans, delivery plans, attachments, and productivity workflows.
Features
- Work Item CRUD — Create, read, update, delete bugs, user stories, tasks, features, epics, and any custom types
- State Management — Change work item states (New → Active → Resolved → Closed)
- Assignment — Assign/reassign work items to team members
- WIQL Queries — Execute Work Item Query Language queries for advanced search/filtering
- Comments — Add and retrieve comments on work items
- Relationships — Link work items (parent-child, related, duplicate, etc.)
- Project & Team Info — List projects, teams, team members
- Metadata Discovery — Work item types, fields, area paths, iteration/sprint paths
- History & Audit — Full change history and revision snapshots
- Release Notes — Auto-generate formatted release notes from sprints/iterations
- Git & Repos — Read file contents and search code across repositories
- Test Plans — List plans/suites, create test cases, record results, and file bugs from failures
- Delivery Plans — Inspect cross-team roadmaps and timelines
- Attachments — Attach and retrieve mockups, screenshots, and documents
- Productivity — Bulk-create work items, decompose a PRD into a Feature→Stories→Tasks hierarchy, detect duplicate bugs, and list "my work"
Quick Start
End Users (npx, no clone required)
Use the published npm package directly in your MCP config:
{
"servers": {
"azure-devops": {
"command": "npx",
"args": ["-y", "mcp-azure-selfhosted"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-pat-here",
"AZURE_DEVOPS_PROJECT": "MyProject"
}
}
}
}
You can pin a version for deterministic installs by changing args to:
["-y", "[email protected]"]
Local Development (clone and build)
# 1. Install dependencies
cd mcp-azure-selfhosted
npm install
# 2. Build
npm run build
# 3. Configure environment
cp .env.example .env
# Edit .env with your Azure DevOps URL and PAT
# 4. Run
node build/index.js
Configuration
Environment Variables
| Variable | Required | Description |
|---|---|---|
AZURE_DEVOPS_ORG_URL |
Yes | Your Azure DevOps organization URL |
AZURE_DEVOPS_PAT |
Yes | Personal Access Token |
AZURE_DEVOPS_PROJECT |
No | Default project name (can be overridden per tool call) |
AZURE_DEVOPS_API_VERSION |
No | API version (default: 7.1) |
NODE_TLS_REJECT_UNAUTHORIZED |
No | Set to 0 for self-hosted instances with self-signed or expired SSL certificates |
URL Formats
Cloud (Azure DevOps Services):
https://dev.azure.com/{organization}
Self-Hosted (Azure DevOps Server / TFS):
https://{server}:{port}/tfs/{collection}
Creating a PAT
- Go to your Azure DevOps → User Settings → Personal Access Tokens
- Click New Token
- Set the following scopes:
- Work Items: Read & Write
- Project and Team: Read
- Copy the token and set it as
AZURE_DEVOPS_PAT
MCP Integration
VS Code (Copilot / Cline)
Add to your .vscode/mcp.json or VS Code settings:
{
"servers": {
"azure-devops": {
"command": "npx",
"args": ["-y", "mcp-azure-selfhosted"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-pat-here",
"AZURE_DEVOPS_PROJECT": "MyProject",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": ["-y", "mcp-azure-selfhosted"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-org",
"AZURE_DEVOPS_PAT": "your-pat-here",
"AZURE_DEVOPS_PROJECT": "MyProject",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
Note: Set
NODE_TLS_REJECT_UNAUTHORIZEDto"0"only for self-hosted instances with self-signed or expired SSL certificates. Remove it when connecting to Azure DevOps Services (cloud).
Tools Reference
Work Item CRUD (6 tools)
| Tool | Description |
|---|---|
azure_create_work_item |
Create a new Bug, User Story, Task, Feature, Epic, or custom type |
azure_get_work_item |
Get a work item by ID with all fields |
azure_get_work_items |
Batch get up to 200 work items by IDs |
azure_update_work_item |
Update any fields on a work item |
azure_delete_work_item |
Delete (or permanently destroy) a work item |
azure_query_work_items |
Execute WIQL queries to search/filter work items |
State & Assignment (3 tools)
| Tool | Description |
|---|---|
azure_change_state |
Change work item state (New, Active, Resolved, Closed, etc.) |
azure_assign_work_item |
Assign/reassign a work item to a user |
azure_update_fields |
Bulk update multiple fields in one operation |
Comments (2 tools)
| Tool | Description |
|---|---|
azure_add_comment |
Add a comment to a work item |
azure_get_comments |
Get all comments on a work item |
Relationships (2 tools)
| Tool | Description |
|---|---|
azure_link_work_items |
Link two work items (parent-child, related, duplicate, etc.) |
azure_get_relation_types |
List all available relation/link types |
Projects & Teams (4 tools)
| Tool | Description |
|---|---|
azure_list_projects |
List all projects in the organization |
azure_get_project |
Get details of a specific project |
azure_list_teams |
List all teams in a project |
azure_get_team_members |
Get members of a specific team |
Metadata (4 tools)
| Tool | Description |
|---|---|
azure_get_work_item_types |
List available work item types (Bug, Story, Task, etc.) |
azure_get_fields |
List available work item fields and their reference names |
azure_get_areas |
Get area path hierarchy |
azure_get_iterations |
Get iteration/sprint hierarchy |
History (2 tools)
| Tool | Description |
|---|---|
azure_get_work_item_history |
Get field change history (who changed what, when) |
azure_get_work_item_revisions |
Get full snapshots at each revision |
Release Notes (2 tools)
| Tool | Description |
|---|---|
azure_get_sprint_work_items |
Get all work items in a sprint/iteration |
azure_generate_release_notes |
Generate formatted markdown release notes |
Git & Repos (2 tools)
| Tool | Description |
|---|---|
azure_get_file_content |
Get the raw content of a file from a Git repository (optional branch) |
azure_search_code |
Search code across a project (requires the Code Search extension) |
Developer Productivity (1 tool)
| Tool | Description |
|---|---|
azure_get_my_work_items |
Get work items currently assigned to you (excludes Closed/Done by default) |
Product & Program Management (3 tools)
| Tool | Description |
|---|---|
azure_bulk_create_work_items |
Create multiple work items in one call (e.g., import a backlog/PRD) |
azure_get_delivery_plan |
List delivery plans, or get a plan's delivery timeline |
azure_generate_prd_to_stories |
Create a Feature → User Stories → Tasks hierarchy from a structured breakdown |
Attachments (2 tools)
| Tool | Description |
|---|---|
azure_add_attachment |
Attach a file (mockup/screenshot/doc) to a work item from a local path or inline content |
azure_get_attachments |
List a work item's attachments and optionally download them |
Test Plans / QA (6 tools)
| Tool | Description |
|---|---|
azure_list_test_plans |
List all test plans in a project |
azure_get_test_plan |
Get details of a specific test plan |
azure_list_test_suites |
List all test suites within a test plan |
azure_create_test_case |
Create a Test Case with ordered steps; optionally add to a suite |
azure_add_test_result |
Record a pass/fail result for a test case (creates & completes a run) |
azure_create_bug_from_test_failure |
Auto-file a Bug from a failed test with repro details, linked to the test case |
Duplicate Detection (1 tool)
| Tool | Description |
|---|---|
azure_duplicate_detection |
Find likely-duplicate work items by title similarity before creating a new one |
Note:
azure_search_coderequires the Code Search extension on the organization/collection, and the Test Plans tools require Test Plans licensing.
Examples
Create a Bug
Tool: azure_create_work_item
Arguments:
type: "Bug"
title: "Login page crashes on mobile"
description: "The login page throws a JS error on iOS Safari"
priority: 1
severity: "2 - High"
assignedTo: "John Doe"
tags: "frontend; mobile; urgent"
reproSteps: "<ol><li>Open app on iOS Safari</li><li>Navigate to login</li><li>Page crashes</li></ol>"
Query Active Bugs
Tool: azure_query_work_items
Arguments:
wiql: "SELECT [System.Id], [System.Title], [System.State] FROM workitems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active' ORDER BY [Microsoft.VSTS.Common.Priority]"
Generate Release Notes
Tool: azure_generate_release_notes
Arguments:
version: "2.1.0"
iterationPath: "MyProject\\Sprint 23"
includeDescription: true
Link Parent-Child
Tool: azure_link_work_items
Arguments:
sourceId: 100
targetId: 101
linkType: "System.LinkTypes.Hierarchy-Forward"
comment: "Feature contains this story"
Development
# Watch mode (auto-rebuild on changes)
npm run watch
# Dev mode (tsx, direct TS execution)
npm run dev
Publishing to npm (Maintainers)
# 1. Ensure package version is updated in package.json
npm version patch
# 2. Push commit and tag
git push origin main --follow-tags
Publishing is automated via GitHub Actions on tags matching v*.
Required repository secret:
NPM_TOKEN(npm automation token with publish access)
License
MIT
Install Azure Selfhosted in Claude Desktop, Claude Code & Cursor
unyly install azure-selfhostedInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add azure-selfhosted --env AZURE_DEVOPS_ORG_URL="" --env AZURE_DEVOPS_PAT="" --env AZURE_DEVOPS_PROJECT="" --env NODE_TLS_REJECT_UNAUTHORIZED="" -- npx -y mcp-azure-selfhostedStep-by-step: how to install Azure Selfhosted
FAQ
Is Azure Selfhosted MCP free?
Yes, Azure Selfhosted MCP is free — one-click install via Unyly at no cost.
Does Azure Selfhosted need an API key?
Yes, it requires environment variables: AZURE_DEVOPS_ORG_URL, AZURE_DEVOPS_PAT, AZURE_DEVOPS_PROJECT, NODE_TLS_REJECT_UNAUTHORIZED. Unyly injects them into the config during install.
Is Azure Selfhosted hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Azure Selfhosted in Claude Desktop, Claude Code or Cursor?
Open Azure Selfhosted on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Azure Selfhosted with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
