Uses python-dotenv for loading environment variables from .env files to configure Azure DevOps credentials and project settings.
Uses pydantic-settings for managing and validating server configuration settings.
Implemented as a Python-based MCP server that provides tools for interacting with Azure DevOps Work Items API.
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., "@WorkItems DevOps MCP Servershow me my work items due today"
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.
WorkItems DevOps MCP Server
Un servidor Model Context Protocol (MCP) que proporciona herramientas para interactuar con Azure DevOps Work Items desde aplicaciones de IA/LLM.
🎯 Propósito
Este proyecto permite que modelos de lenguaje (LLMs) y aplicaciones de IA interactúen directamente con Azure DevOps para:
Consultar work items asignados al usuario
Filtrar work items por criterios específicos y fechas
Obtener detalles completos de work items con formateo inteligente
Gestionar tipos de work items y sus estados
Actualizar estados, fechas planeadas y esfuerzo real de work items
Modificar descripciones y agregar comentarios
Operaciones en lote para múltiples work items
🏗️ Arquitectura
🚀 Inicio Rápido
Prerrequisitos
Python 3.13+
Cuenta de Azure DevOps con acceso al proyecto
Personal Access Token (PAT) de Azure DevOps
1. Instalación
2. Configuración
Crear un archivo .env en la raíz del proyecto:
3. Ejecución
🛠️ Herramientas Disponibles
El servidor MCP expone las siguientes herramientas:
🆕 Nuevas Funcionalidades
Actualizaciones recientes incluyen:
✅ Actualización de fechas planeadas (individual y en lote)
✅ Gestión de esfuerzo real con formateo inteligente
✅ Modificación de descripciones con soporte HTML
✅ Sistema de comentarios para seguimiento
✅ Formateo mejorado de fechas y esfuerzo
📋 Consulta de Work Items
Herramienta | Descripción | Parámetros |
| Obtiene IDs de work items asignados al usuario | Ninguno |
| Filtra work items por criterios personalizados |
|
| Filtra por fecha de inicio planeada |
|
| Obtiene detalles completos de work items |
|
📊 Gestión de Tipos y Estados
Herramienta | Descripción | Parámetros |
| Lista todos los tipos de work items | Ninguno |
| Obtiene un tipo específico por nombre |
|
| Lista estados de un tipo de work item |
|
| Obtiene transiciones permitidas |
|
✏️ Actualización
Herramienta | Descripción | Parámetros |
| Actualiza el estado de un work item |
|
| Actualiza la fecha planeada de un work item |
|
| Actualiza el esfuerzo real de un work item |
|
| Actualiza la descripción de un work item |
|
| Actualiza la fecha planeada de múltiples work items |
|
| Agrega un comentario a un work item |
|
💡 Ejemplos de Uso
Ejemplo 1: Obtener work items del día
Ejemplo 2: Filtrar por criterios personalizados
Ejemplo 3: Obtener detalles completos
Ejemplo 4: Actualizar fechas planeadas
Ejemplo 5: Gestionar esfuerzo y comentarios
🔧 Configuración Avanzada
Variables de Entorno
Variable | Descripción | Ejemplo |
| Token de acceso personal |
|
| Nombre del proyecto |
|
| Nombre de la organización |
|
Configuración de API
Versión de API: 7.0 (configurable en
settings.py)User-Agent:
workitems-devops-mcp/1.0Autenticación: Basic Auth con PAT
🏃♂️ Desarrollo
Estructura del Código
server.py
Define las herramientas MCP usando decoradores
@mcp.toolManeja la lógica de presentación y formateo de respuestas
Punto de entrada para el servidor MCP
services/workitems.py
Contiene toda la lógica de negocio para Azure DevOps API
Funciones para consultas WIQL (Work Item Query Language)
Gestión de tipos, estados y transiciones
utils/http_client.py
Cliente HTTP asíncrono usando
httpxManeja autenticación y headers
Métodos para GET, POST y PATCH
utils/formatters.py
Formatea respuestas para presentación en español
Convierte datos de API a formato legible
Maneja fechas, esfuerzo y estados
Incluye funciones especializadas para formateo de fechas ISO y conversión de esfuerzo a horas/minutos
Agregar Nuevas Herramientas
Definir función en :
Exponer como herramienta MCP en :
📦 Dependencias
🤝 Integración con Aplicaciones IA
Este servidor MCP puede integrarse con:
Claude Desktop: Agregar como servidor MCP en configuración
Aplicaciones personales: Usar como cliente MCP
Pipelines CI/CD: Automatización de work items
Chatbots: Consulta y actualización de work items
Ejemplo de configuración para Claude Desktop:
🚨 Consideraciones de Seguridad
⚠️ Nunca commitear tokens: Usar siempre variables de entorno
🔒 Tokens con permisos mínimos: Solo Work Items (lectura/escritura)
🕐 Rotación de tokens: Renovar PATs periódicamente
📝 Logs: No loggear información sensible
🐛 Solución de Problemas
Error: "Workitems not found"
Verificar IDs de work items válidos
Confirmar permisos en Azure DevOps
Error de autenticación
Validar PAT en Azure DevOps
Verificar variables de entorno
Error de conexión
Confirmar URL de organización/proyecto
Verificar conectividad de red
Desarrollado con ❤️ para integración Azure DevOps + IA
📚 Guía Paso a Paso para Desarrolladores
Paso 1: Configuración Inicial
Paso 2: Configuración Azure DevOps
Paso 3: Verificar Conexión
Paso 4: Integración con Cliente IA
Para Claude Desktop:
Para Desarrollo Personalizado:
Paso 5: Casos de Uso Comunes
Caso 1: Consulta Matutina de Work Items
Caso 2: Gestión de Estados y Actualizaciones
Caso 3: Filtros Avanzados
Caso 4: Operaciones en Lote y Gestión Avanzada
Paso 6: Personalización y Extensión
Agregar Nueva Herramienta:
Definir en :
Exponer en :
Modificar Formateo:
Editar utils/formatters.py para cambiar cómo se presentan los datos:
Paso 7: Testing y Debugging
Probar Herramientas Manualmente:
Debug con Logs:
Paso 8: Despliegue
Para Uso Local:
Para Contenedor Docker:
Para Servidor:
🎯 Tips para Desarrolladores
Usa el entorno correcto: Siempre activa el venv antes de trabajar
Variables de entorno: Nunca hardcodees tokens en el código
Manejo de errores: Azure DevOps puede devolver diferentes códigos de error
Rate limiting: Considera implementar rate limiting para evitar excesos
Caching: Para consultas frecuentes, considera implementar cache
Logging: Usa logs para debugging, pero no loggees información sensible
Operaciones en lote: Aprovecha las funciones de actualización masiva para eficiencia
Formateo inteligente: Utiliza las funciones de formateo para presentar datos de manera legible
Testing: Crea tests unitarios para tus nuevas funcionalidades