Skip to content

v1.2.0

Choose a tag to compare

@viamus viamus released this 20 Feb 16:46
· 29 commits to main since this release

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:

cp .env.example .env

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

  1. Docker users: Create a .env file from the new .env.example template. No changes to docker-compose.yml are required.
  2. PAT: If you plan to use create_pull_request, update your PAT to include Code: Read & Write.
  3. 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(-)