MCP For Azure DevOps Boards

Um servidor MCP que foca em fornecer ferramentas úteis para o Azure DevOps Boards

Documentação

MCP for Azure DevOps Boards

CI - PR - Build & Test CD - Tag - Build & Release

Um servidor Model Context Protocol (MCP) para interagir com Azure DevOps Boards e Work Items, escrito em Rust.

Recursos

  • Gerenciamento de Work Items: Criar, atualizar, obter e consultar work items.

  • Integração com Boards: Listar equipes, boards e buscar itens do board.

  • Suporte a WIQL: Executar consultas WIQL personalizadas.

  • Saída Simplificada: Saída JSON otimizada para consumo por LLMs (uso reduzido de tokens).

Instalação

Consulte a seção Configuração do MCP para saber como configurar seu cliente de IA (MCP) preferido.

macOS (Homebrew)

brew tap danielealbano/mcp-tools
brew install mcp-for-azure-devops-boards

O caminho para o binário será /opt/homebrew/bin/mcp-for-azure-devops-boards.

Windows (Scoop)

scoop bucket add mcp-tools https://github.com/danielealbano/scoop-mcp-tools
scoop install mcp-for-azure-devops-boards

O caminho para o binário será %USERPROFILE%\scoop\apps\mcp-for-azure-devops-boards\current\mcp-for-azure-devops-boards.exe.

Configuração

ConfiguraçãoDescriçãoFlag de CLIVariável de Ambiente
Modo de ServidorExecutar como servidor HTTP em vez de stdio--serverN/A
PortaPorta para o servidor HTTP (padrão: 3000)--portN/A

Nota: Se --server não for especificado, o software será executado no modo stdio.

Autenticação

Este servidor utiliza os mecanismos padrão de autenticação do Azure para consultar o Azure DevOps. Em cada requisição, ele adquire um token Bearer para a API REST do Azure DevOps (escopo 499b84ac-1321-427f-aa17-267ca6975798/.default) tentando as seguintes fontes de credenciais em ordem e usando a primeira que retornar um token:

  1. Ambiente (client secret) — usado apenas quando AZURE_TENANT_ID, AZURE_CLIENT_ID e AZURE_CLIENT_SECRET estão todos definidos. Se apenas alguns estiverem definidos, é ignorado com um aviso.
  2. Azure CLI — executa az account get-access-token para o escopo do Azure DevOps, usando sua sessão do az login.
  3. Azure Developer CLI — usa sua sessão do azd auth login.
  4. Identidade gerenciada — para implantações hospedadas no Azure. Fora do Azure, essa verificação é inacessível, portanto é limitada por um timeout de 2 segundos e depois ignorada, garantindo que a cadeia nunca trave.

Se todas as fontes falharem, o erro retornado lista a falha de cada fonte para que você possa ver exatamente o motivo (por exemplo, um erro de consentimento do Azure CLI junto com "azd not found on PATH"), em vez de apenas a última tentada.

Para desenvolvimento local, entrar com o Azure CLI (abaixo) é a opção mais simples — você deve ter executado az login com acesso à organização do Azure DevOps de destino.

Instalando o Azure CLI

Se você não tiver o Azure CLI instalado:

macOS (Homebrew):

brew install azure-cli

Windows (Scoop):

scoop install azure-cli

Windows (Chocolatey):

choco install azure-cli

Para outros métodos de instalação, consulte o guia oficial de instalação do Azure CLI.

Fazendo Login

Para autenticar, execute:

az login

Uso

Modo Stdio (Padrão)

Este é o modo padrão para clientes MCP (como Claude Desktop ou Cursor). Este modo é preferido por questões de segurança, pois garante que nenhuma credencial seja compartilhada pela rede.

path/to/mcp-for-azure-devops-boards

Modo Servidor HTTP

Você também pode executá-lo como um servidor HTTP (SSE). Observe que neste modo, o servidor escuta em 0.0.0.0 (todas as interfaces).

path/to/mcp-for-azure-devops-boards --server --port 3000

Configuração do MCP

Nota: Certifique-se de ter executado az login no seu terminal para que o processo possa capturar as credenciais.

Configuração rápida com --install

A maneira mais rápida de registrar o servidor MCP com seu cliente preferido:

mcp-for-azure-devops-boards --install <target>

Destinos válidos e onde cada um grava sua configuração:

DestinoArquivo de configuraçãoEscopo
claude-code~/.claude.jsonGlobal (home)
claude-desktopmacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Global (por usuário)
cursor~/.cursor/mcp.jsonGlobal (home)
vscode.vscode/mcp.jsonWorkspace (diretório atual)
codex~/.codex/config.tomlGlobal (home)
gemini-cli~/.gemini/settings.jsonGlobal (home)

O comando detecta automaticamente o caminho do binário, resolve o local correto do arquivo de configuração e grava a entrada no formato esperado. A configuração existente é preservada.

Configuração manual

Claude Code

Arquivo de configuração: ~/.claude.json

{
  "mcpServers": {
    "mcp-for-azure-devops-boards": {
      "command": "/opt/homebrew/bin/mcp-for-azure-devops-boards"
    }
  }
}

Windows (Scoop): Substitua o caminho do comando por %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Claude Desktop

Locais do arquivo de configuração:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-for-azure-devops-boards": {
      "command": "/opt/homebrew/bin/mcp-for-azure-devops-boards"
    }
  }
}

Windows (Scoop): Substitua o caminho do comando por %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Cursor

Arquivo de configuração: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-for-azure-devops-boards": {
      "command": "/opt/homebrew/bin/mcp-for-azure-devops-boards"
    }
  }
}

Windows (Scoop): Substitua o caminho do comando por %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

VS Code

Arquivo de configuração: .vscode/mcp.json (nível do workspace)

{
  "servers": {
    "mcp-for-azure-devops-boards": {
      "type": "stdio",
      "command": "/opt/homebrew/bin/mcp-for-azure-devops-boards"
    }
  }
}

Windows (Scoop): Substitua o caminho do comando por %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

gemini-cli

Arquivo de configuração: ~/.gemini/settings.json

{
  "mcpServers": {
    "mcp-for-azure-devops-boards": {
      "command": "/opt/homebrew/bin/mcp-for-azure-devops-boards"
    }
  }
}

Windows (Scoop): Substitua o caminho do comando por %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Codex CLI

Arquivo de configuração: ~/.codex/config.toml

[mcp_servers.mcp-for-azure-devops-boards]
command = "/opt/homebrew/bin/mcp-for-azure-devops-boards"

Windows (Scoop): Substitua o caminho do comando por %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Ferramentas Disponíveis

Este software está atualmente em desenvolvimento. As ferramentas e seus parâmetros estão sujeitos a alterações.

O servidor expõe as seguintes ferramentas para clientes MCP.

A estrutura geral dos nomes das ferramentas é azdo_VERB_WHAT (por exemplo, azdo_list_teams, azdo_get_work_item).

Descoberta

  • azdo_list_organizations: Lista todas as organizações do Azure DevOps às quais o usuário autenticado tem acesso.
    • Obrigatório: Nenhum (usa as credenciais do usuário autenticado)
  • azdo_list_projects: Lista todos os projetos em uma organização do Azure DevOps.
    • Obrigatório: organization

Work Items

Nota: Todas as ferramentas de work item exigem os parâmetros organization e project.

  • azdo_create_work_item: Cria um novo work item.
    • Obrigatório: organization, project, work_item_type, title
    • Opcional: description, assigned_to, area_path, iteration_path, state, board_column, board_row, priority, severity, story_points, effort, remaining_work, tags, activity, parent_id, start_date, target_date, acceptance_criteria, repro_steps, fields (string JSON para campos personalizados).
  • azdo_update_work_item: Atualiza um work item existente.
    • Obrigatório: organization, project, id
    • Opcional: Todos os campos disponíveis na criação.
  • azdo_get_work_item: Obtém detalhes de um work item específico.
    • Obrigatório: organization, project, id
    • Opcional: include_latest_n_comments (número de comentários recentes a incluir, -1 para todos)
  • azdo_get_work_items: Obtém vários work items pelos seus IDs.
    • Obrigatório: organization, project, ids (array de IDs de work items)
    • Opcional: include_latest_n_comments (número de comentários recentes a incluir, -1 para todos)
  • azdo_query_work_items: Consulta work items usando filtros estruturados.
    • Obrigatório: organization, project
    • Filtros Opcionais: area_path, iteration_path, created_date_from/to, modified_date_from/to.
    • Listas de Inclusão: include_board_column, include_board_row, include_work_item_type, include_state, include_assigned_to, include_tags.
    • Listas de Exclusão: exclude_board_column, exclude_board_row, exclude_work_item_type, exclude_state, exclude_assigned_to, exclude_tags.
    • Opcional: include_latest_n_comments (número de comentários recentes a incluir, -1 para todos)
  • azdo_query_work_items_by_wiql: Executa uma consulta WIQL (Work Item Query Language) bruta.
    • Obrigatório: organization, project, query
    • Opcional: include_latest_n_comments (número de comentários recentes a incluir, -1 para todos)
  • azdo_add_comment: Adiciona um comentário a um work item.
    • Obrigatório: organization, project, work_item_id, text
  • azdo_link_work_items: Cria um relacionamento entre dois work items.
    • Obrigatório: organization, project, source_id, target_id, link_type (Parent, Child, Related, Duplicate, Dependency).

Boards & Equipes

Nota: Todas as ferramentas de board e equipe exigem os parâmetros organization e project.

  • azdo_list_teams: Lista todas as equipes no projeto.
    • Obrigatório: organization, project
  • azdo_get_team: Obtém detalhes de uma equipe específica.
    • Obrigatório: organization, project, team_id
  • azdo_list_team_boards: Lista boards de uma equipe específica.
    • Obrigatório: organization, project, team_id
  • azdo_get_team_board: Obtém detalhes de um board específico.
    • Obrigatório: organization, project, team_id, board_id
  • azdo_list_work_item_types: Lista todos os tipos de work item disponíveis no projeto.
    • Obrigatório: organization, project
  • azdo_list_tags: Lista todas as tags em uso no projeto.
    • Obrigatório: organization, project
  • azdo_get_team_current_iteration: Obtém a iteração/sprint ativa atual de uma equipe.
    • Obrigatório: organization, project, team_id
  • azdo_get_team_iterations: Obtém todas as iterações/sprints de uma equipe.
    • Obrigatório: organization, project, team_id

Contribuindo

Aceitamos contribuições!

  1. Faça um fork do repositório.
  2. Crie uma nova branch para sua funcionalidade ou correção de bug (git checkout -b feature/amazing-feature).
  3. Faça commit das suas alterações.
  4. Envie (push) para sua branch.
  5. Abra um Pull Request.

Compilando a partir do Código Fonte

Pré-requisitos

  • Rust (versão estável mais recente)
  • Azure CLI (necessário para autenticação local)

Passos

  1. Clone o repositório:

    git clone https://github.com/danielealbano/mcp-for-azure-devops-boards.git
    cd mcp-for-azure-devops-boards
    
  2. Compile o projeto:

    cargo build --release
    

Ferramentas de Desenvolvimento

  • Executar testes: cargo test
  • Verificar estilo de código: cargo fmt --check
  • Linting: cargo clippy

Aviso Legal

Este projeto não é afiliado, endossado ou patrocinado pela Microsoft. Azure, Azure DevOps e marcas relacionadas são propriedade de seus respectivos proprietários. Este software usa as APIs padrão dos serviços da Microsoft para interagir com Azure e Microsoft Graph, entre outros serviços.

Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE.md para obter detalhes.