MCP For Azure DevOps Boards

Un servidor MCP que se enfoca en proporcionar herramientas útiles para Azure DevOps Boards

Documentación

MCP para Azure DevOps Boards

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

Un servidor de Protocolo de Contexto de Modelo (MCP) para interactuar con Azure DevOps Boards y Work Items, escrito en Rust.

Características

  • Gestión de Work Items: Crear, actualizar, obtener y consultar work items.

  • Integración con Boards: Listar equipos, boards y obtener elementos de los boards.

  • Soporte WIQL: Ejecutar consultas WIQL personalizadas.

  • Salida Simplificada: Salida JSON optimizada para consumo por LLM (uso reducido de tokens).

Instalación

Consulta la sección Configuración de MCP para saber cómo configurar tu cliente de IA (MCP) preferido.

macOS (Homebrew)

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

La ruta al binario 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

La ruta al binario será %USERPROFILE%\scoop\apps\mcp-for-azure-devops-boards\current\mcp-for-azure-devops-boards.exe.

Configuración

ConfiguraciónDescripciónIndicador CLIVariable de Entorno
Modo ServidorEjecutar como servidor HTTP en lugar de stdio--serverN/A
PuertoPuerto para el servidor HTTP (predeterminado: 3000)--portN/A

Nota: Si --server no se especifica, el software se ejecutará en modo stdio.

Autenticación

Este servidor utiliza los mecanismos estándar de autenticación de Azure para consultar Azure DevOps. En cada solicitud adquiere un token Bearer para la API REST de Azure DevOps (ámbito 499b84ac-1321-427f-aa17-267ca6975798/.default) probando las siguientes fuentes de credenciales en orden y usando la primera que devuelva un token:

  1. Entorno (secreto de cliente) — se usa solo cuando AZURE_TENANT_ID, AZURE_CLIENT_ID y AZURE_CLIENT_SECRET están todas configuradas. Si solo algunas están configuradas, se omite con una advertencia.
  2. Azure CLI — ejecuta az account get-access-token para el ámbito de Azure DevOps, usando tu sesión de az login.
  3. Azure Developer CLI — usa tu sesión de azd auth login.
  4. Identidad administrada — para implementaciones alojadas en Azure. Fuera de Azure esta verificación es inalcanzable, por lo que está limitada por un tiempo de espera de 2 segundos y luego se omite, asegurando que la cadena nunca se cuelgue.

Si todas las fuentes fallan, el error devuelto enumera el fallo de cada fuente para que puedas ver exactamente por qué (por ejemplo, un error de consentimiento de Azure CLI junto con "azd no encontrado en PATH"), en lugar de solo el último intentado.

Para el desarrollo local, iniciar sesión con Azure CLI (abajo) es la opción más simple: debes haber ejecutado az login con acceso a la organización de Azure DevOps de destino.

Instalación de Azure CLI

Si no tienes Azure CLI instalado:

macOS (Homebrew):

brew install azure-cli

Windows (Scoop):

scoop install azure-cli

Windows (Chocolatey):

choco install azure-cli

Para otros métodos de instalación, consulta la guía oficial de instalación de Azure CLI.

Iniciar Sesión

Para autenticarte, ejecuta:

az login

Uso

Modo Stdio (Predeterminado)

Este es el modo estándar para clientes MCP (como Claude Desktop o Cursor). Este modo es preferible por seguridad, ya que garantiza que no se compartan credenciales a través de la red.

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

Modo Servidor HTTP

También puedes ejecutarlo como servidor HTTP (SSE). Ten en cuenta que en este modo, el servidor escucha en 0.0.0.0 (todas las interfaces).

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

Configuración de MCP

Nota: Asegúrate de haber ejecutado az login en tu terminal para que el proceso pueda recoger las credenciales.

Configuración rápida con --install

La forma más rápida de registrar el servidor MCP con tu cliente preferido:

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

Destinos válidos y dónde escribe cada uno su configuración:

DestinoArchivo de configuraciónÁmbito
claude-code~/.claude.jsonGlobal (inicio)
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 usuario)
cursor~/.cursor/mcp.jsonGlobal (inicio)
vscode.vscode/mcp.jsonEspacio de trabajo (directorio actual)
codex~/.codex/config.tomlGlobal (inicio)
gemini-cli~/.gemini/settings.jsonGlobal (inicio)

El comando detecta automáticamente la ruta del binario, resuelve la ubicación correcta del archivo de configuración y escribe la entrada en el formato esperado. La configuración existente se conserva.

Configuración manual

Claude Code

Archivo de configuración: ~/.claude.json

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

Windows (Scoop): Reemplaza la ruta del comando con %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Claude Desktop

Ubicaciones del archivo de configuración:

  • 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): Reemplaza la ruta del comando con %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Cursor

Archivo de configuración: ~/.cursor/mcp.json

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

Windows (Scoop): Reemplaza la ruta del comando con %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

VS Code

Archivo de configuración: .vscode/mcp.json (nivel de espacio de trabajo)

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

Windows (Scoop): Reemplaza la ruta del comando con %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

gemini-cli

Archivo de configuración: ~/.gemini/settings.json

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

Windows (Scoop): Reemplaza la ruta del comando con %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Codex CLI

Archivo de configuración: ~/.codex/config.toml

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

Windows (Scoop): Reemplaza la ruta del comando con %USERPROFILE%\\scoop\\apps\\mcp-for-azure-devops-boards\\current\\mcp-for-azure-devops-boards.exe.

Herramientas Disponibles

Este software está actualmente en desarrollo. Las herramientas y sus parámetros están sujetos a cambios.

El servidor expone las siguientes herramientas para clientes MCP.

La estructura general de los nombres de las herramientas es azdo_VERB_WHAT (por ejemplo, azdo_list_teams, azdo_get_work_item).

Descubrimiento

  • azdo_list_organizations: Lista todas las organizaciones de Azure DevOps a las que el usuario autenticado tiene acceso.
    • Requerido: Ninguno (usa las credenciales del usuario autenticado)
  • azdo_list_projects: Lista todos los proyectos en una organización de Azure DevOps.
    • Requerido: organization

Work Items

Nota: Todas las herramientas de work items requieren los parámetros organization y project.

  • azdo_create_work_item: Crea un nuevo work item.
    • Requerido: 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 (cadena JSON para campos personalizados).
  • azdo_update_work_item: Actualiza un work item existente.
    • Requerido: organization, project, id
    • Opcional: Todos los campos disponibles en la creación.
  • azdo_get_work_item: Obtiene los detalles de un work item específico.
    • Requerido: organization, project, id
    • Opcional: include_latest_n_comments (número de comentarios recientes a incluir, -1 para todos)
  • azdo_get_work_items: Obtiene múltiples work items por sus IDs.
    • Requerido: organization, project, ids (matriz de IDs de work items)
    • Opcional: include_latest_n_comments (número de comentarios recientes a incluir, -1 para todos)
  • azdo_query_work_items: Consulta work items usando filtros estructurados.
    • Requerido: organization, project
    • Filtros Opcionales: area_path, iteration_path, created_date_from/to, modified_date_from/to.
    • Listas de Inclusión: include_board_column, include_board_row, include_work_item_type, include_state, include_assigned_to, include_tags.
    • Listas de Exclusión: 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 comentarios recientes a incluir, -1 para todos)
  • azdo_query_work_items_by_wiql: Ejecuta una consulta WIQL (Lenguaje de Consulta de Work Items) sin procesar.
    • Requerido: organization, project, query
    • Opcional: include_latest_n_comments (número de comentarios recientes a incluir, -1 para todos)
  • azdo_add_comment: Agrega un comentario a un work item.
    • Requerido: organization, project, work_item_id, text
  • azdo_link_work_items: Crea una relación entre dos work items.
    • Requerido: organization, project, source_id, target_id, link_type (Padre, Hijo, Relacionado, Duplicado, Dependencia).

Boards y Equipos

Nota: Todas las herramientas de boards y equipos requieren los parámetros organization y project.

  • azdo_list_teams: Lista todos los equipos en el proyecto.
    • Requerido: organization, project
  • azdo_get_team: Obtiene los detalles de un equipo específico.
    • Requerido: organization, project, team_id
  • azdo_list_team_boards: Lista los boards para un equipo específico.
    • Requerido: organization, project, team_id
  • azdo_get_team_board: Obtiene los detalles de un board específico.
    • Requerido: organization, project, team_id, board_id
  • azdo_list_work_item_types: Lista todos los tipos de work items disponibles en el proyecto.
    • Requerido: organization, project
  • azdo_list_tags: Lista todas las etiquetas en uso en el proyecto.
    • Requerido: organization, project
  • azdo_get_team_current_iteration: Obtiene la iteración/sprint activa actual para un equipo.
    • Requerido: organization, project, team_id
  • azdo_get_team_iterations: Obtiene todas las iteraciones/sprints para un equipo.
    • Requerido: organization, project, team_id

Contribuciones

¡Damos la bienvenida a las contribuciones!

  1. Haz un fork del repositorio.
  2. Crea una nueva rama para tu funcionalidad o corrección de errores (git checkout -b feature/amazing-feature).
  3. Confirma tus cambios.
  4. Empuja a tu rama.
  5. Abre una Solicitud de Extracción.

Compilación desde el Código Fuente

Requisitos Previos

  • Rust (última versión estable)
  • Azure CLI (requerido para autenticación local)

Pasos

  1. Clona el repositorio:

    git clone https://github.com/danielealbano/mcp-for-azure-devops-boards.git
    cd mcp-for-azure-devops-boards
    
  2. Compila el proyecto:

    cargo build --release
    

Herramientas

  • Ejecutar pruebas: cargo test
  • Verificar estilo de código: cargo fmt --check
  • Linting: cargo clippy

Aviso Legal

Este proyecto no está afiliado, respaldado ni patrocinado por Microsoft. Azure, Azure DevOps y las marcas comerciales relacionadas son propiedad de sus respectivos dueños. Este software utiliza las API estándar de los servicios de Microsoft para interactuar con Azure y Microsoft Graph, entre otros servicios.

Licencia

Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE.md para más detalles.