Azure DevOps MCP Server
MCP (Model Context Protocol) server for managing Azure DevOps Work Items including Epics, Features, User Stories, Tasks, Bugs, and more.
Features
- Read Work Items: Get individual work items or list by type with filters
- Create Work Items: Create Epics, Features, User Stories, Tasks, Bugs, etc.
- Update Work Items: Modify any field including state, assignment, description
- Delete Work Items: Move to recycle bin or permanently delete
- Query Work Items: Execute custom WIQL queries
- Link Work Items: Create parent-child and other relationships
- Get Metadata: List work item types, iterations, and area paths
Prerequisites
- Node.js 18 or higher
- Azure DevOps account with a Personal Access Token (PAT)
- PAT needs
Work Items (Read & Write)scope
Installation
npm install
npm run build
Configuration
Set the following environment variables:
export AZURE_DEVOPS_ORG="your-organization"
export AZURE_DEVOPS_PROJECT="your-project"
export AZURE_DEVOPS_PAT="your-personal-access-token"
Creating a PAT
- Go to Azure DevOps > User Settings > Personal Access Tokens
- Create new token with these scopes:
- Work Items: Read & Write
- Copy the token (you won't see it again!)
Usage with Claude Desktop
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"azure-devops": {
"command": "node",
"args": ["path/to/azure-devops-mcp/dist/index.js"],
"env": {
"AZURE_DEVOPS_ORG": "your-organization",
"AZURE_DEVOPS_PROJECT": "your-project",
"AZURE_DEVOPS_PAT": "your-pat"
}
}
}
}
Available Tools
get_work_item
Get a single work item by ID.
{
"id": 123,
"expand": "Relations"
}
list_work_items
List work items by type with optional filters.
{
"type": "User Story",
"state": "Active",
"assignedTo": "user@example.com",
"top": 10
}
create_work_item
Create a new work item.
{
"type": "Task",
"title": "Implement login feature",
"description": "<p>Details here</p>",
"assignedTo": "developer@example.com",
"priority": 2,
"parentId": 100
}
update_work_item
Update an existing work item.
{
"id": 123,
"state": "Resolved",
"comment": "Fixed the issue"
}
delete_work_item
Delete a work item.
{
"id": 123,
"permanent": false
}
query_work_items
Execute a WIQL query.
{
"query": "SELECT [System.Id] FROM WorkItems WHERE [System.State] = 'Active' AND [System.AssignedTo] = @Me"
}
get_child_work_items
Get all children of a work item.
{
"parentId": 100
}
link_work_items
Link two work items.
{
"sourceId": 100,
"targetId": 101,
"linkType": "System.LinkTypes.Hierarchy-Forward",
"comment": "Added as child"
}
get_work_item_types
List available work item types.
get_iterations
List project iterations/sprints.
get_area_paths
List project area paths.
Common Link Types
System.LinkTypes.Hierarchy-Forward- Parent to ChildSystem.LinkTypes.Hierarchy-Reverse- Child to ParentSystem.LinkTypes.Related- Related work itemsSystem.LinkTypes.Dependency-Forward- SuccessorSystem.LinkTypes.Dependency-Reverse- Predecessor
Common Work Item Fields
System.Title- TitleSystem.Description- Description (HTML)System.State- State (New, Active, Resolved, Closed)System.AssignedTo- Assigned userSystem.AreaPath- Area pathSystem.IterationPath- Iteration/SprintSystem.Tags- Tags (semicolon separated)Microsoft.VSTS.Common.Priority- Priority (1-4)Microsoft.VSTS.Scheduling.StoryPoints- Story pointsMicrosoft.VSTS.Scheduling.OriginalEstimate- Original estimateMicrosoft.VSTS.Scheduling.RemainingWork- Remaining workMicrosoft.VSTS.Common.AcceptanceCriteria- Acceptance criteria
License
MIT