Token导航 LogoToken导航TokenDH.com
Azure Devops MCP Remote logo
AI代理stdio官方级别未说明来源级核验

Azure Devops MCP Remote

MCP Server

@azure-devops/mcp

将AI助手(如GitHub Copilot、Claude、Cursor)连接到Azure DevOps,实现工作项、存储库、流水线、Wiki等的自然语言操作。

工具数

68

提示词数

0

GitHub Stars

0

资源数

0
Azure DevOps开发工具TypeScriptClaudeJavaScriptClaude DesktopClaudeCursorVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

fsaito-github

提供方

fsaito-github

最后核验

2026/5/17 20:19

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx -y @azure-devops/mcp sua-org -a envvar --domains repositories,work-items

详细介绍

Azure DevOps MCP Server

Conecte assistentes de IA (GitHub Copilot, Claude, Cursor) ao seu Azure DevOps — work items, repositórios, pipelines, wikis e mais.

Este servidor implementa o protocolo MCP (Model Context Protocol) para Azure DevOps. Isso permite que qualquer assistente de IA compatível com MCP leia e modifique seus projetos no Azure DevOps usando linguagem natural.

Exemplo: Você pede ao Copilot _"crie um work item de bug no projeto X com prioridade alta"_ e ele usa este servidor para executar a ação diretamente no Azure DevOps.

Este projeto é um fork do Azure DevOps MCP Server da Microsoft, com suporte adicional a transporte HTTP/SSE remoto, autenticação OBO multi-usuário e deploy em containers.


📖 Índice


⚡ Quick Start — Funcionando em 2 minutos

Pré-requisitos

Passo 1 — Definir o token

Crie um PAT no Azure DevOps com as permissões necessárias (Read/Write nos escopos que você quer usar) e exporte como variável de ambiente:

# Linux/Mac
export ADO_MCP_AUTH_TOKEN="seu-pat-token-aqui"

# Windows (PowerShell)
$env:ADO_MCP_AUTH_TOKEN = "seu-pat-token-aqui"

Passo 2 — Clonar, instalar e buildar

git clone https://github.com/fsaito-github/azure-devops-mcp-remote.git
cd azure-devops-mcp-remote
npm install
npm run build

Passo 3 — Testar o servidor

Substitua sua-organizacao pelo nome da sua org no Azure DevOps (a parte que aparece em https://dev.azure.com/sua-organizacao):

node dist/index.js sua-organizacao --authentication envvar

Se não houver erros, o servidor está pronto. Encerre com Ctrl+C.

Passo 4 — Configurar no VS Code

Crie o arquivo .vscode/mcp.json no seu projeto (não no repo do MCP, mas no projeto onde você usa o Copilot):

{
  "servers": {
    "azure-devops": {
      "type": "stdio",
      "command": "node",
      "args": [
        "C:/caminho/completo/para/azure-devops-mcp-remote/dist/index.js",
        "sua-organizacao",
        "--authentication",
        "envvar"
      ]
    }
  }
}
⚠️ Importante: Substitua C:/caminho/completo/para/azure-devops-mcp-remote pelo caminho real onde você clonou o repositório. No Windows, use / ou \\\\ como separador.

Pronto! Abra o Copilot Chat no VS Code e peça algo como _"liste os work items do projeto MyProject"_.

💡 Para outros clientes (Claude Desktop, Cursor, etc.), veja a seção Configuração nos Clientes MCP.

🔌 Configuração nos Clientes MCP

VS Code / GitHub Copilot (stdio — local)

Crie .vscode/mcp.json na raiz do seu projeto:

{
  "servers": {
    "azure-devops": {
      "type": "stdio",
      "command": "node",
      "args": [
        "C:/caminho/para/azure-devops-mcp-remote/dist/index.js",
        "sua-organizacao",
        "--authentication",
        "envvar"
      ]
    }
  }
}

VS Code / GitHub Copilot (HTTP — servidor remoto)

Se o servidor está rodando remotamente (ex: Azure Container Apps):

{
  "servers": {
    "azure-devops": {
      "type": "http",
      "url": "https://seu-servidor.azurecontainerapps.io/mcp"
    }
  }
}

Se usando autenticação OBO, adicione o header com o JWT obtido via /auth/login:

{
  "servers": {
    "azure-devops": {
      "type": "http",
      "url": "https://seu-servidor.azurecontainerapps.io/mcp",
      "headers": {
        "Authorization": "Bearer seu-jwt-token-aqui"
      }
    }
  }
}

Claude Desktop

Em claude_desktop_config.json:

{
  "mcpServers": {
    "azure-devops": {
      "command": "node",
      "args": [
        "C:/caminho/para/azure-devops-mcp-remote/dist/index.js",
        "sua-organizacao",
        "--authentication",
        "envvar"
      ]
    }
  }
}

Cursor

Crie .cursor/mcp.json na raiz do projeto:

{
  "mcpServers": {
    "azure-devops": {
      "command": "node",
      "args": [
        "C:/caminho/para/azure-devops-mcp-remote/dist/index.js",
        "sua-organizacao",
        "--authentication",
        "envvar"
      ]
    }
  }
}

Visual Studio 2022

Crie .mcp.json na raiz da solução:

{
  "servers": {
    "azure-devops": {
      "type": "stdio",
      "command": "node",
      "args": [
        "C:/caminho/para/azure-devops-mcp-remote/dist/index.js",
        "sua-organizacao",
        "--authentication",
        "envvar"
      ]
    }
  }
}

Copilot Studio (servidor remoto)

  1. No Power Platform, crie um Custom Connector apontando para https://seu-servidor/mcp
  2. No Copilot Studio, adicione o connector como Tool (tipo MCP)
  3. Se usando OBO, configure o header Authorization com o JWT do usuário

Transporte SSE (clientes mais antigos)

Se o seu cliente MCP só suporta SSE (e não Streamable HTTP):

{
  "servers": {
    "azure-devops": {
      "type": "sse",
      "url": "https://seu-servidor/sse"
    }
  }
}
O servidor precisa estar rodando com --transport sse neste caso.

🛠️ O que este servidor pode fazer

O servidor expõe 80+ operações organizadas em 9 domínios. Você pode habilitar apenas os domínios que precisa com a flag --domains.

Work Items (work-items)

Criar, ler, atualizar, comentar e vincular work items (bugs, tasks, user stories, etc.).

OperaçãoDescrição
wit_my_work_itemsListar meus work items atribuídos
wit_get_work_itemObter detalhes de um work item
wit_create_work_itemCriar novo work item
wit_update_work_itemAtualizar campos de um work item
wit_update_work_items_batchAtualizar múltiplos work items de uma vez
wit_add_work_item_commentAdicionar comentário
wit_add_child_work_itemsAdicionar work items filhos
wit_link_work_item_to_pull_requestVincular work item a um PR
wit_work_items_link / wit_work_item_unlinkCriar/remover links entre work items
wit_list_backlogs / wit_list_backlog_work_itemsNavegar backlogs
wit_get_query / wit_get_query_results_by_idExecutar queries salvas
wit_list_work_item_comments / wit_list_work_item_revisionsHistórico e comentários

Repositórios Git (repositories)

Gerenciar repos, branches, PRs e code reviews.

OperaçãoDescrição
repo_list_repos_by_projectListar repositórios de um projeto
repo_get_repo_by_name_or_idObter detalhes de um repo
repo_list_branches_by_repoListar branches
repo_create_branchCriar branch
repo_list_directoryNavegar arquivos/pastas do repo
repo_list_pull_requests_by_repo_or_projectListar PRs
repo_get_pull_request_by_idObter detalhes de um PR
repo_create_pull_requestCriar PR
repo_update_pull_requestAtualizar PR (título, descrição, status)
repo_vote_pull_requestAprovar/rejeitar PR
repo_update_pull_request_reviewersGerenciar revisores
repo_list_pull_request_threadsListar comentários de review
repo_create_pull_request_threadCriar comentário de review
repo_reply_to_commentResponder comentário
repo_search_commitsBuscar commits

Pipelines (pipelines)

Gerenciar builds, pipelines e artefatos.

OperaçãoDescrição
pipelines_get_build_definitionsListar definições de build
pipelines_get_buildsListar builds
pipelines_get_build_statusVerificar status de um build
pipelines_get_build_logObter logs de um build
pipelines_run_pipelineDisparar execução de pipeline
pipelines_create_pipelineCriar pipeline
pipelines_list_runs / pipelines_get_runListar/obter execuções
pipelines_list_artifacts / pipelines_download_artifactGerenciar artefatos
pipelines_update_build_stageAtualizar estágio de build

Projetos e Times (core)

OperaçãoDescrição
core_list_projectsListar todos os projetos da organização
core_list_project_teamsListar times de um projeto
core_get_identity_idsBuscar identidades de usuários

Iterações e Capacidade (work)

OperaçãoDescrição
work_list_team_iterations / work_list_iterationsListar sprints/iterações
work_create_iterations / work_assign_iterationsCriar e atribuir iterações
work_get_team_capacity / work_update_team_capacityGerenciar capacidade do time

Wiki (wiki)

OperaçãoDescrição
wiki_list_wikis / wiki_get_wikiListar e obter wikis
wiki_list_pages / wiki_get_page_contentNavegar e ler páginas
wiki_create_or_update_pageCriar ou editar páginas

Test Plans (test-plans)

OperaçãoDescrição
testplan_list_test_plans / testplan_create_test_planGerenciar planos de teste
testplan_list_test_suites / testplan_create_test_suiteGerenciar suites
testplan_list_test_cases / testplan_create_test_caseGerenciar casos de teste
testplan_show_test_results_from_build_idVer resultados de testes

Busca (search)

OperaçãoDescrição
search_codeBuscar código nos repositórios
search_wikiBuscar em páginas wiki
search_workitemBuscar work items

Segurança Avançada (advanced-security)

OperaçãoDescrição
advsec_get_alertsListar alertas de segurança
advsec_get_alert_detailsObter detalhes de um alerta

Filtrando domínios

Se você só precisa de work items e repositórios, por exemplo:

npx -y @azure-devops/mcp sua-org -a envvar --domains repositories,work-items

Domínios disponíveis: core, repositories, pipelines, work-items, work, wiki, test-plans, search, advanced-security


🔐 Autenticação — Qual método usar?

Você está rodando local no seu computador?
├── SIM → Tem navegador disponível?
│   ├── SIM → Use "interactive" (padrão, abre o browser para login)
│   └── NÃO → Use "envvar" (PAT token via variável de ambiente)
│
└── NÃO → Está rodando em servidor/container remoto?
    ├── É Azure Container Apps / Azure VM?
    │   ├── Um único serviço (CI/CD, bot) → Use "env" (Managed Identity)
    │   └── Múltiplos usuários reais → Use "obo" (cada um com sua identidade)
    │
    ├── É GitHub Codespaces? → Use "azcli" (detectado automaticamente)
    │
    └── Outro ambiente? → Use "envvar" (PAT token)

Resumo dos métodos

MétodoFlagO que fazQuando usar
OAuth Interativo-a interactiveAbre o browser para login Azure ADDesenvolvimento local com navegador
Azure CLI-a azcliUsa credenciais do az loginCodespaces, dev local já autenticado
PAT Token-a envvarLê token da variável ADO_MCP_AUTH_TOKENQualquer ambiente — simples e rápido
Managed Identity-a envUsa identidade gerenciada do AzureAzure Container Apps, VMs (sem segredos)
OBO (On-Behalf-Of)-a oboCada usuário faz login e age com sua identidadeProdução multi-usuário

Detalhes de cada método

PAT Token (-a envvar) — O mais simples para começar

  1. Acesse https://dev.azure.com/sua-org/_usersSettings/tokens
  2. Clique em New Token
  3. Dê um nome, selecione os escopos (Read/Write) e copie o token
  4. Defina a variável de ambiente:
export ADO_MCP_AUTH_TOKEN="seu-token-aqui"
  1. Inicie o servidor:
npx -y @azure-devops/mcp sua-org -a envvar
⚠️ Todos os acessos ao Azure DevOps são feitos com a identidade do dono do PAT. Não há distinção por usuário.

OAuth Interativo (-a interactive) — Padrão para desktop

Não precisa configurar nada. Ao iniciar o servidor, ele abre automaticamente o browser para login:

npx -y @azure-devops/mcp sua-org

O token é cacheado — nas próximas execuções, o login é silencioso.

Azure CLI (-a azcli) — Para quem já usa az login

az login
npx -y @azure-devops/mcp sua-org -a azcli

Detectado automaticamente em GitHub Codespaces.

Managed Identity (-a env) — Para Azure sem segredos

Funciona automaticamente em Azure Container Apps, VMs e outros serviços com System-Assigned ou User-Assigned Managed Identity.

node dist/index.js sua-org --transport http --port 3000 -a env

A identidade precisa ser adicionada como usuário no Azure DevOps (veja a seção de Deploy).

OBO — On-Behalf-Of (-a obo) — Para produção multi-usuário

Neste modo, cada usuário faz login com sua conta Azure AD e todas as ações no Azure DevOps são rastreadas com a identidade real do usuário.

Requer um App Registration no Azure AD. Veja o guia completo: Azure AD Setup

Variáveis de ambiente necessárias:

OAUTH_CLIENT_ID=id-do-app-registration
OAUTH_CLIENT_SECRET=secret-do-app
OAUTH_TENANT_ID=id-do-tenant-azure-ad
OAUTH_REDIRECT_URL=http://localhost:8080/auth/callback
JWT_SECRET=uma-chave-secreta-aleatoria

Fluxo do usuário:

  1. Servidor inicia: node dist/index.js sua-org --transport http --port 8080 -a obo
  2. Usuário acessa http://localhost:8080/auth/login no browser
  3. Faz login com Azure AD → recebe um JWT
  4. Configura o JWT no cliente MCP (header Authorization: Bearer )
  5. Todas as ações no Azure DevOps são feitas com a identidade desse usuário

Endpoints de autenticação:

EndpointMétodoDescrição
/auth/loginGETIniciar login OAuth2
/auth/callbackGETCallback do OAuth2 (automático)
/auth/meGETVer informações do usuário logado
/auth/statusGETStatus da autenticação
/auth/refreshPOSTRenovar token Azure AD
/auth/refresh-adoPOSTRenovar token Azure DevOps
/auth/logoutPOSTEncerrar sessão

Guia completo: Autenticação OBO


⚙️ Opções da CLI

mcp-server-azuredevops  [opções]
FlagAliasDescriçãoPadrão
``Nome da organização Azure DevOps (obrigatório)
--transportTipo de transporte: stdio, http, ssestdio
--port-pPorta para HTTP/SSE3000
--authentication-aTipo de autenticação (veja seção acima)interactive
--tenant-tAzure Tenant ID (opcional, para interactive e azcli)
--domains-dDomínios a habilitar (separados por vírgula)all

Exemplos:

# Desenvolvimento local com PAT (mais simples)
npx -y @azure-devops/mcp contoso -a envvar

# Servidor HTTP remoto com Managed Identity
node dist/index.js contoso --transport http --port 3000 -a env

# Apenas domínios de repos e pipelines
npx -y @azure-devops/mcp contoso -a envvar --domains repositories,pipelines

# Multi-usuário com OBO
node dist/index.js contoso --transport http --port 8080 -a obo

🏗️ Arquitetura

┌─────────────────┐                     ┌──────────────────────────────┐
│  Cliente MCP     │       HTTPS         │  Azure Container Apps        │
│                  │ ◄─────────────────► │                              │
│  • VS Code       │   (ou stdio local)  │  ┌──────────────────────┐   │
│  • Copilot       │                     │  │  MCP Server          │   │
│  • Claude        │                     │  │  --transport http     │   │
│  • Cursor        │                     │  │  --port 3000          │   │
│                  │                     │  └──────────┬───────────┘   │
└─────────────────┘                     │             │               │
                                         │      Token (PAT,           │
                                         │      Managed Identity      │
                                         │      ou OBO)               │
                                         └─────────────┼───────────────┘
                                                       │
                                         ┌─────────────▼───────────────┐
                                         │  Azure DevOps REST API      │
                                         │  dev.azure.com/        │
                                         └─────────────────────────────┘

Transportes disponíveis:

TransporteFlagUso
stdio--transport stdioPadrão. O cliente inicia o servidor como subprocesso local.
HTTP (Streamable)--transport httpServidor remoto acessível via HTTPS. Recomendado para produção.
SSE--transport ssePara clientes MCP mais antigos que não suportam HTTP Streamable.

🚀 Deploy em Produção (Azure Container Apps)

Pré-requisitos

  • Azure CLI instalado e autenticado (az login)
  • Assinatura Azure ativa
  • (opcional, para build local)

Passo 1 — Definir variáveis

RESOURCE_GROUP="rg-mcp-server"
LOCATION="eastus2"
ACR_NAME="acrmcpserver"           # deve ser único globalmente
CONTAINER_APP_ENV="mcp-env"
CONTAINER_APP_NAME="ado-mcp-server"
ADO_ORG="sua-organizacao"         # nome da sua org no Azure DevOps
IMAGE_NAME="ado-mcp-server"

Passo 2 — Criar os recursos Azure

# Resource Group
az group create --name $RESOURCE_GROUP --location $LOCATION

# Azure Container Registry
az acr create --name $ACR_NAME --resource-group $RESOURCE_GROUP --sku Basic --admin-enabled true

# Container Apps Environment
az containerapp env create \
  --name $CONTAINER_APP_ENV \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

Passo 3 — Build e push da imagem Docker

# Build e push direto no ACR (não precisa de Docker local)
az acr build --registry $ACR_NAME --image $IMAGE_NAME:latest .

Ou, se preferir build local:

docker build -t $ACR_NAME.azurecr.io/$IMAGE_NAME:latest .
az acr login --name $ACR_NAME
docker push $ACR_NAME.azurecr.io/$IMAGE_NAME:latest

Passo 4 — Criar o Container App com Managed Identity

az containerapp create \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINER_APP_ENV \
  --image "$ACR_NAME.azurecr.io/$IMAGE_NAME:latest" \
  --registry-server "$ACR_NAME.azurecr.io" \
  --registry-identity system \
  --target-port 3000 \
  --ingress external \
  --system-assigned \
  --command "node" "dist/index.js" "$ADO_ORG" "--transport" "http" "--port" "3000" "-a" "env" \
  --min-replicas 1 \
  --max-replicas 3

Passo 5 — Configurar permissões da Managed Identity

# Obter o Principal ID da Managed Identity
PRINCIPAL_ID=$(az containerapp show \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --query "identity.principalId" -o tsv)

echo "Principal ID: $PRINCIPAL_ID"

Agora, adicione essa identity como usuário no Azure DevOps:

  1. Acesse https://dev.azure.com/{sua-org}/_settings/users
  2. Clique em Add users
  3. Adicione o Object ID (que é o Principal ID acima) como usuário
  4. Atribua a licença Basic ou Stakeholder
  5. Dê permissões nos projetos necessários (Contributor, Reader, etc.)
💡 Dica: Para automatizar via API, use o Azure DevOps REST API - User Entitlements.

Passo 6 — Obter a URL e testar

FQDN=$(az containerapp show \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --query "properties.configuration.ingress.fqdn" -o tsv)

echo "MCP Server URL: https://$FQDN/mcp"

Teste com uma requisição MCP de inicialização:

curl -X POST https://$FQDN/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

Se receber uma resposta JSON com "result", o servidor está funcionando! 🎉

Usando PAT ao invés de Managed Identity

Se preferir usar PAT Token no container:

az containerapp update \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --set-env-vars "ADO_MCP_AUTH_TOKEN=secretref:ado-pat" \
  --command "node" "dist/index.js" "$ADO_ORG" "--transport" "http" "--port" "3000" "-a" "envvar"

Limpeza de recursos

az group delete --name $RESOURCE_GROUP --yes --no-wait

🧪 Desenvolvimento Local

# Clonar e instalar
git clone https://github.com/microsoft/azure-devops-mcp.git
cd azure-devops-mcp
npm install

# Build
npm run build

# Rodar com PAT
export ADO_MCP_AUTH_TOKEN="seu-pat"
node dist/index.js sua-org -a envvar

# Rodar com HTTP transport
node dist/index.js sua-org --transport http --port 3000 -a envvar

# Rodar com Docker
docker build -t ado-mcp-server .
docker run -p 3000:3000 -e ADO_MCP_AUTH_TOKEN=seu-pat \
  ado-mcp-server sua-org --transport http --port 3000 -a envvar

# Rodar testes
npm test

# Rodar linter
npm run eslint

Variáveis de ambiente

Copie .env.example para .env e ajuste:

cp .env.example .env
VariávelObrigatóriaDescrição
ADO_MCP_AUTH_TOKENPara -a envvarPersonal Access Token
OAUTH_CLIENT_IDPara -a oboApp Registration Client ID
OAUTH_CLIENT_SECRETPara -a oboApp Registration Secret
OAUTH_TENANT_IDPara -a oboAzure AD Tenant ID
OAUTH_REDIRECT_URLPara -a oboCallback URL (ex: http://localhost:8080/auth/callback)
JWT_SECRETPara -a oboChave para assinar JWTs de sessão
LOG_LEVELNãoNível de log: debug, info, warn, error
PORTNãoPorta do servidor (padrão: 3000)

📚 Documentação Complementar

DocumentoDescrição
Getting StartedGuia de instalação detalhado para cada IDE
ExemplosCasos de uso e prompts exemplo
FAQPerguntas frequentes
TroubleshootingDiagnóstico de problemas
Azure AD SetupConfiguração do App Registration para OBO
Autenticação OBOGuia completo do fluxo On-Behalf-Of

📝 Referências


📄 Licença

目录标签

目录标签

Azure DevOps开发工具TypeScriptClaudeJavaScriptAzureDevOps本地部署AI助手MCP协议

支持客户端

Claude DesktopClaudeCursorVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@azure-devops/mcp

工具数量(toolCount,工具数)

68

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP