remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Allows interaction with Asana API to manage tasks, projects, workspaces, and comments. Features include listing workspaces, searching projects and tasks, creating and updating tasks, managing subtasks, adding dependencies, creating project statuses, and more.
Servidor MCP para Asana
Esta implementación del servidor de Protocolo de Contexto de Modelo de Asana le permite comunicarse 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
Uso
En la herramienta de IA que prefieras (p. ej., Claude Desktop), pregunta sobre las tareas, proyectos, espacios de trabajo o comentarios de Asana. Mencionar la palabra "asana" aumentará las posibilidades de que el LLM elija la herramienta adecuada.
Ejemplo:
¿Cuántas tareas de asana sin terminar tenemos en nuestro proyecto Sprint 30?
Otro ejemplo:
Herramientas
asana_list_workspaces
- Enumera todos los espacios de trabajo disponibles en Asana
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Lista de espacios de trabajo
asana_search_projects
- Buscar proyectos en Asana usando la coincidencia de patrones de nombres
- Entrada requerida:
- espacio de trabajo (cadena): el espacio de trabajo en el que buscar
- name_pattern (cadena): Patrón de expresión regular para que coincida con los nombres de los proyectos
- Entrada opcional:
- archivado (booleano): solo devuelve proyectos archivados (valor predeterminado: falso)
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Lista de proyectos coincidentes
asana_search_tasks
- Buscar tareas en un espacio de trabajo con opciones de filtrado avanzadas
- Entrada requerida:
- espacio de trabajo (cadena): el espacio de trabajo en el que buscar
- Entrada opcional:
- texto (cadena): Texto a buscar en los nombres y descripciones de las tareas
- resource_subtype (cadena): Filtrar por subtipo de tarea (por ejemplo, hito)
- completado (booleano): filtro para tareas completadas
- is_subtask (booleano): Filtro para subtareas
- has_attachment (booleano): Filtro para tareas con archivos adjuntos
- is_blocked (booleano): Filtro para tareas con dependencias incompletas
- is_blocking (booleano): Filtro para tareas incompletas con dependientes
- cesionario, proyectos, secciones, etiquetas, equipos y muchos otros filtros avanzados
- sort_by (cadena): Ordenar por fecha de vencimiento, creado_en, completado_en, me gusta, modificado_en (predeterminado: modificado_en)
- sort_ascending (booleano): Ordenar en orden ascendente (predeterminado: falso)
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- custom_fields (objeto): Objeto que contiene filtros de campos personalizados
- Devoluciones: Lista de tareas coincidentes
asana_get_task
- Obtenga información detallada sobre una tarea específica
- Entrada requerida:
- task_id (cadena): El ID de la tarea a recuperar
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Información detallada de la tarea
asana_create_task
- Crear una nueva tarea en un proyecto
- Entrada requerida:
- project_id (cadena): El proyecto en el que se creará la tarea
- nombre (cadena): Nombre de la tarea
- Entrada opcional:
- notas (cadena): Descripción de la tarea
- html_notes (cadena): descripción de la tarea con formato similar a HTML
- due_on (cadena): Fecha de vencimiento en formato AAAA-MM-DD
- cesionario (cadena): cesionario (puede ser 'yo' o un ID de usuario)
- seguidores (matriz de cadenas): Matriz de ID de usuarios para agregar como seguidores
- padre (cadena): el ID de la tarea principal bajo la cual se establecerá esta tarea
- proyectos (matriz de cadenas): Matriz de ID de proyectos a los que agregar esta tarea
- resource_subtype (cadena): el tipo de tarea (tarea predeterminada o hito)
- custom_fields (objeto): Objeto que asigna cadenas GID de campos personalizados a sus valores
- Devuelve: Información de la tarea creada
asana_get_task_stories
- Obtener comentarios e historias para una tarea específica
- Entrada requerida:
- task_id (cadena): El ID de la tarea para la que se obtendrán historias
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Lista de historias/comentarios de tareas
asana_update_task
- Actualizar los detalles de una tarea existente
- Entrada requerida:
- task_id (cadena): El ID de la tarea a actualizar
- Entrada opcional:
- nombre (cadena): Nuevo nombre para la tarea
- notas (cadena): Nueva descripción de la tarea
- due_on (cadena): Nueva fecha de vencimiento en formato AAAA-MM-DD
- cesionario (cadena): Nuevo cesionario (puede ser "yo" o un ID de usuario)
- Completado (booleano): Marcar la tarea como completada o no
- resource_subtype (cadena): el tipo de tarea (tarea predeterminada o hito)
- custom_fields (objeto): Objeto que asigna cadenas GID de campos personalizados a sus valores
- Devoluciones: Información de la tarea actualizada
asana_get_project
- Obtenga información detallada sobre un proyecto específico
- Entrada requerida:
- project_id (cadena): El ID del proyecto a recuperar
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Información detallada del proyecto
asana_get_project_task_counts
- Obtener el número de tareas en un proyecto
- Entrada requerida:
- project_id (cadena): El ID del proyecto para el que se obtendrán los recuentos de tareas
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Información del recuento de tareas
asana_get_project_sections
- Obtener secciones en un proyecto
- Entrada requerida:
- project_id (cadena): El ID del proyecto para el que se obtendrán las secciones
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Lista de secciones del proyecto
asana_create_task_story
- Crear un comentario o una historia sobre una tarea
- Entrada requerida:
- task_id (cadena): El ID de la tarea a la que se agregará la historia
- texto (cadena): El contenido de texto de la historia/comentario
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Información de la historia creada
asana_add_task_dependencies
- Establecer dependencias para una tarea
- Entrada requerida:
- task_id (cadena): El ID de la tarea a la que se agregarán dependencias
- dependencias (matriz de cadenas): Matriz de identificaciones de tareas de las que depende esta tarea
- Devoluciones: Dependencias de tareas actualizadas
asana_add_task_dependents
- Establecer dependientes para una tarea (tareas que dependen de esta tarea)
- Entrada requerida:
- task_id (cadena): El ID de la tarea a la que se agregarán dependientes
- dependientes (matriz de cadenas): Matriz de ID de tareas que dependen de esta tarea
- Devoluciones: Dependientes de tareas actualizados
asana_create_subtask
- Crear una nueva subtarea para una tarea existente
- Entrada requerida:
- parent_task_id (cadena): El ID de la tarea principal bajo la cual se creará la subtarea
- nombre (cadena): Nombre de la subtarea
- Entrada opcional:
- notas (cadena): Descripción de la subtarea
- due_on (cadena): Fecha de vencimiento en formato AAAA-MM-DD
- cesionario (cadena): cesionario (puede ser 'yo' o un ID de usuario)
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Información de la subtarea creada
asana_get_multiple_tasks_by_gid
- Obtenga información detallada sobre múltiples tareas por sus GID (máximo 25 tareas)
- Entrada requerida:
- task_ids (matriz de cadenas o cadena separada por comas): GID de tareas para recuperar (máximo 25)
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Lista de información detallada de la tarea
asana_get_project_status
- Obtenga una actualización del estado del proyecto
- Entrada requerida:
- project_status_gid (cadena): El GID del estado del proyecto a recuperar
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Información del estado del proyecto
asana_get_project_statuses
- Obtener todas las actualizaciones de estado de un proyecto
- Entrada requerida:
- project_gid (cadena): El GID del proyecto para el cual se obtendrán los estados
- Entrada opcional:
- límite (número): Resultados por página (1-100)
- desplazamiento (cadena): Token de desplazamiento de paginación
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Lista de actualizaciones del estado del proyecto
asana_create_project_status
- Crear una nueva actualización de estado para un proyecto
- Entrada requerida:
- project_gid (cadena): El GID del proyecto para el que se creará el estado
- texto (cadena): El contenido de texto de la actualización de estado
- Entrada opcional:
- color (cadena): El color del estado (verde, amarillo, rojo)
- título (cadena): el título de la actualización de estado
- html_text (cadena): texto con formato HTML para la actualización de estado
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Información del estado del proyecto creado
asana_delete_project_status
- Eliminar una actualización del estado del proyecto
- Entrada requerida:
- project_status_gid (cadena): El GID del estado del proyecto que se eliminará
- Devoluciones: Confirmación de eliminación
asana_set_parent_for_task
- Establezca el elemento principal de una tarea y posicione la subtarea dentro de las otras subtareas de ese elemento principal
- Entrada requerida:
- task_id (cadena): El ID de la tarea en la que se operará
- datos (objeto):
- padre (cadena): el nuevo padre de la tarea, o nulo si no hay padre
- Entrada opcional:
- insert_after (cadena): una subtarea del padre para insertar la tarea después, o null para insertar al principio de la lista
- insert_before (cadena): una subtarea del padre para insertar la tarea antes, o null para insertar al final de la lista
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Información de la tarea actualizada
asana_get_tasks_for_tag
- Obtener tareas para una etiqueta específica
- Entrada requerida:
- tag_gid (cadena): El GID de la etiqueta para recuperar tareas
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- opt_pretty (booleano): proporciona la respuesta en un formato 'bonito'
- límite (entero): El número de objetos que se devolverán por página. El valor debe estar entre 1 y 100.
- desplazamiento (cadena): un desplazamiento a la siguiente página devuelto por la API.
- Devuelve: Lista de tareas para la etiqueta especificada
asana_get_tags_for_workspace
- Obtener etiquetas en un espacio de trabajo
- Entrada requerida:
- workspace_gid (cadena): identificador único global para el espacio de trabajo o la organización
- Entrada opcional:
- Límite (entero): Resultados por página. El número de objetos que se devolverán por página. El valor debe estar entre 1 y 100.
- offset (cadena): Token de desplazamiento. Un desplazamiento a la siguiente página devuelto por la API.
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Lista de etiquetas en el espacio de trabajo
Indicaciones
task-summary
- Obtenga un resumen y una actualización del estado de una tarea en función de sus notas, campos personalizados y comentarios
- Entrada requerida:
- task_id (cadena): El ID de la tarea para la que se obtendrá el resumen
- Devoluciones: Un mensaje detallado con instrucciones para generar un resumen de la tarea
task-completeness
- Analizar si una descripción de tarea contiene todos los detalles necesarios para su finalización.
- Entrada requerida:
- task_id (cadena): El ID de la tarea o URL a analizar
- Devoluciones: Un mensaje detallado con instrucciones para analizar la completitud de la tarea.
create-task
- Crear una nueva tarea con detalles específicos
- Entrada requerida:
- project_name (cadena): El nombre del proyecto de Asana donde se debe crear la tarea
- título (cadena): el título de la tarea
- Entrada opcional:
- notas (cadena): Notas o descripción de la tarea
- due_date (cadena): Fecha de vencimiento de la tarea (formato AAAA-MM-DD)
- Devoluciones: Un mensaje detallado con instrucciones para crear una tarea completa
Recursos
- 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 de URI:
asana://workspace/{workspace_gid}
- Devuelve: objeto JSON con detalles del espacio de trabajo que incluyen:
name
: Nombre del espacio de trabajo (cadena)id
: ID global del espacio de trabajo (cadena)type
: Tipo de recurso (cadena)is_organization
: si el espacio de trabajo es una organización (booleano)email_domains
: Lista de dominios de correo electrónico asociados con el espacio de trabajo (string[])
- Tipo MIME:
application/json
- Proyectos -
asana://project/{project_gid}
- Recurso de plantilla para recuperar detalles del proyecto por GID
- Formato URI:
asana://project/{project_gid}
- Devuelve: objeto JSON con detalles del proyecto que incluyen:
name
: Nombre del proyecto (cadena)id
proyecto (cadena)type
: Tipo de recurso (cadena)archived
: si el proyecto está archivado (booleano)public
: si el proyecto es público (booleano)notes
: Descripción/notas del proyecto (cadena)color
: Color del proyecto (cadena)default_view
: Tipo de vista predeterminado (cadena)due_date
,due_on
,start_on
: Información de la fecha del proyecto (cadena)workspace
: objeto que contiene información del espacio de trabajoteam
: Objeto que contiene información del equiposections
: Matriz de objetos de sección en el proyectocustom_fields
: Matriz de definiciones de campos personalizados para el proyecto
- Tipo MIME:
application/json
Configuración
- Crear una cuenta de Asana :
- Visita la Asana .
- Haga clic en "Registrarse".
- Recuperar el token de acceso de Asana :
- Puedes generar un token de acceso personal desde la consola para desarrolladores de Asana.
- Más detalles aquí: https://developers.asana.com/docs/personal-access-token
- Configurar Claude Desktop : agregue lo siguiente a su
claude_desktop_config.json
:Copy
Si deseas instalar la versión beta (aún no publicada), puedes usar:
@roychri/mcp-server-asana@beta
Puede encontrar la versión beta actual, si la hay, en:
- https://www.npmjs.com/package/@roychri/mcp-server-asana?activeTab=versions
npm dist-tag ls @roychri/mcp-server-asana
Solución de problemas
Si encuentra errores de permisos:
- Asegúrate de que el plan de Asana que tienes permita el acceso a la API
- Confirme que el token de acceso y la configuración estén configurados correctamente en
claude_desktop_config.json
.
Contribuyendo
Clona este repositorio y comienza a hackear.
Pruébelo localmente con el Inspector MCP
Si desea probar sus cambios, puede utilizar el Inspector MCP de la siguiente manera:
Esto expondrá al cliente al puerto 5173
y al servidor al puerto 3000
.
Si esos puertos ya están siendo utilizados por otra cosa, puedes utilizar:
Licencia
Este servidor MCP cuenta con la licencia MIT. Esto significa que puede usar, modificar y distribuir el software libremente, sujeto a los términos y condiciones de la licencia MIT. Para más detalles, consulte el archivo de LICENCIA en el repositorio del proyecto.
You must be authenticated.
Tools
Realice operaciones de Asana desde un cliente MCP como la aplicación de escritorio Claude de Anthropic y muchas más.