npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@slorenzot/mcp-azure

v2.8.0

Published

Servidor MCP para Azure DevOps con manejo robusto de errores, soporte .mcp.json y manejo de concurrencia en adjuntos

Readme

@slorenzot/mcp-azure

Servidor MCP (Model Context Protocol) para Azure DevOps. Permite interactuar con Work Items, repositorios Git, Pull Requests, sprints, áreas, comentarios y adjuntos desde cualquier cliente MCP compatible.

Instalación

npm install -g @slorenzot/mcp-azure

O usar directamente con npx:

npx @slorenzot/mcp-azure

Configuración

Variables de Entorno

El servidor se configura automáticamente usando las siguientes variables de entorno:

| Variable | Alternativa | Descripción | Requerido | |----------|-------------|-------------|-----------| | AZURE_DEVOPS_ORG | ADO_ORG | URL de la organización (ej: https://dev.azure.com/mi-org) | Sí | | AZURE_DEVOPS_PAT | ADO_PAT | Personal Access Token | Sí | | AZURE_DEVOPS_PROJECT | ADO_PROJECT | Nombre del proyecto | No |

Configuración con .mcp.json

El servidor también puede leer credenciales desde un archivo .mcp.json, buscándolo en este orden:

  1. Directorio actual
  2. Directorio padre
  3. Directorio del script
  4. Home del usuario

Ejemplo:

{
  "mcpServers": {
    "azure-devops": {
      "command": "npx",
      "args": ["-y", "@slorenzot/mcp-azure"],
      "env": {
        "AZURE_DEVOPS_ORG": "https://dev.azure.com/tu-organizacion",
        "AZURE_DEVOPS_PAT": "tu-pat-aqui",
        "AZURE_DEVOPS_PROJECT": "tu-proyecto"
      }
    }
  }
}

Configuración en Claude Desktop

Agrega la siguiente configuración en tu archivo claude_desktop_config.json:

{
  "mcpServers": {
    "azure-devops": {
      "command": "npx",
      "args": ["-y", "@slorenzot/mcp-azure"],
      "env": {
        "AZURE_DEVOPS_ORG": "https://dev.azure.com/tu-organizacion",
        "AZURE_DEVOPS_PAT": "tu-pat-aqui",
        "AZURE_DEVOPS_PROJECT": "tu-proyecto"
      }
    }
  }
}

Configuración en OpenCode

OpenCode utiliza el mismo MCP, pero la configuración se puede hacer de dos formas:

Opción 1: Configuración inicial con variables de entorno

  1. Configura las variables de entorno en tu sistema o en tu configuración de OpenCode:

    export AZURE_DEVOPS_ORG="https://dev.azure.com/tu-organizacion"
    export AZURE_DEVOPS_PAT="tu-pat-aqui"
    export AZURE_DEVOPS_PROJECT="tu-proyecto"
  2. O agrega el servidor MCP en tu configuración de OpenCode:

    {
      "mcpServers": {
        "azure-devops": {
          "command": "npx",
          "args": ["-y", "@slorenzot/mcp-azure"],
          "env": {
            "AZURE_DEVOPS_ORG": "https://dev.azure.com/tu-organizacion",
            "AZURE_DEVOPS_PAT": "tu-pat-aqui",
            "AZURE_DEVOPS_PROJECT": "tu-proyecto"
          }
        }
      }
    }

Opción 2: Configuración dinámica con ado_configure

OpenCode permite configurar la conexión directamente durante la sesión usando el comando ado_configure:

{
  "organization": "https://dev.azure.com/tu-organizacion",
  "project": "tu-proyecto",
  "pat": "tu-pat-aqui"
}

Esta opción es útil para cambiar entre diferentes organizaciones o proyectos sin modificar el archivo de configuración.

Nota: Cuando usas ado_configure, la conexión persiste durante la sesión actual de OpenCode.

Obtener un Personal Access Token (PAT)

  1. Ve a tu organización de Azure DevOps
  2. Haz clic en tu avatar (esquina superior derecha)
  3. Selecciona Personal Access Tokens
  4. Crea un nuevo token con los siguientes permisos:
    • Work Items: Read & Write
    • Code: Read & Write (para operaciones de repositorios y Pull Requests)
    • Project and Team: Read (opcional)

Herramientas Disponibles

Autenticación

| Herramienta | Descripción | |-------------|-------------| | ado_configure | Configura la conexión con organización, proyecto y PAT |

Work Items

| Herramienta | Descripción | |-------------|-------------| | ado_get_work_item | Obtiene un Work Item por su ID | | ado_create_work_item | Crea un nuevo Work Item (User Story, Bug, Task, etc.) | | ado_update_work_item | Actualiza un Work Item existente | | ado_delete_work_item | Elimina un Work Item en Azure DevOps (soft delete por defecto) | | ado_get_work_item_type_fields | Obtiene los campos disponibles/requeridos de un tipo | | ado_add_work_item_link | Crea una relación (Parent/Child/Related/Duplicate/Successor/Predecessor) entre dos Work Items | | ado_remove_work_item_link | Elimina una relación existente entre dos Work Items |

Consultas

| Herramienta | Descripción | |-------------|-------------| | ado_query_sprint | Consulta Work Items de un sprint específico | | ado_query_area | Consulta Work Items de un área específica | | ado_query_wiql | Ejecuta una consulta WIQL personalizada |

Estructura del Proyecto

| Herramienta | Descripción | |-------------|-------------| | ado_list_iterations | Lista las iteraciones/sprints del proyecto | | ado_list_areas | Lista las áreas del proyecto |

Repositorios Git

| Herramienta | Descripción | |-------------|-------------| | ado_list_repositories | Lista todos los repositorios Git del proyecto | | ado_get_repository | Obtiene detalles de un repositorio específico por nombre o ID | | ado_list_branches | Lista las ramas (branches) de un repositorio |

Pull Requests

| Herramienta | Descripción | |-------------|-------------| | ado_list_pull_requests | Lista Pull Requests con filtros opcionales (status, branches, creador, revisor) | | ado_get_pull_request | Obtiene detalles completos de un Pull Request | | ado_create_pull_request | Crea un nuevo Pull Request | | ado_update_pull_request | Actualiza propiedades de un Pull Request (título, descripción, draft) | | ado_complete_pull_request | Completa (merge) un Pull Request con estrategia configurable | | ado_abandon_pull_request | Abandona un Pull Request |

Pull Request Reviews

| Herramienta | Descripción | |-------------|-------------| | ado_approve_pull_request | Aprueba un Pull Request (voto: 10) | | ado_reject_pull_request | Rechaza un Pull Request (voto: -10) | | ado_get_pull_request_reviewers | Obtiene todos los revisores y sus votos de un Pull Request | | ado_add_pull_request_reviewer | Agrega un revisor a un Pull Request |

Pull Request Comments

| Herramienta | Descripción | |-------------|-------------| | ado_get_pull_request_threads | Obtiene todos los hilos de comentarios de un Pull Request | | ado_create_pull_request_thread | Crea un nuevo hilo de comentarios (general o de código) | | ado_reply_to_pull_request_thread | Responde a un hilo de comentarios existente | | ado_update_pull_request_thread_status | Actualiza el estado de un hilo de comentarios (Fixed, WontFix, etc.) |

Pull Request Info

| Herramienta | Descripción | |-------------|-------------| | ado_get_pull_request_commits | Obtiene todos los commits de un Pull Request | | ado_get_pull_request_work_items | Obtiene los Work Items vinculados a un Pull Request |

Búsqueda de Identidades

| Herramienta | Descripción | |-------------|-------------| | ado_search_users | Busca usuarios por nombre o email. Devuelve el ID de identidad (UUID) necesario para menciones en comentarios |

Comentarios y Discusiones

| Herramienta | Descripción | |-------------|-------------| | ado_add_comment | Agrega un comentario a un Work Item (soporta Markdown y menciones con mentions) | | ado_get_comments | Obtiene los comentarios de un Work Item, incluyendo menciones resueltas |

Adjuntos

| Herramienta | Descripción | |-------------|-------------| | ado_upload_attachment | Sube un archivo y devuelve la URL del adjunto | | ado_add_attachment | Agrega un adjunto a un Work Item | | ado_delete_attachment | Elimina un adjunto de un Work Item removiendo su relación | | ado_get_attachments | Lista los adjuntos de un Work Item |

Ejemplos de Uso

Crear una User Story

{
  "title": "Implementar login con OAuth",
  "type": "User Story",
  "description": "Como usuario quiero poder iniciar sesión con mi cuenta de Google",
  "areaPath": "MiProyecto\\Backend",
  "iterationPath": "MiProyecto\\Sprint 5",
  "fields": {
    "Custom.OKR": "Seguridad",
    "Custom.Prioridad": "Alta"
  }
}

Consulta WIQL Personalizada

{
  "wiql": "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.State] = 'Active' AND [System.AssignedTo] = @Me ORDER BY [System.CreatedDate] DESC",
  "getDetails": true
}

Agregar Comentario con Markdown

{
  "id": 12345,
  "comment": "## Análisis completado\n\n- Revisado el código\n- Identificados 3 issues\n\n**Próximo paso:** Corregir validaciones"
}

Agregar Comentario con Mención

Las menciones requieren el ID de identidad (UUID) del usuario. Hay dos formas de obtenerlo:

  1. Buscar usuario con ado_search_users:
{
  "searchTerm": "Juan Pérez"
}
  1. Obtener ID desde un Work Item — los campos System.AssignedTo, System.CreatedBy o System.ChangedBy contienen el id de identidad.

Luego, agregar el comentario con la mención:

{
  "id": 12345,
  "comment": "@Juan Pérez ¿podrías revisar este cambio?",
  "mentions": [
    {
      "name": "Juan Pérez",
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    }
  ]
}

Nota: El texto del comentario debe incluir @DisplayName o @{DisplayName} en la posición donde quieras la mención. El MCP reemplaza automáticamente con el HTML de mención de Azure DevOps.

Subir y Adjuntar Archivo

{
  "workItemId": 12345,
  "filePath": "/ruta/al/archivo.pdf",
  "comment": "Documento de especificaciones",
  "name": "Especificaciones Funcionales v2.0"
}

Vincular Adjunto Existente

{
  "workItemId": 12345,
  "attachmentUrl": "https://dev.azure.com/org/proj/_apis/wit/attachments/abc123",
  "comment": "Diseño de arquitectura",
  "name": "Arquitectura del Sistema"
}

Eliminar Adjunto de un Work Item

{
  "workItemId": 12345,
  "attachmentUrl": "https://dev.azure.com/org/proj/_apis/wit/attachments/abc123",
  "comment": "Adjunto agregado por error"
}

Eliminar una User Story

{
  "id": 12345,
  "confirm": true,
  "destroy": false,
  "expectedType": "User Story"
}

ado_delete_work_item exige confirm: true. Si envías destroy: true, la eliminación es permanente.

Listar Repositorios

{
  "includeHidden": false,
  "top": 50
}

Listar Pull Requests Activos

{
  "status": "Active",
  "top": 20
}

Crear un Pull Request

{
  "repositoryId": "mi-repo",
  "sourceRefName": "refs/heads/feature-login",
  "targetRefName": "refs/heads/main",
  "title": "Implementar login con OAuth",
  "description": "Esta PR agrega soporte para login con Google OAuth",
  "reviewerIds": ["12345678-1234-1234-1234-1234567890ab"],
  "isDraft": false
}

Aprobar un Pull Request

{
  "pullRequestId": 12345,
  "repositoryId": "mi-repo"
}

Completar (Merge) un Pull Request

{
  "pullRequestId": 12345,
  "repositoryId": "mi-repo",
  "mergeStrategy": "Squash",
  "deleteSourceBranch": true,
  "mergeCommitMessage": "Merge de feature-login"
}

Crear Comentario en Código

{
  "pullRequestId": 12345,
  "repositoryId": "mi-repo",
  "content": "Por favor extraer esto en una función separada",
  "filePath": "/src/components/Login.tsx",
  "startLine": 45,
  "endLine": 52
}

Prompts Disponibles

El servidor incluye prompts predefinidos para facilitar tareas comunes:

| Prompt | Descripción | |--------|-------------| | connect | Guía para conectarse a Azure DevOps | | analyze_sprint | Analiza el estado de un sprint | | create_user_story | Crea una User Story estructurada | | daily_standup | Genera un reporte de standup diario | | plan_sprint | Ayuda a planificar un sprint | | bulk_update | Actualiza múltiples Work Items | | project_report | Genera un reporte del proyecto | | report_bug | Crea un Bug report estructurado |

Recursos

| Recurso | URI | Descripción | |---------|-----|-------------| | Estado de conexión | ado://connection/status | Información del estado de conexión actual |

Desarrollo

Requisitos

  • Node.js 18+
  • npm o yarn

Instalación local

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

Scripts disponibles

npm run build    # Compila TypeScript
npm run start    # Inicia el servidor
npm run dev      # Modo desarrollo con watch
npm run release:check          # Valida build y paquete NPM
npm run release:version:patch  # Sube versión patch y sincroniza lockfile
npm run release:version:minor  # Sube versión minor y sincroniza lockfile
npm run release:version:major  # Sube versión major y sincroniza lockfile
npm run release:publish        # Publica en NPM

Flujo de Release

Para futuras funcionalidades, el flujo recomendado quedó documentado en RELEASE_WORKFLOW.md.

Licencia

MIT

Autor

Soulberto Lorenzo - @slorenzot

Versión

2.7.3 - 39 herramientas disponibles para Azure DevOps (Work Items, Repositorios Git, Pull Requests, sprints, áreas, comentarios con menciones, adjuntos, vínculos entre Work Items y búsqueda de identidades)