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
/health endpoint is always accessible without a key.
- Clients send the key via the
X-API-Key request 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.yml workflow: build, test, and validate on every push/PR.
- Added
pr-validation.yml workflow: 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:
Variables 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
.env file from the new .env.example template. No changes to docker-compose.yml are 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_KEY and MCP_REQUIRE_API_KEY=true to your .env or appsettings.json. Update your MCP client configuration to send the X-API-Key header.
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(-)