Skip to content

Migrate Azure DevOps MCP from local (stdio) to remote (HTTP) server #1

@fedeoliv

Description

@fedeoliv

The framework currently uses the local Azure DevOps MCP server (@azure-devops/mcp) via stdio transport:

"ado": {
  "type": "stdio",
  "command": "npx",
  "args": ["-y", "@azure-devops/mcp@next", "${input:ado_org}"]
}

Microsoft has released the Azure DevOps Remote MCP Server (public preview) and plans to archive the local server repository once the remote reaches GA. The remote server provides the same capabilities with no local installation required.

Official docs: Set up the remote Azure DevOps MCP Server

Proposed Change

Replace the local ado server entry with the remote HTTP endpoint. Since this is a framework consumed by different organizations, the organization must be omitted from the URL so each consumer authenticates against their own org at runtime:

"ado": {
  "url": "https://mcp.dev.azure.com/",
  "type": "http",
  "headers": {
    "X-MCP-Toolsets": "wit,work,search,repos"
  }
}

The ado_org promptString input should also be removed from the inputs array since it's no longer needed for server startup args. When the org is omitted from the URL, the consumer provides it as context in tool calls.

Toolset rationale

Explicit toolsets follow the principle of least privilege. Only toolsets actively used by the framework are enabled:

Toolset Why enabled
wit Core of the delivery framework — work item CRUD used by decompose, kickoff, implement, sprint, refine, envision, specify
work Sprint planning — sprint agent uses work_list_team_iterations and work_get_team_capacity
search Duplicate detection and backlog queries — search_workitem used by refine, sprint, decompose, kickoff, implement
repos PR and repository tools — enables ADO-hosted repo scenarios where consumers need PR creation, review threads, and branch management through the same MCP server
Toolset Why excluded
pipelines No agent uses ADO pipeline tools — CI/CD currently handled via GitHub Actions
wiki No agent reads/writes ADO Wiki — docs are in-repo markdown
testplan No test plan agent exists in the framework

Scope of Changes

  1. .vscode/mcp.json — Replace ado server config from stdio/npx to http with https://mcp.dev.azure.com/. Remove the ado_org input. Add X-MCP-Toolsets header.
  2. docs/framework/core-components/mcp-servers.md — Update the Azure DevOps section: remote server URL, HTTP transport, Entra ID auth, toolset header, and expanded tool table (now includes repos and work categories). Update repo link.
  3. CHANGELOG.md — Document the migration.

Key Considerations

  • Authentication change: Remote server uses Microsoft Entra ID (OAuth) only. PAT-based auth is no longer available. Consumer's ADO org must be backed by Entra ID — standalone (MSA) orgs are not supported.
  • Client support: Currently only VS Code and Visual Studio with GitHub Copilot are supported. Claude Desktop, Claude Code, and other clients are pending Entra dynamic OAuth registration.
  • No local prerequisites: Consumers no longer need Node.js 20+ or npx for the ADO MCP server.
  • Preview status: The remote server is in public preview. The local server is still GA. Microsoft's stated investment direction makes adopting the remote server pragmatic, but this should be noted in docs.

Follow-up: ADO Repos agent wiring

The repos toolset is enabled by this change, but the framework's PR/review agents (implement, review, refine) currently only reference github/* PR tools. A follow-up issue should wire the ado/repo_* equivalents into:

  • pull-request skill — Platform-aware PR creation (github/create_pull_request vs ado/repo_create_pull_request) based on board-config repo platform detection
  • implement agent — Add ado/repo_create_pull_request, ado/repo_list_pull_requests, ado/repo_get_pull_request_by_id to tool allowlist
  • review agent — Add ado/repo_create_pull_request_thread, ado/repo_reply_to_comment for PR review comments
  • refine agent — Add ado/repo_list_pull_requests_by_repo_or_project for backlog-PR correlation

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions