Azure DevOps MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Azure DevOps MCP Serverlist bugs assigned to me in current sprint"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Azure DevOps MCP Server
Azure DevOps MCP server for reading and updating work items, comments, metadata, and relations from an MCP-compatible client.
Features
Read one or many work items by ID
Query work items with raw WIQL
List work items with structured filters such as type, state, assignee, tags, iteration, and area path
Create, update, bulk update, and delete work items
Read and add work item comments
Read, add, and remove work item relations
List projects, work item types, iterations, and area paths
Expose reusable prompts for sprint summaries, bug triage, and drafting work items
Expose MCP resources for server info and individual work items
Support
stdioand HTTP transport modesSupport interactive Azure sign-in with persistent token caching
Support PAT-based auth and Azure Key Vault backed secret loading
Related MCP server: Azure DevOps MCP Server
Requirements
Node.js 20 or newer
Access to an Azure DevOps organization and project
An MCP client that supports a JSON server configuration
Install
npm install
npm run buildAuthentication
The server supports these authentication modes:
interactive: opens the Microsoft sign-in flow on first use, then reuses the cached session on later runsdefault: uses the Azure default credential chainAZURE_DEVOPS_PAT: uses a personal access token if you prefer PAT-based auth
For interactive auth, the server stores:
an authentication record at
~/.azure-devops-mcp/authentication-record.jsona persistent token cache managed by the operating system
Configuration
The server reads configuration from:
environment variables
an optional
mcp-config.jsonfile in the project root
If both are present, environment variables take precedence.
Common settings
Setting | Description |
| Azure DevOps organization URL |
| Default project used when a tool call omits |
|
|
| Optional custom path for the auth record file |
| Optional PAT for direct Azure DevOps auth |
| Optional Entra app client ID |
| Optional Entra tenant ID |
| Optional client secret for non-interactive Azure auth |
| Optional Key Vault URI for loading secrets |
|
|
| HTTP bind host when using HTTP transport |
| HTTP port when using HTTP transport |
| Optional bearer token for the HTTP |
| Optional TLS certificate secret or path value |
| Optional TLS private key secret or path value |
| Log level such as |
| Per-request timeout in milliseconds |
| Timeout for bulk requests in milliseconds |
| Retry count for transient failures |
Example mcp-config.json
{
"azureDevopsOrgUrl": "https://dev.azure.com/example-org",
"azureDevopsDefaultProject": "example-project",
"azureAuthMode": "interactive",
"mcpTransport": "stdio",
"logLevel": "info",
"requestTimeoutMs": 10000,
"bulkRequestTimeoutMs": 30000,
"maxRetryAttempts": 3
}MCP Client JSON Config
Stdio example
Use this when your MCP client launches the server as a local process.
{
"mcpServers": {
"azure-devops": {
"command": "node",
"args": [
"F:/path/to/azure-mcp/dist/index.js"
],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/example-org",
"AZURE_DEVOPS_DEFAULT_PROJECT": "example-project",
"AZURE_AUTH_MODE": "interactive",
"MCP_TRANSPORT": "stdio",
"LOG_LEVEL": "info"
}
}
}
}HTTP example
Use this when you want to run the server separately and expose /mcp over HTTP.
Server environment:
{
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/example-org",
"AZURE_DEVOPS_DEFAULT_PROJECT": "example-project",
"AZURE_AUTH_MODE": "interactive",
"MCP_TRANSPORT": "http",
"MCP_HTTP_HOST": "127.0.0.1",
"MCP_HTTP_PORT": "3000",
"MCP_AUTH_TOKEN": "replace-with-a-demo-token"
}Client connection example:
{
"mcpServers": {
"azure-devops-http": {
"transport": {
"type": "streamable-http",
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer replace-with-a-demo-token"
}
}
}
}
}Available Tools
get_work_itemget_work_itemsquery_work_itemslist_work_itemscreate_work_itemupdate_work_itembulk_update_work_itemsdelete_work_itemget_commentsadd_commentget_relationsadd_relationremove_relationlist_projectslist_work_item_typeslist_iterationslist_area_paths
Available Prompts
summarize_sprinttriage_bugsdraft_work_item
Available Resources
azure-devops://server/infoazure-devops://{organization}/{project}/workitems/{id}
Run
Development mode:
npm run devProduction build:
npm run build
npm startThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/karthikpro/azure-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server