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
Provides comprehensive access to Asana's task management API, enabling users to list workspaces, search and manage projects, create/update tasks, work with task dependencies, manage subtasks, add comments, organize sections, handle custom fields, and retrieve project hierarchies.
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:
Trabajar con campos personalizados
Al actualizar o crear tareas con campos personalizados, utilice el siguiente formato:
El formato del valor varía según el tipo de campo:
- Campos de enumeración : utilice el
enum_option.gid
de la opción (NO el nombre para mostrar) - Campos de texto : utiliza una cadena
- Campos numéricos : utilice un número
- Campos de fecha : utilice una cadena en formato AAAA-MM-DD
- Campos de enumeración múltiple : utilice una matriz de GID de opciones de enumeración
Cómo encontrar GID de campos personalizados
Para encontrar los GID de los campos personalizados y sus opciones de enumeración:
- Utilice
asana_get_task
con el parámetroopt_fields
establecido para incluir campos personalizados:Copy - En la respuesta, busque la matriz
custom_fields
. Cada campo personalizado tendrá:gid
: El identificador único para el campo personalizadoname
: el nombre para mostrar del campo personalizadoresource_subtype
: el tipo de campo personalizado (texto, número, enumeración, etc.)- Para los campos de enumeración, examine la matriz
enum_options
para encontrar el GID de cada opción
Ejemplo: Actualización de un campo personalizado de enumeración
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
- Nota: Si se configura DEFAULT_WORKSPACE_ID, esto solo devolverá ese espacio de trabajo en lugar de obtener todos los espacios de trabajo.
asana_search_projects
- Buscar proyectos en Asana usando la coincidencia de patrones de nombres
- Entrada requerida:
- name_pattern (cadena): Patrón de expresión regular para que coincida con los nombres de los proyectos
- Entrada opcional:
- espacio de trabajo (cadena): el espacio de trabajo donde buscar (opcional si se establece DEFAULT_WORKSPACE_ID)
- equipo (cadena): El equipo por el que se filtrarán los proyectos
- archivado (booleano): solo devuelve proyectos archivados (valor predeterminado: falso)
- 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 proyectos coincidentes
- Nota: Se debe especificar el espacio de trabajo o el equipo si DEFAULT_WORKSPACE_ID no está configurado
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 donde buscar (opcional si se establece DEFAULT_WORKSPACE_ID)
- 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_add_followers_to_task
- Agregar seguidores a una tarea
- Entrada requerida:
- task_id (cadena): El ID de la tarea a la que se agregarán seguidores
- seguidores (matriz de cadenas): Matriz de identificaciones de usuarios para agregar como seguidores a la tarea
- Devoluciones: Información de la tarea actualizada
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 de 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á
- 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 (opcional si se configura DEFAULT_WORKSPACE_ID)
- 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
asana_create_section_for_project
- Crear una nueva sección en un proyecto
- Entrada requerida:
- project_id (cadena): El ID del proyecto para crear la sección en
- nombre (cadena): Nombre de la sección a crear
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Información de la sección creada
asana_add_task_to_section
- Agregar una tarea a una sección específica de un proyecto
- Entrada requerida:
- section_id (cadena): El ID de la sección a la que se agregará la tarea
- task_id (cadena): El ID de la tarea que se agregará a la sección
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Resultado de la operación
asana_create_project
- Crear un nuevo proyecto en un espacio de trabajo
- Entrada requerida:
- workspace_id (cadena): El ID del espacio de trabajo donde se creará el proyecto (opcional si se configura DEFAULT_WORKSPACE_ID)
- nombre (cadena): Nombre del proyecto a crear
- team_id (cadena): REQUERIDO para espacios de trabajo de la organización: el GID del equipo con el que compartir el proyecto
- Entrada opcional:
- público (booleano): si el proyecto es público para la organización (valor predeterminado: falso)
- archivado (booleano): si el proyecto está archivado (predeterminado: falso)
- color (cadena): Color del proyecto (verde claro, naranja claro, azul claro, etc.)
- diseño (cadena): el diseño del proyecto (tablero, lista, cronograma o calendario)
- default_view (cadena): La vista predeterminada del proyecto (lista, tablero, calendario, línea de tiempo o Gantt)
- due_on (cadena): La fecha en la que debe entregarse este proyecto (formato AAAA-MM-DD)
- start_on (cadena): El día en que comienza el trabajo para este proyecto (formato AAAA-MM-DD)
- notas (cadena): información textual de formato libre asociada con el proyecto
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Información del proyecto creado
asana_get_teams_for_user
- Obtener equipos a los que el usuario tiene acceso
- Entrada requerida:
- user_gid (cadena): El GID del usuario para obtener los equipos. Use "me" para obtener los equipos del usuario actual.
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devuelve: Lista de equipos a los que el usuario tiene acceso
asana_get_teams_for_workspace
- Reúne a los equipos en un espacio de trabajo
- Entrada requerida:
- workspace_gid (cadena): el GID del espacio de trabajo para el que se obtendrán los equipos (opcional si se configura DEFAULT_WORKSPACE_ID)
- Entrada opcional:
- opt_fields (cadena): lista separada por comas de campos opcionales para incluir
- Devoluciones: Lista de equipos en el espacio de trabajo
asana_list_workspace_users
- Obtener usuarios en un espacio de trabajo
- Entrada requerida:
- workspace_id (cadena): El ID del espacio de trabajo para el que se obtendrán los usuarios (opcional si se configura DEFAULT_WORKSPACE_ID)
- Entrada opcional:
- límite (entero): 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 (predeterminado: "nombre, correo electrónico")
- auto_paginate (booleano): si se deben buscar automáticamente todas las páginas
- max_pages (entero): número máximo de páginas a obtener cuando auto_paginate es verdadero
- Devuelve: Lista de usuarios en el espacio de trabajo
asana_get_project_hierarchy
- Obtenga la estructura jerárquica completa de un proyecto de Asana, incluidas secciones, tareas y subtareas
- Entrada requerida:
- project_id (cadena): El ID del proyecto para el cual se obtendrá la jerarquía
- Entrada opcional:
- include_completed_tasks (booleano): incluye tareas completadas (valor predeterminado: falso)
- include_subtasks (booleano): incluye subtareas para cada tarea (valor predeterminado: verdadero)
- include_completed_subtasks (booleano): incluye subtareas completadas (predeterminado: sigue a include_completed_tasks)
- max_subtask_depth (número): Profundidad máxima de subtareas a recuperar (predeterminado: 1)
- opt_fields_tasks (cadena): campos opcionales para tareas
- opt_fields_subtasks (cadena): campos opcionales para subtareas
- opt_fields_sections (cadena): campos opcionales para secciones
- opt_fields_project (cadena): campos opcionales para el proyecto
- límite (número): Máximo de resultados por página (1-100)
- desplazamiento (cadena): token de paginación de la respuesta anterior
- auto_paginate (booleano): si se deben buscar automáticamente todas las páginas
- max_pages (número): Máximo de páginas a obtener cuando auto_paginate es verdadero
- Devoluciones: Estructura jerárquica del proyecto con estadísticas
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
Recursos
Ninguno
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
- Opcional: Obtenga su ID de espacio de trabajo predeterminado :
- Si trabaja principalmente con un espacio de trabajo, puede establecer un ID de espacio de trabajo predeterminado.
- Utilice la API de Asana para enumerar sus espacios de trabajo o vaya a su espacio de trabajo en Asana y copie el ID de la URL.
- Cuando establece un ID de espacio de trabajo predeterminado, no necesitará especificar el espacio de trabajo para cada llamada API.
- Sin un espacio de trabajo predeterminado, el servidor llamará a
asana_list_workspaces
para obtener la lista de espacios de trabajo disponibles.
- Configurar Claude Desktop : agregue lo siguiente a su
claude_desktop_config.json
:Copy
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.
This server cannot be installed
Esta implementación de servidor permite que los asistentes de IA interactúen con la API de Asana, lo que permite a los usuarios administrar tareas, proyectos, espacios de trabajo y comentarios a través de solicitudes en lenguaje natural.