azure-devops-mcp-remote
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@azure-devops-mcp-remotelist work items in project MyProject"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: Azure DevOps MCP Server
⚡ Quick Start — Funcionando em 2 minutos
Pré-requisitos
Node.js 20+ instalado
Uma organização Azure DevOps existente
Um Personal Access Token (PAT) do Azure DevOps
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 buildPasso 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 envvarSe 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-remotepelo 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)
No Power Platform, crie um Custom Connector apontando para
https://seu-servidor/mcpNo Copilot Studio, adicione o connector como Tool (tipo MCP)
Se usando OBO, configure o header
Authorizationcom 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 sseneste 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ção | Descrição |
| Listar meus work items atribuídos |
| Obter detalhes de um work item |
| Criar novo work item |
| Atualizar campos de um work item |
| Atualizar múltiplos work items de uma vez |
| Adicionar comentário |
| Adicionar work items filhos |
| Vincular work item a um PR |
| Criar/remover links entre work items |
| Navegar backlogs |
| Executar queries salvas |
| Histórico e comentários |
Repositórios Git (repositories)
Gerenciar repos, branches, PRs e code reviews.
Operação | Descrição |
| Listar repositórios de um projeto |
| Obter detalhes de um repo |
| Listar branches |
| Criar branch |
| Navegar arquivos/pastas do repo |
| Listar PRs |
| Obter detalhes de um PR |
| Criar PR |
| Atualizar PR (título, descrição, status) |
| Aprovar/rejeitar PR |
| Gerenciar revisores |
| Listar comentários de review |
| Criar comentário de review |
| Responder comentário |
| Buscar commits |
Pipelines (pipelines)
Gerenciar builds, pipelines e artefatos.
Operação | Descrição |
| Listar definições de build |
| Listar builds |
| Verificar status de um build |
| Obter logs de um build |
| Disparar execução de pipeline |
| Criar pipeline |
| Listar/obter execuções |
| Gerenciar artefatos |
| Atualizar estágio de build |
Projetos e Times (core)
Operação | Descrição |
| Listar todos os projetos da organização |
| Listar times de um projeto |
| Buscar identidades de usuários |
Iterações e Capacidade (work)
Operação | Descrição |
| Listar sprints/iterações |
| Criar e atribuir iterações |
| Gerenciar capacidade do time |
Wiki (wiki)
Operação | Descrição |
| Listar e obter wikis |
| Navegar e ler páginas |
| Criar ou editar páginas |
Test Plans (test-plans)
Operação | Descrição |
| Gerenciar planos de teste |
| Gerenciar suites |
| Gerenciar casos de teste |
| Ver resultados de testes |
Busca (search)
Operação | Descrição |
| Buscar código nos repositórios |
| Buscar em páginas wiki |
| Buscar work items |
Segurança Avançada (advanced-security)
Operação | Descrição |
| Listar alertas de segurança |
| Obter 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-itemsDomí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étodo | Flag | O que faz | Quando usar |
OAuth Interativo |
| Abre o browser para login Azure AD | Desenvolvimento local com navegador |
Azure CLI |
| Usa credenciais do | Codespaces, dev local já autenticado |
PAT Token |
| Lê token da variável | Qualquer ambiente — simples e rápido |
Managed Identity |
| Usa identidade gerenciada do Azure | Azure Container Apps, VMs (sem segredos) |
OBO (On-Behalf-Of) |
| Cada usuário faz login e age com sua identidade | Produção multi-usuário |
Detalhes de cada método
Acesse
https://dev.azure.com/sua-org/_usersSettings/tokensClique em New Token
Dê um nome, selecione os escopos (Read/Write) e copie o token
Defina a variável de ambiente:
export ADO_MCP_AUTH_TOKEN="seu-token-aqui"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.
Não precisa configurar nada. Ao iniciar o servidor, ele abre automaticamente o browser para login:
npx -y @azure-devops/mcp sua-orgO token é cacheado — nas próximas execuções, o login é silencioso.
az login
npx -y @azure-devops/mcp sua-org -a azcliDetectado automaticamente em GitHub Codespaces.
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 envA identidade precisa ser adicionada como usuário no Azure DevOps (veja a seção de Deploy).
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-aleatoriaFluxo do usuário:
Servidor inicia:
node dist/index.js sua-org --transport http --port 8080 -a oboUsuário acessa
http://localhost:8080/auth/loginno browserFaz login com Azure AD → recebe um JWT
Configura o JWT no cliente MCP (header
Authorization: Bearer <jwt>)Todas as ações no Azure DevOps são feitas com a identidade desse usuário
Endpoints de autenticação:
Endpoint | Método | Descrição |
| GET | Iniciar login OAuth2 |
| GET | Callback do OAuth2 (automático) |
| GET | Ver informações do usuário logado |
| GET | Status da autenticação |
| POST | Renovar token Azure AD |
| POST | Renovar token Azure DevOps |
| POST | Encerrar sessão |
Guia completo: Autenticação OBO
⚙️ Opções da CLI
mcp-server-azuredevops <organizacao> [opções]Flag | Alias | Descrição | Padrão |
| — | Nome da organização Azure DevOps (obrigatório) | — |
| — | Tipo de transporte: |
|
|
| Porta para HTTP/SSE |
|
|
| Tipo de autenticação (veja seção acima) |
|
|
| Azure Tenant ID (opcional, para | — |
|
| Domínios a habilitar (separados por vírgula) |
|
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/<org> │
└─────────────────────────────┘Transportes disponíveis:
Transporte | Flag | Uso |
stdio |
| Padrão. O cliente inicia o servidor como subprocesso local. |
HTTP (Streamable) |
| Servidor remoto acessível via HTTPS. Recomendado para produção. |
SSE |
| Para 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
Docker (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 $LOCATIONPasso 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:latestPasso 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 3Passo 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:
Clique em Add users
Adicione o Object ID (que é o Principal ID acima) como usuário
Atribua a licença Basic ou Stakeholder
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 eslintVariáveis de ambiente
Copie .env.example para .env e ajuste:
cp .env.example .envVariável | Obrigatória | Descrição |
| Para | Personal Access Token |
| Para | App Registration Client ID |
| Para | App Registration Secret |
| Para | Azure AD Tenant ID |
| Para | Callback URL (ex: |
| Para | Chave para assinar JWTs de sessão |
| Não | Nível de log: |
| Não | Porta do servidor (padrão: |
📚 Documentação Complementar
Documento | Descrição |
Guia de instalação detalhado para cada IDE | |
Casos de uso e prompts exemplo | |
Perguntas frequentes | |
Diagnóstico de problemas | |
Configuração do App Registration para OBO | |
Guia completo do fluxo On-Behalf-Of |
📝 Referências
📄 Licença
Este projeto é baseado no Azure DevOps MCP Server da Microsoft, licenciado sob MIT License.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fsaito-github/azure-devops-mcp-remote'
If you have feedback or need assistance with the MCP directory API, please join our Discord server