Azure DevOps Pull Request MCP Server
LocalAbout Azure DevOps Pull Request MCP Server
Azure DevOps Pull Request MCP Server is a work-in-progress server for developers reviewing Azure DevOps pull requests. It retrieves PR details and comment threads, and can create a comment thread at a code location.
Key features
- 01Retrieve pull request details
- 02Fetch pull request comment threads
- 03Create code-location comment threads
- 04Filter threads by status
Use cases
- 01Review pull request context and status
- 02Inspect existing review comments
- 03Leave a comment on a changed code location
MCP support
Exposes GetPrDetails, GetPrThreads, and CreatePrThread tools to MCP clients for Azure DevOps pull request operations.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEAzure DevOps Pull Request MCP Server
A Model Context Protocol (MCP) server implementation focused on Azure DevOps pull request interactions. This server provides tools for accessing and manipulating Azure DevOps pull requests, built using the ModelContextProtocol NuGet package.
Overview
This MCP server is designed as a learning project to demonstrate integration with Azure DevOps pull request APIs through the Model Context Protocol. It provides tools for:
- Retrieving pull request details
- Fetching pull request threads/comments
- Creating new comment threads on specific code locations
Project Status
DISCLAIMER: This project is still a Work in Progress (WIP)
Upcoming Features
- Package server as a dotnet tool for easier installation and usage
- Enhanced thread support:
- Ability to respond to existing threads
- Add comments to existing threads
- Better thread management capabilities
Usage Examples
PR Review Workflow
To perform a pull request review, you can use the following prompt template:
I want us to review together PR https://dev.azure.com/org/project/_git/repo/pullrequest/123
First let's have high level review of the PR context and then let's drill down to changed files
and what was changed there - please share if you have any suggestions or you notice any issues.
Please verify you are in the local folder of the repo we are doing PR on and switch to the PR
branch to be able to look at files.
This will trigger the following workflow:
- Retrieve PR details using GetPrDetails tool
- Analyze PR context and scope
- Review changed files in local repo
- Provide suggestions using CreatePrThread tool
Creating a New Thread
var input = new AdoCreateThreadInput
{
PrUrl = "https://dev.azure.com/org/project/_git/repo/pullrequest/123",
Content = "Consider using a more descriptive variable name",
Context = new ThreadContext
{
FilePath = "src/file.cs",
StartLine = 10,
EndLine = 10
}
};
Example Review Session
Prompts you can use during the review:
1. Get PR Overview:
"Let's review PR https://dev.azure.com/org/project/_git/repo/pullrequest/123"
2. Focus on Specific File:
"Can you analyze the changes in src/file.cs?"
3. Add Comment:
"Please add a comment on line 45 of src/file.cs suggesting to use async/await"
4. Get Existing Comments:
"Show me all the review comments in this PR"
Each of these prompts will utilize the appropriate MCP tools:
- GetPrDetails for PR information
- GetPrThreads for existing comments
- CreatePrThread for adding new comments
Requirements
- .NET 8.0 SDK
- One of the following authentication methods:
-
Recommended: Azure Identity Authentication
- Uses DefaultAzureCredential from Azure.Identity
- More secure as it supports managed identities and other Azure authentication methods
- No PAT required
-
Legacy: Personal Access Token (PAT)
- Not recommended for security reasons
- If you must use PAT, it requires the following scopes:
Code (Read & Write)Pull Request Threads (Read & Write)
-
Building and Installing the MCP Server
- Clone this repository
- Build the project:
dotnet build -c Release
- Add the MCP server to your VSCode settings by modifying the MCP settings JSON file.
Add the following configuration to the mcpServers object in your configuration file:
{
"mcpServers": {
"azure-devops-pr": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"command": "dotnet",
"args": ["path/to/bin/Release/net8.0/AzureDevopsPullrequestMcpServer.dll"],
"env": {
// Optional: Only needed if using PAT authentication (not recommended)
// "AZURE_DEVOPS_PAT": "your-pat-token"
// If AZURE_DEVOPS_PAT is not set, DefaultAzureCredential will be used
},
"transportType": "stdio"
}
}
}
Replace:
path/towith the actual path to your built DLLyour-pat-tokenwith your Azure DevOps Personal Access Token (only if using PAT authentication)
Note: If AZURE_DEVOPS_PAT is not provided in the configuration, the server will automatically use DefaultAzureCredential for authentication, which is the recommended approach.
Configuration options:
timeout: Operation timeout in seconds (default: 60)transportType: Communication protocol (using "stdio")disabled: Whether the server is disabledautoApprove: List of operations that don't require explicit approval
The server will appear in the Connected MCP Servers section as:
azure-devops-pr (dotnet path/to/AzureDevopsPullrequestMcpServer.dll)
With the following available tools:
- GetPrDetails
- GetPrThreads
- CreatePrThread
Usage
The application supports two authentication methods:
- Using Azure Identity (Recommended)
# DefaultAzureCredential will be used automatically if PAT is not provided
dotnet run -- --pr-url <azure-devops-pr-url>
- Using Personal Access Token (Legacy)
# Not recommended for security reasons
dotnet run -- --pat <your-pat-token> --pr-url <azure-devops-pr-url>
Example:
# Using Azure Identity (Recommended)
dotnet run -- --pr-url https://dev.azure.com/org/project/_git/repo/pullrequest/123
# Using PAT (Not Recommended)
dotnet run -- --pat abc123... --pr-url https://dev.azure.com/org/project/_git/repo/pullrequest/123
Available Tools
GetPrDetails
Retrieves details about a specific pull request.
Input Schema:
{
"prUrl": "string",
"includeStatuses": ["string"] | null,
"excludeStatuses": ["string"] | null
}
GetPrThreads
Fetches comment threads from a pull request.
Input Schema:
{
"prUrl": "string",
"includeStatuses": ["string"] | null,
"excludeStatuses": ["string"] | null
}
CreatePrThread
Creates a new comment thread at a specific location in code.
Input Schema:
{
"prUrl": "string",
"content": "string",
"context": {
"filePath": "string",
"startLine": number | null,
"startOffset": number | null,
"endLine": number | null,
"endOffset": number | null
}
}
Development
Built with:
- C#/.NET
- ModelContextProtocol NuGet package
- Azure DevOps REST APIs
Project Structure
src/Models/- Data models for pull requests and threadsPullRequestDetails.cs- PR data structurePullRequestThread.cs- Thread and comment modelsAdoCreateThreadInput.cs- Thread creation input model
src/Services/AdoPullRequestTool.cs- Core API communication service
src/Utils/IUrlParser.cs- URL processing utilities
Contributing
This is a learning project demonstrating MCP server implementation. Feel free to use it as a reference for building your own MCP servers or extending its functionality.
License
MIT License
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.