Releases: viamus/mcp-azure-devops
v1.2.0
Release Notes — v1.2.0
What's New
New MCP Tools
Work Item Tools
| Tool | Description |
|---|---|
create_work_item |
Creates a new work item (Bug, Task, User Story, etc.) with support for all standard fields, parent linking, and custom fields |
update_work_item |
Updates an existing work item — only specified fields are changed, omitted fields remain unchanged |
Pull Request Tools
| Tool | Description |
|---|---|
create_pull_request |
Creates a new pull request with title, description, source/target branches, draft flag, reviewers (by GUID), and linked work items |
Analytics Tools (entire new category)
| Tool | Description |
|---|---|
get_flow_metrics |
Calculates Lead Time, Cycle Time, and Throughput with statistical analysis (average, median, P85, P95) |
compare_flow_metrics |
Compares metrics between two time periods to identify delivery trends |
get_wip_analysis |
Analyzes Work in Progress grouped by state, area path, and assignee |
get_bottlenecks |
Identifies workflow bottlenecks with severity scores (1–10) and actionable recommendations |
get_team_workload |
Analyzes workload distribution across team members |
get_aging_report |
Reports aging work items with urgency classification (Critical / High / Medium / Low) and recommendations |
New Features
API Key Authentication
- New optional middleware to protect MCP endpoints with a pre-shared API key.
- Configure via
appsettings.json(ServerSecurity.ApiKey/ServerSecurity.RequireApiKey) or environment variables (MCP_API_KEY/MCP_REQUIRE_API_KEY). - The
/healthendpoint is always accessible without a key. - Clients send the key via the
X-API-Keyrequest header.
HTTPS Support
- Server can be configured to run with HTTPS on port 5001 for local development.
- Recommendation to use a reverse proxy (nginx, traefik, Application Gateway) for production TLS termination.
GitHub Actions CI/CD
- Added
ci.ymlworkflow: build, test, and validate on every push/PR. - Added
pr-validation.ymlworkflow: PR-specific checks and validations.
Improvements
- Batch work item retrieval: Work items are now processed in batches to avoid Azure DevOps API rate limits (
get_work_items). - Default port changed to HTTP 5000: Avoids certificate validation issues with MCP clients when running locally with .NET CLI.
- Docker health check fix: Health endpoint is now correctly reachable inside the container.
- Dockerfile build fix: Resolved an issue that prevented the container from building correctly.
Configuration
New .env.example file
A .env.example template is now included in the repository. Copy it to .env before running with Docker Compose:
cp .env.example .envVariables covered:
| Variable | Required | Description |
|---|---|---|
AZURE_DEVOPS_ORG_URL |
Yes | Azure DevOps organization URL |
AZURE_DEVOPS_PAT |
Yes | Personal Access Token |
AZURE_DEVOPS_DEFAULT_PROJECT |
No | Default project name |
MCP_API_KEY |
No | API key for server authentication |
MCP_REQUIRE_API_KEY |
No | Enable/disable API key enforcement (default: false) |
Updated PAT Scopes
Creating pull requests requires Code: Read & Write (previously only Read was documented).
| Scope | Permission | Required for |
|---|---|---|
| Work Items | Read & Write | Get, query, create, update work items and add comments |
| Code | Read & Write | Git repositories, branches, files, and pull requests (Write required to create PRs) |
| Build | Read | Pipelines and builds |
Bug Fixes
| Commit | Fix |
|---|---|
ffb4d1e |
Use named parameters in CreatePullRequestAsync to avoid argument order ambiguity |
9dc78b9 |
Fix health check endpoint inside Docker container |
ee36a28 |
Fix Dockerfile build to compile correctly |
be5c3b5 |
Process work items in batches to avoid Azure DevOps API limits |
Breaking Changes
None. All existing tools and configuration remain fully compatible with v1.1.0.
Migration from v1.1.0
- Docker users: Create a
.envfile from the new.env.exampletemplate. No changes todocker-compose.ymlare required. - PAT: If you plan to use
create_pull_request, update your PAT to include Code: Read & Write. - API Key (optional): To enable server authentication, add
MCP_API_KEYandMCP_REQUIRE_API_KEY=trueto your.envorappsettings.json. Update your MCP client configuration to send theX-API-Keyheader.
Full Diff
git diff v1.1.0..main --stat
.env.example | 36 +
.github/workflows/ci.yml | 39 +
.github/workflows/pr-validation.yml | 41 +
CONTRIBUTING.md | 2 +-
README.md | 245 +++-
docker-compose.yml | 2 +
install-mcp-azure-devops.ps1 | 58 +-
src/.../Configuration/ServerSecurityOptions.cs | 19 +
src/.../Dockerfile | 7 +-
src/.../Middleware/ApiKeyAuthentication.cs | 110 ++
src/.../Models/FlowMetricsDto.cs | 170 +++
src/.../Models/WipAnalysisDto.cs | 463 +++++++
src/.../Program.cs | 8 +
src/.../Properties/launchSettings.json | 9 +
src/.../Services/AzureDevOpsService.cs | 366 +++++-
src/.../Services/IAzureDevOpsService.cs | 88 ++
src/.../Tools/AnalyticsTools.cs | 1334 ++++++++++++++
src/.../Tools/PullRequestTools.cs | 57 +
src/.../Tools/WorkItemTools.cs | 126 ++
src/.../Viamus.Azure.Devops.Mcp.Server.csproj | 2 +-
src/.../appsettings.json | 4 +
tests/.../Configuration/...Tests.cs | 63 +
tests/.../Middleware/...Tests.cs | 405 ++++++
tests/.../Models/FlowMetricsDtoTests.cs | 351 +++++
tests/.../Models/WipAnalysisDtoTests.cs | 536 ++++++++
tests/.../Tools/PullRequestToolsTests.cs | 156 +++
tests/.../Tools/WorkItemToolsTests.cs | 226 ++++
tests/.../Tests.csproj | 1 +
28 files changed, 4837 insertions(+), 87 deletions(-)
v1.1.0
🚀 Release Notes — v1.1.0
MCP Azure DevOps Server
This release significantly expands the capabilities of the Azure DevOps MCP Server, adding support for Git Repositories, Pull Requests, and Pipelines/Builds, along with improved setup experience.
✨ Highlights
- Git Repository Tools — Browse repositories, branches, files, and file contents
- Pull Request Tools — Query, search, and inspect pull requests and their comment threads
- Pipeline & Build Tools — List pipelines, inspect builds, view logs and timelines
- Work Item Comments — New tool to add comments to work items
- Automated Installation Script — PowerShell script for one-command setup on Windows
- Simplified Configuration — Now uses
appsettings.jsoninstead of.envfiles
🧠 New MCP Tools
Git Repository Tools
| Tool | Description |
|---|---|
get_repositories |
Lists all Git repositories in a project |
get_repository |
Gets details of a specific repository by name or ID |
get_branches |
Lists all branches in a repository |
get_repository_items |
Browses files and folders at a specific path |
get_file_content |
Gets the content of a specific file |
search_repository_files |
Searches for files by path pattern |
Pull Request Tools
| Tool | Description |
|---|---|
get_pull_requests |
Lists pull requests with optional filters |
get_pull_request |
Gets details of a specific pull request |
get_pull_request_threads |
Gets comment threads for a pull request |
search_pull_requests |
Searches pull requests by text |
query_pull_requests |
Advanced query with multiple combined filters |
Pipeline & Build Tools
| Tool | Description |
|---|---|
get_pipelines |
Lists all pipelines in a project |
get_pipeline |
Gets details of a specific pipeline |
get_pipeline_runs |
Gets recent runs for a pipeline |
get_build |
Gets details of a specific build |
get_builds |
Lists builds with optional filters |
get_build_logs |
Gets the list of log files for a build |
get_build_log_content |
Gets the content of a specific build log |
get_build_timeline |
Gets the timeline (stages, jobs, tasks) for a build |
query_builds |
Advanced query with multiple combined filters |
Work Item Tools (New)
| Tool | Description |
|---|---|
add_work_item_comment |
Adds a comment to a specific work item |
🛠️ Setup & Configuration
New: Automated Installation (Windows)
A PowerShell script is now available for automated setup:
.\install-mcp-azure-devops.ps1 `
-OrganizationUrl "https://dev.azure.com/your-org" `
-PersonalAccessToken "your-pat" `
-DefaultProject "your-project"The script automatically installs:
- .NET 10 SDK
- Node.js
- Claude Code CLI
- Clones and configures the repository
- Registers the MCP server with Claude Code
Configuration Change
Configuration has moved from .env to appsettings.json:
{
"AzureDevOps": {
"OrganizationUrl": "https://dev.azure.com/your-organization",
"PersonalAccessToken": "your-personal-access-token",
"DefaultProject": "your-project-name"
}
}🐳 Runtime & Deployment
- Docker Compose — Server runs at
http://localhost:8080 - .NET CLI — Server runs at
http://localhost:5000 - Health check endpoint:
/health
🔌 Client Integration
Compatible with:
- Claude Desktop
- Claude Code (with HTTP transport)
- Any MCP-compatible client
📊 Summary
| Category | v1.0.0 | v1.1.0 |
|---|---|---|
| Work Item Tools | 8 | 9 (+1) |
| Git Repository Tools | 0 | 6 (new) |
| Pull Request Tools | 0 | 5 (new) |
| Pipeline/Build Tools | 0 | 9 (new) |
| Total Tools | 8 | 29 |
🔗 Links
🚀 Release Notes — v1.0.0
🚀 Release Notes — v1.0.0
MCP Azure DevOps Server
This is the first public release of the Azure DevOps MCP Server, enabling AI assistants to interact with Azure DevOps Work Items through the Model Context Protocol (MCP).
✨ Highlights
- Initial implementation of an MCP-compliant server for Azure DevOps
- Secure authentication using Personal Access Tokens (PAT)
- Ready to run via Docker Compose or .NET CLI
- Compatible with Claude Desktop, Claude Code, and any MCP-compatible client
- Designed to provide structured, queryable context for AI-assisted analysis
🧠 Available MCP Tools
The following tools are available in this release:
get_work_item— Retrieve a work item by IDget_work_items— Batch retrieval of work items by IDsquery_work_items— Query work items using WIQLget_work_items_by_state— Filter work items by state (New, Active, Closed, etc.)get_work_items_assigned_to— Retrieve work items assigned to a specific userget_child_work_items— Get child work items of a parent work itemget_recent_work_items— Retrieve recently changed work itemssearch_work_items— Search work items by title text
🐳 Runtime & Setup
- Supports .NET 10 SDK
- Containerized execution via Docker & Docker Compose (recommended)
- Configuration via environment variables (
.env) - Built-in health check endpoint (
/health)
🔌 Client Integration
This release is compatible with:
- Claude Desktop
- Claude Code
- Any MCP-compatible client over HTTP
📁 Project Structure
The project follows a clear and extensible structure:
Configuration— Environment and application configurationModels— DTOs and domain modelsServices— Azure DevOps integration logicTools— MCP-exposed toolsProgram.cs—