Asana
Interactuar con la API de Asana para gestionar tareas, proyectos y espacios de trabajo.
Documentación
Servidor MCP para Asana
Esta implementación del servidor de Protocolo de Contexto de Modelo (MCP) para Asana te permite hablar con la API de Asana desde un cliente MCP, como la aplicación de escritorio Claude de Anthropic, y muchos más.
Más detalles sobre MCP aquí:
- https://www.anthropic.com/news/model-context-protocol
- https://modelcontextprotocol.io/introduction
- https://github.com/modelcontextprotocol
Variables de Entorno
ASANA_ACCESS_TOKEN: (Requerido) Tu token de acceso de AsanaREAD_ONLY_MODE: (Opcional) Establécelo en 'true' para deshabilitar todas las operaciones de escritura. En este modo:- Las herramientas que modifican datos de Asana (crear, actualizar, eliminar) estarán deshabilitadas
- El prompt
create-taskestará deshabilitado - Solo las operaciones de lectura estarán disponibles Esto es útil para pruebas o cuando deseas asegurarte de que no se puedan realizar cambios en tu espacio de trabajo de Asana.
Uso
En la herramienta de IA de tu elección (ej: Claude Desktop) pregunta algo sobre tareas, proyectos, espacios de trabajo y/o comentarios de asana. Mencionar la palabra "asana" aumentará la probabilidad de que el LLM elija la herramienta correcta.
Ejemplo:
¿Cuántas tareas de asana sin terminar tenemos en nuestro proyecto Sprint 30?
Otro ejemplo:

Herramientas
asana_list_workspaces- Lista todos los espacios de trabajo disponibles en Asana
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de espacios de trabajo
asana_search_projects- Busca proyectos en Asana usando coincidencia de patrones de nombre
- Entrada requerida:
- workspace (string): El espacio de trabajo en el que buscar
- name_pattern (string): Expresión regular para coincidir con nombres de proyectos
- Entrada opcional:
- archived (boolean): Solo devolver proyectos archivados (predeterminado: false)
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de proyectos coincidentes
asana_search_tasks- Busca tareas en un espacio de trabajo con opciones de filtrado avanzadas
- Entrada requerida:
- workspace (string): El espacio de trabajo en el que buscar
- Entrada opcional:
- text (string): Texto para buscar en nombres y descripciones de tareas
- resource_subtype (string): Filtrar por subtipo de tarea (p. ej., milestone)
- completed (boolean): Filtrar tareas completadas
- is_subtask (boolean): Filtrar subtareas
- has_attachment (boolean): Filtrar tareas con archivos adjuntos
- is_blocked (boolean): Filtrar tareas con dependencias incompletas
- is_blocking (boolean): Filtrar tareas incompletas con dependientes
- assignee, projects, sections, tags, teams y muchos otros filtros avanzados
- sort_by (string): Ordenar por due_date, created_at, completed_at, likes, modified_at (predeterminado: modified_at)
- sort_ascending (boolean): Ordenar en orden ascendente (predeterminado: false)
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- custom_fields (object): Objeto que contiene filtros de campos personalizados
- Devuelve: Lista de tareas coincidentes
asana_get_task- Obtiene información detallada sobre una tarea específica
- Entrada requerida:
- task_id (string): El ID de la tarea a recuperar
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información detallada de la tarea
asana_create_task- Crea una nueva tarea en un proyecto
- Entrada requerida:
- project_id (string): El proyecto en el que crear la tarea
- name (string): Nombre de la tarea
- Entrada opcional:
- notes (string): Descripción de la tarea
- html_notes (string): Descripción de la tarea con formato similar a HTML
- due_on (string): Fecha de vencimiento en formato YYYY-MM-DD
- assignee (string): Asignado (puede ser 'me' o un ID de usuario)
- followers (array de strings): Matriz de IDs de usuario para agregar como seguidores
- parent (string): El ID de la tarea principal bajo la cual establecer esta tarea
- projects (array de strings): Matriz de IDs de proyecto para agregar esta tarea
- resource_subtype (string): El tipo de tarea (default_task o milestone)
- custom_fields (object): Objeto que mapea strings de GID de campos personalizados a sus valores
- Devuelve: Información de la tarea creada
asana_get_task_stories- Obtiene comentarios e historias para una tarea específica
- Entrada requerida:
- task_id (string): El ID de la tarea para obtener historias
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de historias/comentarios de la tarea
asana_update_task- Actualiza los detalles de una tarea existente
- Entrada requerida:
- task_id (string): El ID de la tarea a actualizar
- Entrada opcional:
- name (string): Nuevo nombre para la tarea
- notes (string): Nueva descripción para la tarea
- html_notes (string): Descripción de la tarea con formato similar a HTML (subconjunto de etiquetas HTML compatibles)
- due_on (string): Nueva fecha de vencimiento en formato YYYY-MM-DD
- assignee (string): Nuevo asignado (puede ser 'me' o un ID de usuario)
- followers (array): Matriz de IDs de usuario para agregar como seguidores
- parent (string): El ID de la tarea principal bajo la cual mover esta tarea
- completed (boolean): Marcar la tarea como completada o no
- resource_subtype (string): El tipo de tarea (default_task o milestone)
- custom_fields (object): Objeto que mapea strings de GID de campos personalizados a sus valores
- Devuelve: Información de la tarea actualizada
asana_get_project- Obtiene información detallada sobre un proyecto específico
- Entrada requerida:
- project_id (string): El ID del proyecto a recuperar
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información detallada del proyecto
asana_get_project_task_counts- Obtiene el número de tareas en un proyecto
- Entrada requerida:
- project_id (string): El ID del proyecto para obtener el conteo de tareas
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información del conteo de tareas
asana_get_project_sections- Obtiene secciones en un proyecto
- Entrada requerida:
- project_id (string): El ID del proyecto para obtener secciones
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de secciones del proyecto
asana_create_task_story- Crea un comentario o historia en una tarea
- Entrada requerida:
- task_id (string): El ID de la tarea para agregar la historia
- text (string): El contenido de texto de la historia/comentario
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información de la historia creada
asana_add_task_dependencies- Establece dependencias para una tarea
- Entrada requerida:
- task_id (string): El ID de la tarea para agregar dependencias
- dependencies (array de strings): Matriz de IDs de tareas de las que depende esta tarea
- Devuelve: Dependencias de tarea actualizadas
asana_add_task_dependents- Establece dependientes para una tarea (tareas que dependen de esta tarea)
- Entrada requerida:
- task_id (string): El ID de la tarea para agregar dependientes
- dependents (array de strings): Matriz de IDs de tareas que dependen de esta tarea
- Devuelve: Dependientes de tarea actualizados
asana_create_subtask- Crea una nueva subtarea para una tarea existente
- Entrada requerida:
- parent_task_id (string): El ID de la tarea principal bajo la cual crear la subtarea
- name (string): Nombre de la subtarea
- Entrada opcional:
- notes (string): Descripción de la subtarea
- due_on (string): Fecha de vencimiento en formato YYYY-MM-DD
- assignee (string): Asignado (puede ser 'me' o un ID de usuario)
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información de la subtarea creada
asana_get_multiple_tasks_by_gid- Obtiene información detallada sobre múltiples tareas por sus GIDs (máximo 25 tareas)
- Entrada requerida:
- task_ids (array de strings o string separado por comas): GIDs de tareas a recuperar (máx. 25)
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de información detallada de tareas
asana_get_project_status- Obtiene una actualización de estado de un proyecto
- Entrada requerida:
- project_status_gid (string): El GID del estado del proyecto a recuperar
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información del estado del proyecto
asana_get_project_statuses- Obtiene todas las actualizaciones de estado para un proyecto
- Entrada requerida:
- project_gid (string): El GID del proyecto para obtener estados
- Entrada opcional:
- limit (number): Resultados por página (1-100)
- offset (string): Token de desplazamiento de paginación
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de actualizaciones de estado del proyecto
asana_create_project_status- Crea una nueva actualización de estado para un proyecto
- Entrada requerida:
- project_gid (string): El GID del proyecto para crear el estado
- text (string): El contenido de texto de la actualización de estado
- Entrada opcional:
- color (string): El color del estado (green, yellow, red)
- title (string): El título de la actualización de estado
- html_text (string): Texto con formato HTML para la actualización de estado
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información del estado del proyecto creado
asana_delete_project_status- Elimina una actualización de estado de un proyecto
- Entrada requerida:
- project_status_gid (string): El GID del estado del proyecto a eliminar
- Devuelve: Confirmación de eliminación
asana_set_parent_for_task- Establece el padre de una tarea y posiciona la subtarea entre las otras subtareas de ese padre
- Entrada requerida:
- task_id (string): El ID de la tarea sobre la que operar
- data (object):
- parent (string): El nuevo padre de la tarea, o null para sin padre
- Entrada opcional:
- insert_after (string): Una subtarea del padre para insertar la tarea después, o null para insertar al principio de la lista
- insert_before (string): Una subtarea del padre para insertar la tarea antes, o null para insertar al final de la lista
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información de la tarea actualizada
asana_get_tag- Obtiene información detallada sobre una etiqueta específica
- Entrada requerida:
- tag_gid (string): Identificador único global para la etiqueta
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información detallada de la etiqueta
asana_get_tags_for_task- Obtiene las etiquetas de una tarea
- Entrada requerida:
- task_gid (string): La tarea sobre la que operar
- Entrada opcional:
- limit (number): Resultados por página. El número de objetos a devolver por página. El valor debe estar entre 1 y 100.
- offset (string): Token de desplazamiento. Un desplazamiento a la siguiente página devuelta por la API.
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de etiquetas asociadas con la tarea
asana_get_tasks_for_tag- Obtiene tareas para una etiqueta específica
- Entrada requerida:
- tag_gid (string): El GID de la etiqueta para recuperar tareas
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- opt_pretty (boolean): Proporciona la respuesta en un formato 'bonito'
- limit (integer): El número de objetos a devolver por página. El valor debe estar entre 1 y 100.
- offset (string): Un desplazamiento a la siguiente página devuelta por la API.
- Devuelve: Lista de tareas para la etiqueta especificada
asana_get_tags_for_workspace- Obtiene etiquetas en un espacio de trabajo
- Entrada requerida:
- workspace_gid (string): Identificador único global para el espacio de trabajo u organización
- Entrada opcional:
- limit (integer): Resultados por página. El número de objetos a devolver por página. El valor debe estar entre 1 y 100.
- offset (string): Token de desplazamiento. Un desplazamiento a la siguiente página devuelta por la API.
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Lista de etiquetas en el espacio de trabajo
asana_update_tag- Actualiza una etiqueta existente
- Entrada requerida:
- tag_gid (string): Identificador único global para la etiqueta
- Entrada opcional:
- name (string): Nombre de la etiqueta
- color (string): Color de la etiqueta. Puede ser uno de: dark-pink, dark-green, dark-blue, dark-red, dark-teal, dark-brown, dark-orange, dark-purple, dark-warm-gray, light-pink, light-green, light-blue, light-red, light-teal, light-brown, light-orange, light-purple, light-warm-gray
- notes (string): Notas sobre la etiqueta
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información de la etiqueta actualizada
asana_delete_tag- Elimina una etiqueta
- Entrada requerida:
- tag_gid (string): Identificador único global para la etiqueta
- Devuelve: Confirmación de eliminación
asana_create_tag_for_workspace- Crea una nueva etiqueta en un espacio de trabajo
- Entrada requerida:
- workspace_gid (string): Identificador único global para el espacio de trabajo u organización
- name (string): Nombre de la etiqueta
- Entrada opcional:
- color (string): Color de la etiqueta. Puede ser uno de: dark-pink, dark-green, dark-blue, dark-red, dark-teal, dark-brown, dark-orange, dark-purple, dark-warm-gray, light-pink, light-green, light-blue, light-red, light-teal, light-brown, light-orange, light-purple, light-warm-gray
- notes (string): Notas sobre la etiqueta
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información de la etiqueta creada
- Entrada opcional:
asana_add_tag_to_task- Agregar una etiqueta a una tarea
- Entrada requerida:
- task_gid (string): El GID de la tarea a la que se agregará la etiqueta
- tag_gid (string): El GID de la etiqueta que se agregará a la tarea
- Devuelve: Respuesta de éxito
asana_remove_tag_from_task- Eliminar una etiqueta de una tarea
- Entrada requerida:
- task_gid (string): El GID de la tarea de la que se eliminará la etiqueta
- tag_gid (string): El GID de la etiqueta que se eliminará de la tarea
- Devuelve: Respuesta de éxito
asana_add_project_to_task- Agregar una tarea existente a un proyecto
- Entrada requerida:
- task_id (string): El ID de la tarea que se agregará al proyecto
- project_id (string): El ID del proyecto al que se agregará la tarea
- Entrada opcional:
- section (string): El ID de la sección dentro del proyecto a la que se agregará la tarea
- insert_after (string): Un ID de tarea después del cual insertar esta tarea. Como máximo se debe especificar uno de insert_before, insert_after o section.
- insert_before (string): Un ID de tarea antes del cual insertar esta tarea. Como máximo se debe especificar uno de insert_before, insert_after o section.
- Devuelve: Mensaje de éxito confirmando que la tarea fue agregada al proyecto
- Notas: Si no se proporcionan argumentos de posicionamiento, la tarea se agregará al final del proyecto
asana_remove_project_from_task- Eliminar una tarea de un proyecto
- Entrada requerida:
- task_id (string): El ID de la tarea que se eliminará del proyecto
- project_id (string): El ID del proyecto del que se eliminará la tarea
- Devuelve: Mensaje de éxito confirmando que la tarea fue eliminada del proyecto
- Notas: La tarea seguirá existiendo en el sistema, pero ya no estará en el proyecto
asana_delete_task- Eliminar una tarea permanentemente
- Entrada requerida:
- task_id (string): El ID de la tarea a eliminar
- Devuelve: Mensaje de éxito confirmando que la tarea fue eliminada
- Notas: Esta acción no se puede deshacer. La tarea se eliminará permanentemente.
asana_create_project- Crear un nuevo proyecto en un espacio de trabajo o equipo
- Entrada requerida:
- workspace (string): El GID del espacio de trabajo en el que se creará el proyecto
- name (string): Nombre del proyecto
- Entrada opcional:
- team (string): El GID del equipo (requerido para espacios de trabajo de organización)
- notes (string): Descripción o notas para el proyecto
- color (string): Color del proyecto (por ejemplo, dark-pink, dark-green, light-blue)
- privacy_setting (string): Configuración de privacidad (public_to_workspace, private_to_team, private)
- default_view (string): Vista predeterminada (list, board, calendar, timeline)
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: El objeto de proyecto creado
asana_update_project- Actualizar los detalles de un proyecto (nombre, descripción, etc.)
- Entrada requerida:
- project_id (string): El GID del proyecto a actualizar
- Entrada opcional:
- name (string): Nuevo nombre para el proyecto
- notes (string): Nueva descripción en texto plano para el proyecto
- html_notes (string): Nueva descripción con formato HTML (debe ser XML válido de Asana)
- color (string): Color del proyecto (por ejemplo, dark-pink, dark-green, light-blue)
- privacy_setting (string): Configuración de privacidad (public_to_workspace, private_to_team, private)
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información del proyecto actualizada
asana_create_section- Crear una nueva sección en un proyecto
- Entrada requerida:
- project_id (string): El GID del proyecto en el que se creará la sección
- name (string): Nombre de la nueva sección
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información de la sección creada
asana_update_section- Actualizar una sección (renombrarla)
- Entrada requerida:
- section_id (string): El GID de la sección a actualizar
- name (string): Nuevo nombre para la sección
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- Devuelve: Información de la sección actualizada
asana_delete_section- Eliminar una sección de un proyecto
- Entrada requerida:
- section_id (string): El GID de la sección a eliminar
- Devuelve: Confirmación de eliminación
asana_add_task_to_section- Mover una tarea a una sección dentro de su proyecto
- Entrada requerida:
- section_id (string): El GID de la sección a la que se agregará la tarea
- task_id (string): El GID de la tarea a mover
- Entrada opcional:
- insert_before (string): Un GID de tarea antes del cual insertar la tarea
- insert_after (string): Un GID de tarea después del cual insertar la tarea
- Devuelve: Confirmación de éxito
asana_get_subtasks- Obtener todas las subtareas de una tarea determinada. Devuelve una representación compacta de cada subtarea.
- Entrada requerida:
- task_gid (string): El GID de la tarea principal
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir (por ejemplo, 'name,completed,assignee,due_on')
- Devuelve: Matriz de objetos de subtarea
asana_get_tasks_for_project- Obtener todas las tareas en un proyecto. Use esto en lugar de search_tasks cuando necesite listar tareas en un proyecto específico. Funciona en planes gratuitos de Asana (a diferencia de search_tasks que requiere premium). Admite paginación y selección de campos opcionales.
- Entrada requerida:
- project_id (string): El GID del proyecto del que se obtendrán las tareas
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- limit (number): Resultados por página (1-100)
- offset (string): Token de desplazamiento de paginación de una respuesta anterior
- Devuelve: Matriz de objetos de tarea
asana_get_my_tasks- Obtener tareas de la lista 'Mis tareas' del usuario autenticado en un espacio de trabajo
- Entrada requerida:
- workspace (string): El GID del espacio de trabajo del que se obtendrán Mis tareas
- Entrada opcional:
- opt_fields (string): Lista separada por comas de campos opcionales a incluir
- completed_since (string): Solo devolver tareas completadas desde este momento (ISO 8601). Use 'now' para devolver solo tareas incompletas.
- Devuelve: Lista de tareas de la lista Mis tareas del usuario
Prompts
-
task-summary- Obtén un resumen y actualización de estado para una tarea basada en sus notas, campos personalizados y comentarios
- Entrada requerida:
- task_id (string): El ID de la tarea para obtener el resumen
- Devuelve: Un prompt detallado con instrucciones para generar un resumen de tarea
-
task-completeness- Analiza si la descripción de una tarea contiene todos los detalles necesarios para su finalización
- Entrada requerida:
- task_id (string): El ID o URL de la tarea a analizar
- Devuelve: Un prompt detallado con instrucciones para analizar la completitud de la tarea
-
create-task- Crea una nueva tarea con los detalles especificados
- Entrada requerida:
- project_name (string): El nombre del proyecto de Asana donde se debe crear la tarea
- title (string): El título de la tarea
- Entrada opcional:
- notes (string): Notas o descripción para la tarea
- due_date (string): Fecha de vencimiento de la tarea (formato YYYY-MM-DD)
- Devuelve: Un prompt detallado con instrucciones para crear una tarea completa
Resources
-
Espacios de trabajo -
asana://workspace/{workspace_gid}- Representación de los espacios de trabajo de Asana como recursos
- Cada espacio de trabajo se expone como un recurso separado
- Formato URI:
asana://workspace/{workspace_gid} - Devuelve: Objeto JSON con detalles del espacio de trabajo, incluyendo:
name: Nombre del espacio de trabajo (string)id: ID global del espacio de trabajo (string)type: Tipo de recurso (string)is_organization: Si el espacio de trabajo es una organización (boolean)email_domains: Lista de dominios de correo asociados con el espacio de trabajo (string[])
- Tipo MIME:
application/json
-
Proyectos -
asana://project/{project_gid}- Recurso plantilla para obtener detalles del proyecto por GID
- Formato URI:
asana://project/{project_gid} - Devuelve: Objeto JSON con detalles del proyecto, incluyendo:
name: Nombre del proyecto (string)id: ID global del proyecto (string)type: Tipo de recurso (string)archived: Si el proyecto está archivado (boolean)public: Si el proyecto es público (boolean)notes: Descripción/notas del proyecto (string)color: Color del proyecto (string)default_view: Tipo de vista predeterminada (string)due_date,due_on,start_on: Información de fecha del proyecto (string)workspace: Objeto que contiene información del espacio de trabajoteam: Objeto que contiene información del equiposections: Arreglo de objetos de sección en el proyectocustom_fields: Arreglo de definiciones de campos personalizados para el proyecto
- Tipo MIME:
application/json
Setup
-
Crea una cuenta de Asana:
- Visita Asana.
- Haz clic en "Registrarse".
-
Obtén el token de acceso de Asana:
- Puedes generar un token de acceso personal desde la consola de desarrollador de Asana.
- Más detalles aquí: https://developers.asana.com/docs/personal-access-token
-
Opciones de instalación:
Para Claude Desktop:
Agrega lo siguiente a tu
claude_desktop_config.json:{ "mcpServers": { "asana": { "command": "npx", "args": ["-y", "@roychri/mcp-server-asana"], "env": { "ASANA_ACCESS_TOKEN": "your-asana-access-token" } } } }Para Claude Code:
Usa el siguiente comando para instalar y configurar el servidor MCP:
claude mcp add asana -e ASANA_ACCESS_TOKEN=<TOKEN> -- npx -y @roychri/mcp-server-asanaReemplaza
<TOKEN>con tu token de acceso de Asana.Para Codex CLI:
Agrega lo siguiente a tu
~/.codex/config.toml:[mcp_servers.asana] command = "npx" args = [ "-y", "@roychri/mcp-server-asana" ] env = {ASANA_ACCESS_TOKEN= "<TOKEN>"}Reemplaza
<TOKEN>con tu token de acceso de Asana.
Si deseas instalar la versión beta (aún no publicada), puedes usar:
@roychri/mcp-server-asana@beta
Puedes encontrar la versión beta actual, si existe, con cualquiera de las siguientes opciones:
- https://www.npmjs.com/package/@roychri/mcp-server-asana?activeTab=versions
npm dist-tag ls @roychri/mcp-server-asana
Solución de problemas
Si encuentras errores de permisos:
- Asegúrate de que el plan de Asana que tienes permita el acceso a la API
- Confirma que el token de acceso y la configuración estén correctamente establecidos en
claude_desktop_config.json.
Contribuciones
Clona este repositorio y comienza a hackear.
Pruébalo localmente con el MCP Inspector
Si deseas probar tus cambios, puedes usar el MCP Inspector de la siguiente manera:
npm run inspector
Esto expondrá el cliente al puerto 5173 y el servidor al puerto 3000.
Si esos puertos ya están siendo utilizados por otra cosa, puedes usar:
CLIENT_PORT=5009 SERVER_PORT=3009 npm run inspector
Licencia
Este servidor MCP está licenciado bajo la Licencia MIT. Esto significa que eres libre de usar, modificar y distribuir el software, sujeto a los términos y condiciones de la Licencia MIT. Para más detalles, consulta el archivo LICENSE en el repositorio del proyecto.