MCP Server for Asana

by cristip73
Verified

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í:

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:

asana_update_task({ task_id: "TASK_ID", custom_fields: { "custom_field_gid": value // The value format depends on the field type } })

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:

  1. Utilice asana_get_task con el parámetro opt_fields establecido para incluir campos personalizados:
    asana_get_task({ task_id: "TASK_ID", opt_fields: "custom_fields,custom_fields.enum_options" })
  2. En la respuesta, busque la matriz custom_fields . Cada campo personalizado tendrá:
    • gid : El identificador único para el campo personalizado
    • name : el nombre para mostrar del campo personalizado
    • resource_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

// First, get the task with custom fields const taskDetails = asana_get_task({ task_id: "1234567890", opt_fields: "custom_fields,custom_fields.enum_options" }); // Find the custom field GID and enum option GID const priorityFieldGid = "11112222"; // From taskDetails.custom_fields const highPriorityOptionGid = "33334444"; // From the enum_options of the priority field // Update the task with the custom field asana_update_task({ task_id: "1234567890", custom_fields: { [priorityFieldGid]: highPriorityOptionGid } });

Herramientas

  1. 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.
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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

  1. 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

  1. Crear una cuenta de Asana :
    • Visita la Asana .
    • Haga clic en "Registrarse".
  2. Recuperar el token de acceso de Asana :
  3. 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.
  4. Configurar Claude Desktop : agregue lo siguiente a su claude_desktop_config.json :
    { "mcpServers": { "asana": { "command": "npx", "args": ["-y", "@cristip73/mcp-server-asana"], "env": { "ASANA_ACCESS_TOKEN": "your-asana-access-token", "DEFAULT_WORKSPACE_ID": "your-default-workspace-id" } } } }

Solución de problemas

Si encuentra errores de permisos:

  1. Asegúrate de que el plan de Asana que tienes permita el acceso a la API
  2. 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:

npm run inspector

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:

CLIENT_PORT=5009 SERVER_PORT=3009 npm run inspector

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.

-
security - not tested
A
license - permissive license
-
quality - not tested

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.

  1. Usage
    1. Working with Custom Fields
      1. Finding Custom Field GIDs
      2. Example: Updating an Enum Custom Field
    2. Tools
      1. Prompts
        1. Resources
          1. Setup
            1. Troubleshooting
              1. Contributing
                1. Test it locally with the MCP Inspector
              2. License
                ID: vg6rjy3odo