Model or dataset
Tiberriver256/mcp-server-azure-devops avatar
Tiberriver256/mcp-server-azure-devops

Tiberriver256/mcp-server-azure-devops: a community MCP bridge for Azure DevOps, on-prem included

An MCP server for Azure DevOps

388 stars127 forksTypeScriptMIT

At a glance

What is it?
This TypeScript MCP server exposes Azure DevOps projects, work items, repositories, pull requests, branches and pipelines as tools an AI assistant can call. Its clearest reason to exist is Azure DevOps Server, where the README says Microsoft's product-supported server may not work.
Who is it for?
Adopt this server if you run Azure DevOps Server on-premises, or if you need a feature the README says Microsoft's product-supported server does not yet have. Skip it for Azure DevOps Services cloud unless you have checked Discussion #237 and the ROADMAP first, because the README itself sends cloud users to microsoft/azure-devops-mcp.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What this MCP server actually does for an Azure DevOps team

The Model Context Protocol gives an AI assistant a fixed vocabulary of tools it can call. This project fills that vocabulary with Azure DevOps operations. According to the README, the server registers tools across projects, work items, repositories, pull requests, branches and pipelines, so an assistant can read a work item, open a pull request, or create a branch without the user pasting API calls into the chat.

The audience is narrow and worth stating plainly. If your organisation runs Azure DevOps Services in the cloud, the README opens by telling you to start with microsoft/azure-devops-mcp, which Microsoft maintains as a product-supported server. This repository positions itself as the community alternative for Azure DevOps Server (on-premises), particularly older versions that may not work with Microsoft's MCP, and for features the official server does not yet expose. Discussion #237 and ROADMAP.md are where the author tracks that differentiation. Read those two files before you invest setup time, because they define the only case where this project is the right pick.

How the server is structured and how a request flows

The README describes a feature-based architecture. AzureDevOpsServer is the main class: it initializes the MCP server and registers tools. Each feature area (work-items, projects, repositories, and the rest) lives in its own module, and each module supplies request identification and handling functions plus modular tool handlers for individual operations. Adding a new Azure DevOps capability means adding a module and registering its tools, not editing one large dispatch file.

Communication is over stdio, not HTTP. The .env.example file states this explicitly in a comment: "This server uses stdio for communication, not HTTP". That single fact explains the deployment shape. The server is a child process spawned by the MCP client (Claude Desktop, Cursor, VS Code, or whatever host you use), it reads JSON-RPC messages on standard input, and it talks to Azure DevOps over the network using credentials from its environment. Nothing listens on a port, so there is no server to expose, no TLS to terminate, and no separate host to keep patched. It also means one process per client session, and credentials live in the client's configuration file rather than in a shared secret store.

Repository content is reachable through standardized resource URIs, per the README, which is a different surface from the tools. Tools are actions the model chooses to invoke; resources are content the host can attach to context.

Install azure devops mcp server: npx, a config block, and a first call

The README gives two paths. If you only want the published package, you do not clone or build anything; npx fetches and runs it. The prerequisites are Node.js v16 or later, npm or yarn, an Azure DevOps account, and credentials in one of three forms: a Personal Access Token, Azure Identity credentials, or an Azure CLI login.

This is the published-package invocation exactly as the README shows it:

bash
npx -y @tiberriver256/mcp-server-azure-devops

Running it standalone is not useful on its own; it expects an MCP client on the other end of stdio. The real first step is registering it with your assistant. For Azure Identity authentication, the README says to log in with az login first, then add this to the client configuration file:

json
{
  "mcpServers": {
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
        "AZURE_DEVOPS_AUTH_METHOD": "azure-identity",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
      }
    }
  }
}

After a restart, the client should list the azureDevOps server and its tools. Ask it to fetch a work item by ID from your default project and confirm the returned fields match what the Azure DevOps web UI shows. If the tool list is empty or the call fails with an authentication error, the credentials, not the tool schema, are usually the problem.

For Azure DevOps Server, the README is explicit that PAT authentication is required, and the organization URL becomes your collection URL:

json
{
  "mcpServers": {
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://server:8080/tfs/DefaultCollection",
        "AZURE_DEVOPS_AUTH_METHOD": "pat",
        "AZURE_DEVOPS_PAT": "<YOUR_PAT>",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
      }
    }
  }
}

If you want to work from source instead, the README's sequence is npm ci, copy .env.example to .env and edit the values, npm run build, then npm start, which runs node dist/index.js. For auto-reload during development it offers npm run dev, which runs src/index.ts through ts-node-dev. There is also an inspector script that builds and launches the MCP inspector against the built entry point, useful for listing tools without a full assistant.

Authentication choices and the on-premises constraint

Three methods are supported, and the differences matter more than the table suggests. AZURE_DEVOPS_AUTH_METHOD accepts pat, azure-identity or azure-cli, is case-insensitive, and defaults to azure-identity. The default is a reasonable choice for cloud users with an Azure CLI login, but it is the wrong default for anyone on-premises, because the README states that Azure DevOps Server supports PAT authentication only. Azure Identity and Azure CLI apply to Azure DevOps Services.

AZURE_DEVOPS_ORG_URL is the only strictly required variable, and for on-premises it must be the full collection URL, for example https://server:8080/tfs/DefaultCollection, not just a hostname. AZURE_DEVOPS_DEFAULT_PROJECT is optional and saves you from naming a project in every request. AZURE_DEVOPS_API_VERSION is optional and defaults to the latest; the example file shows 6.0 as a commented value. That last variable is the escape hatch for older on-premises installations whose API surface predates the newest version, and it is worth knowing it exists before you conclude the server cannot talk to your server.

For service principals under azure-identity, the commented AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET variables in .env.example are the ones to uncomment. The README points to docs/authentication.md for the complete configuration reference and to docs/examples for per-method example files. Those two locations are where to look when a variable in the README table is truncated or unclear.

Where this server is the wrong tool

The most honest limitation is the one the maintainer states first. On Azure DevOps Services cloud, Microsoft's product-supported server is the recommended starting point, and this README says so. Choosing the community server there means accepting a smaller support surface for no stated benefit, unless a feature in ROADMAP.md is one you need now.

The second limitation is authentication scope. Because the server acts with whatever credentials you hand it, a PAT with the scopes listed in .env.example (Code Read & Write, Work Items Read & Write, Build Read & Execute, Project and Team Read, Graph Read, Release Read & Execute) grants the assistant write access to code and work items. There is no per-tool permission layer documented in the README. If you want the assistant to read work items but never push a branch, the documentation does not describe a way to express that, and you would be relying on the model's judgement rather than on a server-side control.

Third, stdio-only transport rules out shared deployments. You cannot stand this up once behind a URL for a whole team; each user runs their own process with their own credentials. That is fine for individual developer machines and awkward for anything resembling a central service.

Finally, the version line tells its own story. Releases went from v0.1.45 in February 2026 to v0.1.46 in June 2026 to v0.1.47 in September 2026. The 0.1.x prefix and the spacing between releases are consistent with a project that adds capabilities incrementally rather than one with a frozen interface. Pin a version in your client config if you care about reproducibility.

How it compares with Microsoft's official Azure DevOps MCP server

The alternative the README itself names is microsoft/azure-devops-mcp. The difference is not primarily technical; it is about who carries the support burden and which Azure DevOps you run. Microsoft's server is product-supported and aimed at Azure DevOps Services. This one is community-maintained, MIT-licensed, and aimed at the cases Microsoft's does not cover well: on-premises Azure DevOps Server, especially older versions, plus features the official server has not shipped yet.

The practical test is a single question. If your organization URL looks like https://dev.azure.com/your-organization, start with the official server. If it looks like https://server:8080/tfs/DefaultCollection, this project is the one whose README claims support for that shape, with PAT authentication and an optional API version pin. Everything else (which client you use, whether it is Claude Desktop, Cursor, VS Code or GitHub Copilot) is downstream of that decision, because both servers speak MCP over stdio and plug into the same hosts.

Licence, maintenance and upgrade cost

The licence is MIT, and package.json sets publishConfig access to public, so the package is published openly on npm as @tiberriver256/mcp-server-azure-devops. MIT is permissive: you can use, modify and redistribute it, including inside a company. The usual caveat applies and is not legal advice: the licence ships with the code, so read LICENSE in the repository rather than relying on a summary, and check whether your organisation's policy treats a community MCP server differently from a product-supported one.

On maintenance, the last push to the default branch was on 2026-09-12, three days before this was written, and the most recent release v0.1.47 landed on 2026-09-09. The repository is not archived. That is a current signal, not a guarantee, and the release history above shows the cadence is uneven rather than fixed.

Upgrade cost is low by design. The package is consumed through npx, so moving to a newer version is a matter of changing or removing the pinned version in your client configuration and restarting the client. There is no database, no migration step and no server-side state described in the README. The real upgrade risk is behavioural: a new tool or a changed tool schema can alter what your assistant does with the same prompt, so if you depend on a specific workflow, pin the version in the args array instead of tracking latest.

Editorial conclusion

Adopt this server if you run Azure DevOps Server on-premises, or if you need a feature the README says Microsoft's product-supported server does not yet have. Skip it for Azure DevOps Services cloud unless you have checked Discussion #237 and the ROADMAP first, because the README itself sends cloud users to microsoft/azure-devops-mcp. Before rolling it out, verify that your PAT carries the scopes listed in .env.example (Code Read & Write, Work Items Read & Write, Build Read & Execute, Project and Team Read, Graph Read, Release Read & Execute) and that your Azure DevOps Server version is one the official server cannot handle.

Frequently asked questions

What does an Azure MCP server do?

It bridges an AI assistant and Azure DevOps APIs over the Model Context Protocol, exposing projects, work items, repositories, pull requests, branches and pipelines as tools the model can call. This server communicates over stdio and authenticates with a PAT, Azure Identity or an Azure CLI login.

Can you host an MCP server on Azure?

Not this one as documented. The .env.example file states that the server uses stdio for communication, not HTTP, so it runs as a child process of your MCP client rather than as a hosted endpoint. There is no HTTP transport described in the README.

What is the ADO MCP server?

ADO is shorthand for Azure DevOps, so the term usually refers to an MCP server that exposes Azure DevOps resources to an AI assistant. This repository is one such server, a community implementation in TypeScript; Microsoft also maintains a product-supported one at microsoft/azure-devops-mcp.

Can Azure DevOps MCP server be used with GitHub Copilot?

The README documents integration with Claude Desktop and Cursor AI and gives configuration blocks for both. GitHub Copilot is listed among the repository topics, but the README does not show a Copilot configuration example, so treat that pairing as unverified from the documentation alone.

How do I install the Azure DevOps MCP server?

The README's published-package route is npx -y @tiberriver256/mcp-server-azure-devops, registered in your client's configuration file with AZURE_DEVOPS_ORG_URL and an authentication method. From source it is npm ci, copy .env.example to .env, npm run build, then npm start.

Official sources

  1. Issues
  2. License: MIT
  3. README
  4. Releases
  5. Tiberriver256/mcp-server-azure-devops on GitHub
Community notes

Community notes