azdo-mcp
If you are the rightful owner of azdo-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
An MCP server that integrates with Azure DevOps, enabling AI assistants to manage work items, pull requests, and wikis.
Azure DevOps MCP Server
An MCP (Model Context Protocol) server that provides integration with Azure DevOps, allowing AI assistants to interact with Azure DevOps work items, pull requests, and wikis.
Features
- Work Items Management (create, list, get)
- Pull Request Operations (create, list, get, comment, diff)
- Wiki Page Management (create, edit)
Setup
- Install dependencies:
npm install
- Configure environment variables (create a .env file):
AZURE_DEVOPS_ORG_URL=https://dev.azure.com/your-org
AZURE_DEVOPS_PAT=your-personal-access-token
AZURE_DEVOPS_PROJECT=default-project
AZURE_DEVOPS_REPOSITORY=default-repo
- Build the server:
npm run build
Installation
Add the server configuration to your MCP settings:
For VSCode
On macOS/Linux
Add to ~/.vscode/cline_mcp_settings.json
or the Cursor/Roo equivalent:
{
"mcpServers": {
"azure-devops": {
"command": "node",
"args": ["/path/to/azure-devops-mcp/build/index.js"],
"env": {
"AZURE_DEVOPS_ORG_URL": "your-org-url",
"AZURE_DEVOPS_PAT": "your-pat",
"AZURE_DEVOPS_PROJECT": "your-project",
"AZURE_DEVOPS_REPOSITORY": "your-repo"
},
"disabled": false,
"autoApprove": []
}
}
}
On Windows
Add to %USERPROFILE%\.vscode\cline_mcp_settings.json
or the Cursor/Roo equivalent:
{
"mcpServers": {
"azure-devops": {
"command": "node",
"args": ["C:/path/to/azure-devops-mcp/build/index.js"],
"env": {
"AZURE_DEVOPS_ORG_URL": "your-org-url",
"AZURE_DEVOPS_PAT": "your-pat",
"AZURE_DEVOPS_PROJECT": "your-project",
"AZURE_DEVOPS_REPOSITORY": "your-repo"
},
"disabled": false,
"autoApprove": []
}
}
}
Available Tools
Work Items
list_work_items
Lists work items in a project.
{
"project": string, // Required
"types"?: string[], // Optional: Filter by work item types
"states"?: string[], // Optional: Filter by states
"assignedTo"?: string // Optional: Filter by assigned user
}
get_work_item
Get details of a specific work item.
{
"project": string, // Required
"id": number // Required: Work item ID
}
create_work_item
Create a new work item.
{
"project": string, // Required
"type": string, // Required: e.g., "Task", "Bug"
"title": string, // Required
"description"?: string, // Optional
"assignedTo"?: string // Optional
}
Pull Requests
list_pull_requests
List pull requests in a repository.
{
"status"?: "active" | "completed" | "abandoned" // Optional
}
get_pull_request
Get details of a specific pull request.
{
"pullRequestId": number // Required
}
create_pull_request
Create a new pull request.
{
"title": string, // Required
"description": string, // Required
"sourceBranch": string, // Required
"targetBranch": string, // Required
"reviewers"?: string[] // Optional: Array of reviewer email addresses
}
create_pull_request_comment
Add a comment to a pull request.
{
"pullRequestId": number, // Required
"content": string, // Required
"threadId"?: number, // Optional: For replies
"filePath"?: string, // Optional: For file comments
"lineNumber"?: number, // Optional: For line comments
"status"?: "active"|"fixed"|"pending"|"wontfix"|"closed" // Optional: Thread status
}
get_pull_request_diff
Get the diff for a pull request.
{
"pullRequestId": number, // Required
"filePath"?: string, // Optional: Specific file to get diff for
"iterationId"?: number // Optional: Specific iteration to get diff for
}
Wiki
create_wiki_page
Create a new wiki page.
{
"project": string, // Required
"wiki": string, // Required
"path": string, // Required
"content": string // Required
}
edit_wiki_page
Edit an existing wiki page.
{
"project": string, // Required
"wiki": string, // Required
"path": string, // Required
"content": string, // Required
"etag": string // Required: For concurrency control
}
Development
Run in development mode with environment variables:
npm run dev
Note
Unless explicitly specified in the tool arguments, the project
and repository
parameters will use default values from your environment configuration.