Skip to main content
Glama

MCP Server for Asana

by cristip73

MCP-сервер для Asana

Эта реализация сервера Model Context Protocol Asana позволяет вам взаимодействовать с API Asana из клиента MCP, например, с приложением Claude Desktop от Anthropic и многими другими.

Более подробная информация о MCP здесь:

Использование

В инструменте ИИ по вашему выбору (например, Claude Desktop) спросите что-нибудь о задачах, проектах, рабочих пространствах и/или комментариях asana. Упоминание слова «asana» увеличит вероятность того, что LLM выберет правильный инструмент.

Пример:

Сколько незавершенных задач по асанам у нас в проекте «Спринт 30»?

Другой пример:

Пример рабочего стола Клода

Работа с пользовательскими полями

При обновлении или создании задач с пользовательскими полями используйте следующий формат:

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

Формат значения зависит от типа поля:

  • Поля перечисления : используйте enum_option.gid опции (НЕ отображаемое имя)
  • Текстовые поля : используйте строку
  • Числовые поля : используйте число
  • Поля даты : используйте строку в формате ГГГГ-ММ-ДД.
  • Поля с несколькими перечислениями : используйте массив идентификаторов GID опций перечисления

Поиск GID пользовательских полей

Чтобы найти GID пользовательских полей и их параметры перечисления:

  1. Используйте asana_get_task с набором параметров opt_fields для включения пользовательских полей:
    asana_get_task({ task_id: "TASK_ID", opt_fields: "custom_fields,custom_fields.enum_options" })
  2. В ответе найдите массив custom_fields . Каждое пользовательское поле будет иметь:
    • gid : уникальный идентификатор для настраиваемого поля.
    • name : Отображаемое имя настраиваемого поля.
    • resource_subtype : Тип настраиваемого поля (текст, число, перечисление и т. д.)
    • Для полей перечисления проверьте массив enum_options , чтобы найти GID каждого параметра.

Пример: обновление пользовательского поля Enum

// 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 } });

Инструменты

  1. asana_list_workspaces
    • Список всех доступных рабочих пространств в Asana
    • Дополнительный ввод:
      • opt_fields (строка): разделенный запятыми список необязательных полей для включения
    • Возвращает: Список рабочих пространств
    • Примечание: если задано DEFAULT_WORKSPACE_ID, будет возвращена только эта рабочая область вместо извлечения всех рабочих областей.
  2. asana_search_projects
    • Поиск проектов в Asana с использованием сопоставления шаблонов имен
    • Требуемые данные:
      • name_pattern (string): Шаблон регулярного выражения для сопоставления названий проектов
    • Дополнительный ввод:
      • workspace (строка): рабочее пространство для поиска (необязательно, если задан DEFAULT_WORKSPACE_ID)
      • команда (строка): команда, по которой нужно отфильтровать проекты.
      • archived (boolean): возвращать только архивированные проекты (по умолчанию: false)
      • ограничение (число): Результаты на страницу (1-100)
      • смещение (строка): токен смещения пагинации
      • opt_fields (строка): разделенный запятыми список необязательных полей для включения
    • Возвращает: Список соответствующих проектов
    • Примечание: необходимо указать либо рабочее пространство, либо команду, если DEFAULT_WORKSPACE_ID не задан.
  3. asana_search_tasks
    • Поиск задач в рабочем пространстве с расширенными возможностями фильтрации
    • Требуемые данные:
      • workspace (строка): рабочее пространство для поиска (необязательно, если задан DEFAULT_WORKSPACE_ID)
    • Дополнительный ввод:
      • текст (строка): Текст для поиска в названиях и описаниях задач.
      • resource_subtype (строка): Фильтр по подтипу задачи (например, веха)
      • завершено (логическое значение): Фильтр для завершенных задач
      • is_subtask (boolean): Фильтр для подзадач
      • has_attachment (boolean): Фильтр для задач с вложениями
      • is_blocked (boolean): Фильтр для задач с неполными зависимостями
      • is_blocking (логическое значение): Фильтр для незавершенных задач с зависимостями
      • уполномоченный, проекты, разделы, теги, команды и многие другие расширенные фильтры
      • sort_by (строка): Сортировать по дате выполнения, создано_в, завершено_в, нравится, изменено_в (по умолчанию: изменено_в)
      • sort_ascending (boolean): сортировка по возрастанию (по умолчанию: false)
      • opt_fields (строка): разделенный запятыми список необязательных полей для включения
      • custom_fields (объект): Объект, содержащий фильтры настраиваемых полей
    • Возвращает: Список соответствующих задач
  4. asana_get_task
    • Получите подробную информацию о конкретной задаче
    • Требуемые данные:
      • task_id (строка): идентификатор задачи для извлечения
    • Дополнительный ввод:
      • opt_fields (строка): разделенный запятыми список необязательных полей для включения
    • Возвращает: Подробную информацию о задаче
  5. asana_create_task
    • Создать новую задачу в проекте
    • Требуемые данные:
      • project_id (string): Проект, в котором будет создана задача
      • имя (строка): Название задачи
    • Дополнительный ввод:
      • примечания (строка): Описание задачи
      • html_notes (строка): описание задачи в формате HTML
      • due_on (строка): дата выполнения в формате ГГГГ-ММ-ДД
      • получатель (строка): получатель (может быть «я» или идентификатор пользователя)
      • Подписчики (массив строк): Массив идентификаторов пользователей для добавления в качестве подписчиков.
      • parent (строка): идентификатор родительской задачи, под которой следует установить данную задачу.
      • проекты (массив строк): Массив идентификаторов проектов, в которые нужно добавить эту задачу
      • resource_subtype (string): Тип задачи (default_task или веха)
      • custom_fields (объект): Объект, сопоставляющий строки GID настраиваемых полей с их значениями
    • Возвращает: информацию о созданной задаче
  6. asana_get_task_stories
    • Получайте комментарии и истории по конкретной задаче
    • Требуемые данные:
      • task_id (строка): идентификатор задачи, для которой необходимо получить истории
    • Дополнительный ввод:
      • opt_fields (строка): разделенный запятыми список необязательных полей для включения
    • Возвращает: Список историй/комментариев к задачам
  7. asana_update_task
    • Обновить данные существующей задачи
    • Требуемые данные:
      • task_id (строка): идентификатор задачи для обновления.
    • Дополнительный ввод:
      • имя (строка): Новое имя для задачи
      • заметки (строка): Новое описание задачи
      • due_on (строка): Новая дата выполнения в формате ГГГГ-ММ-ДД
      • получатель (строка): Новый получатель (может быть «я» или идентификатор пользователя)
      • завершено (логическое значение): отметить задачу как завершенную или нет
      • resource_subtype (string): Тип задачи (default_task или веха)
      • custom_fields (объект): Объект, сопоставляющий строки GID настраиваемых полей с их значениями
    • Возврат: обновленная информация о задаче
  8. asana_get_project
    • Получите подробную информацию о конкретном проекте
    • Требуемые данные:
      • project_id (строка): идентификатор проекта для извлечения
    • Дополнительный ввод:
      • opt_fields (строка): разделенный запятыми список необязательных полей для включения
    • Возврат: Подробная информация о проекте
  9. asana_get_project_task_counts
    • Получить количество задач в проекте
    • Требуемые данные:
      • project_id (строка): идентификатор проекта, для которого необходимо получить количество задач.
    • Дополнительный ввод:
      • opt_fields (строка): разделенный запятыми список необязательных полей для включения
    • Возвращает: информацию о количестве задач
  10. asana_get_project_sections
  • Получить разделы в проекте
  • Требуемые данные:
    • project_id (строка): идентификатор проекта, для которого необходимо получить разделы
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: Список разделов проекта
  1. asana_create_task_story
  • Создайте комментарий или историю по задаче
  • Требуемые данные:
    • task_id (строка): идентификатор задачи, в которую нужно добавить историю.
    • текст (строка): Текстовое содержание истории/комментария.
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: Созданную информацию о сюжете
  1. asana_add_task_dependencies
  • Установить зависимости для задачи
  • Требуемые данные:
    • task_id (строка): идентификатор задачи, к которой нужно добавить зависимости.
    • зависимости (массив строк): Массив идентификаторов задач, от которых зависит эта задача
  • Возвращает: обновленные зависимости задач.
  1. asana_add_task_dependents
  • Установить зависимости для задачи (задачи, которые зависят от этой задачи)
  • Требуемые данные:
    • task_id (строка): идентификатор задачи, к которой нужно добавить иждивенцев.
    • dependents (массив строк): Массив идентификаторов задач, которые зависят от этой задачи.
  • Возвращает: обновленные зависимые задачи
  1. asana_create_subtask
  • Создать новую подзадачу для существующей задачи
  • Требуемые данные:
    • parent_task_id (строка): идентификатор родительской задачи для создания подзадачи
    • имя (строка): Имя подзадачи
  • Дополнительный ввод:
    • примечания (строка): Описание подзадачи
    • due_on (строка): дата выполнения в формате ГГГГ-ММ-ДД
    • получатель (строка): получатель (может быть «я» или идентификатор пользователя)
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: Созданную информацию о подзадаче
  1. asana_add_followers_to_task
  • Добавить подписчиков к задаче
  • Требуемые данные:
    • task_id (строка): идентификатор задачи, к которой нужно добавить подписчиков.
    • Подписчики (массив строк): Массив идентификаторов пользователей для добавления в качестве подписчиков к задаче.
  • Возврат: обновленная информация о задаче
  1. asana_get_multiple_tasks_by_gid
  • Получите подробную информацию о нескольких задачах по их GID (максимум 25 задач)
  • Требуемые данные:
    • task_ids (массив строк или строка, разделенная запятыми): GID задач для извлечения (макс. 25)
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: список подробной информации о задаче.
  1. asana_get_project_status
  • Получить обновление статуса проекта
  • Требуемые данные:
    • project_status_gid (строка): GID статуса проекта для извлечения
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: информацию о статусе проекта
  1. asana_get_project_statuses
  • Получить все обновления статуса проекта
  • Требуемые данные:
    • project_gid (строка): GID проекта, для которого необходимо получить статусы
  • Дополнительный ввод:
    • ограничение (число): Результаты на страницу (1-100)
    • смещение (строка): токен смещения пагинации
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: Список обновлений статуса проекта
  1. asana_create_project_status
  • Создать новое обновление статуса для проекта
  • Требуемые данные:
    • project_gid (строка): GID проекта для создания статуса
    • текст (строка): Текстовое содержание обновления статуса.
  • Дополнительный ввод:
    • цвет (строка): Цвет статуса (зеленый, желтый, красный)
    • title (string): Заголовок обновления статуса.
    • html_text (строка): текст в формате HTML для обновления статуса
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: информацию о статусе созданного проекта
  1. asana_delete_project_status
  • Удалить обновление статуса проекта
  • Требуемые данные:
    • project_status_gid (строка): GID статуса проекта для удаления
  • Возврат: Подтверждение удаления
  1. asana_set_parent_for_task
  • Установите родительскую задачу и расположите подзадачу внутри других подзадач этой родительской задачи.
  • Требуемые данные:
    • task_id (строка): идентификатор задачи, над которой нужно работать.
    • parent (строка): новый родитель задачи или null, если родитель отсутствует
  • Дополнительный ввод:
    • insert_after (string): Подзадача родителя для вставки задачи после нее или null для вставки в начало списка.
    • insert_before (string): Подзадача родителя для вставки задачи перед ней или null для вставки в конец списка.
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возврат: обновленная информация о задаче
  1. asana_get_tasks_for_tag
  • Получить задачи по определенному тегу
  • Требуемые данные:
    • tag_gid (строка): GID тега для извлечения задач
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
    • opt_pretty (boolean): предоставляет ответ в «красивом» формате.
    • limit (integer): Количество объектов, возвращаемых на страницу. Значение должно быть от 1 до 100.
    • смещение (строка): смещение к следующей странице, возвращаемое API.
  • Возвращает: Список задач для указанного тега.
  1. asana_get_tags_for_workspace
  • Получить теги в рабочем пространстве
  • Требуемые данные:
    • workspace_gid (строка): глобальный уникальный идентификатор рабочей области или организации (необязательно, если задан DEFAULT_WORKSPACE_ID)
  • Дополнительный ввод:
    • limit (integer): Результаты на страницу. Количество объектов, возвращаемых на страницу. Значение должно быть от 1 до 100.
    • offset (string): Токен смещения. Смещение к следующей странице, возвращаемое API.
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: Список тегов в рабочей области.
  1. asana_create_section_for_project
  • Создать новый раздел в проекте
  • Требуемые данные:
    • project_id (строка): идентификатор проекта для создания раздела
    • имя (строка): Имя раздела, который нужно создать
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возврат: информация о созданном разделе
  1. asana_add_task_to_section
  • Добавить задачу в определенный раздел проекта
  • Требуемые данные:
    • section_id (строка): идентификатор раздела, в который нужно добавить задачу.
    • task_id (строка): идентификатор задачи для добавления в раздел.
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возврат: Результат операции
  1. asana_create_project
  • Создайте новый проект в рабочем пространстве
  • Требуемые данные:
    • workspace_id (строка): идентификатор рабочей области для создания проекта (необязательно, если задан DEFAULT_WORKSPACE_ID)
    • имя (строка): Имя создаваемого проекта
    • team_id (строка): ОБЯЗАТЕЛЬНО для рабочих пространств организации — GID команды, с которой будет совместно использоваться проект
  • Дополнительный ввод:
    • public (boolean): является ли проект публичным для организации (по умолчанию: false)
    • archived (boolean): архивирован ли проект (по умолчанию: false)
    • цвет (строка): Цвет проекта (светло-зеленый, светло-оранжевый, светло-голубой и т. д.)
    • макет (строка): макет проекта (доска, список, временная шкала или календарь)
    • default_view (string): Вид проекта по умолчанию (список, доска, календарь, временная шкала или диаграмма Ганта)
    • due_on (строка): дата, на которую должен быть сдан этот проект (формат ГГГГ-ММ-ДД)
    • start_on (строка): День начала работы над этим проектом (формат ГГГГ-ММ-ДД)
    • примечания (строка): Текстовая информация в свободной форме, связанная с проектом.
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: Созданную информацию о проекте
  1. asana_get_teams_for_user
  • Получить команды, к которым у пользователя есть доступ
  • Требуемые данные:
    • user_gid (string): GID пользователя для получения команд. Используйте 'me', чтобы получить команды для текущего пользователя.
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: список команд, к которым у пользователя есть доступ.
  1. asana_get_teams_for_workspace
  • Объедините команды в рабочее пространство
  • Требуемые данные:
    • workspace_gid (строка): GID рабочей области, для которой необходимо получить команды (необязательно, если задано DEFAULT_WORKSPACE_ID)
  • Дополнительный ввод:
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возвращает: Список команд в рабочей области
  1. asana_list_workspace_users
  • Получите пользователей в рабочем пространстве
  • Требуемые данные:
    • workspace_id (строка): идентификатор рабочей области, для которой необходимо получить пользователей (необязательно, если задано DEFAULT_WORKSPACE_ID)
  • Дополнительный ввод:
    • ограничение (целое число): Результаты на страницу (1-100)
    • смещение (строка): токен смещения пагинации
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения (по умолчанию «имя, адрес электронной почты»)
    • auto_paginate (boolean): следует ли автоматически извлекать все страницы
    • max_pages (целое число): максимальное количество страниц для извлечения, когда auto_paginate имеет значение true
  • Возвращает: Список пользователей в рабочей области.
  1. asana_get_project_hierarchy
  • Получите полную иерархическую структуру проекта Asana, включая разделы, задачи и подзадачи.
  • Требуемые данные:
    • project_id (строка): идентификатор проекта, для которого необходимо получить иерархию
  • Дополнительный ввод:
    • include_completed_tasks (boolean): Включить завершенные задачи (по умолчанию: false)
    • include_subtasks (boolean): Включить подзадачи для каждой задачи (по умолчанию: true)
    • include_completed_subtasks (логическое значение): включить завершенные подзадачи (по умолчанию: следует за include_completed_tasks)
    • max_subtask_depth (число): максимальная глубина подзадач для извлечения (по умолчанию: 1)
    • opt_fields_tasks (строка): Необязательные поля для задач
    • opt_fields_subtasks (строка): Необязательные поля для подзадач
    • opt_fields_sections (строка): Необязательные поля для разделов
    • opt_fields_project (строка): Необязательные поля для проекта
    • ограничение (число): Максимальное количество результатов на страницу (1-100)
    • смещение (строка): токен пагинации из предыдущего ответа
    • auto_paginate (boolean): следует ли автоматически извлекать все страницы
    • max_pages (число): максимальное количество страниц для извлечения, если auto_paginate имеет значение true
  • Возврат: Иерархическая структура проекта со статистикой
  1. asana_get_attachments_for_object
  • Список вложений для определенного объекта (задачи, проекта и т. д.)
  • Требуемые данные:
    • object_gid (строка): GID объекта для извлечения вложений
  • Дополнительный ввод:
    • ограничение (число): Результаты на страницу (1-100)
    • смещение (строка): токен смещения пагинации
    • opt_fields (строка): разделенный запятыми список необязательных полей для включения
  • Возврат: Список вложений
  1. asana_upload_attachment_for_object
  • Загрузить локальный файл как вложение к задаче или другому объекту
  • Требуемые данные:
    • object_gid (строка): GID объекта, к которому следует прикрепить файл.
    • file_path (string): Путь к локальному файлу для загрузки
  • Дополнительный ввод:
    • file_name (строка): Пользовательское имя файла
    • file_type (string): MIME-тип загруженного файла
  • Возвращает: метаданные загруженного вложения.
  1. asana_download_attachment
  • Загрузить вложение в локальный каталог
  • Требуемые данные:
    • Attachment_gid (строка): GID вложения для загрузки
  • Дополнительный ввод:
    • output_dir (строка): Каталог для сохранения файла (по умолчанию: ~/downloads)
  • Возвращает: путь и тип MIME загруженного файла.

Подсказки

  1. task-summary
    • Получите сводку и обновление статуса задачи на основе ее заметок, пользовательских полей и комментариев.
    • Требуемые данные:
      • task_id (строка): идентификатор задачи, для которой необходимо получить сводку
    • Возвращает: Подробная подсказка с инструкциями по созданию сводки задачи.

Ресурсы

Никто

Настраивать

  1. Создайте учетную запись Asana :
    • Посетите Асану .
    • Нажмите «Зарегистрироваться».
  2. Получите токен доступа Asana :
  3. Необязательно: получите идентификатор рабочего пространства по умолчанию :
    • Если вы в основном работаете с одним рабочим пространством, вы можете установить идентификатор рабочего пространства по умолчанию.
    • Используйте API Asana для просмотра списка ваших рабочих пространств или перейдите в свое рабочее пространство в Asana и скопируйте идентификатор из URL-адреса.
    • При установке идентификатора рабочей области по умолчанию вам не придется указывать рабочую область для каждого вызова API.
    • Если рабочее пространство по умолчанию не задано, сервер вызовет asana_list_workspaces , чтобы получить список доступных рабочих пространств.
  4. Настройте Claude Desktop : добавьте следующее в ваш 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" } } } }

Поиск неисправностей

Если вы столкнулись с ошибками разрешений:

  1. Убедитесь, что ваш план Asana допускает доступ к API
  2. Убедитесь, что токен доступа и конфигурация правильно заданы в claude_desktop_config.json .

Внося вклад

Клонируйте этот репозиторий и начинайте взламывать.

Протестируйте локально с помощью MCP Inspector

Если вы хотите протестировать свои изменения, вы можете использовать MCP Inspector следующим образом:

npm run inspector

Это откроет клиенту доступ к порту 5173 , а серверу — к порту 3000 .

Если эти порты уже используются чем-то другим, вы можете использовать:

CLIENT_PORT=5009 SERVER_PORT=3009 npm run inspector

Лицензия

Этот сервер MCP лицензирован по лицензии MIT. Это означает, что вы можете свободно использовать, изменять и распространять программное обеспечение в соответствии с условиями лицензии MIT. Для получения более подробной информации см. файл LICENSE в репозитории проекта.

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

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.

Эта реализация сервера позволяет помощникам на базе искусственного интеллекта взаимодействовать с API Asana, что позволяет пользователям управлять задачами, проектами, рабочими пространствами и комментариями с помощью запросов на естественном языке.

  1. Использование
    1. Работа с пользовательскими полями
      1. Поиск GID пользовательских полей
      2. Пример: обновление пользовательского поля Enum
    2. Инструменты
      1. Подсказки
        1. Ресурсы
          1. Настраивать
            1. Поиск неисправностей
              1. Внося вклад
                1. Протестируйте локально с помощью MCP Inspector
              2. Лицензия

                Related MCP Servers

                • A
                  security
                  A
                  license
                  A
                  quality
                  An enhanced Model Context Protocol server that enables AI assistants to interact with ClickUp workspaces, supporting task relationships, comments, checklists, and workspace management through natural language.
                  Last updated -
                  40
                  343
                  TypeScript
                  MIT License
                • A
                  security
                  A
                  license
                  A
                  quality
                  A server that enhances AI assistants with the ability to update your JSON Resume by analyzing your coding projects, automatically extracting skills and generating professional descriptions.
                  Last updated -
                  3
                  32
                  39
                  TypeScript
                  The Unlicense
                  • Apple
                  • Linux
                • -
                  security
                  F
                  license
                  -
                  quality
                  A server that connects AI coding assistants like Cursor and Cline to Apifox API definitions, allowing developers to implement API interfaces through natural language commands.
                  Last updated -
                  832
                  1
                  • Apple
                  • Linux
                • -
                  security
                  F
                  license
                  -
                  quality
                  Enables AI assistants to interact with Metabase, providing access to dashboards, questions, databases, and tools for executing queries and viewing data through natural language.
                  Last updated -
                  JavaScript
                  • Apple

                View all related MCP servers

                MCP directory API

                We provide all the information about MCP servers via our MCP API.

                curl -X GET 'https://glama.ai/api/mcp/v1/servers/cristip73/mcp-server-asana'

                If you have feedback or need assistance with the MCP directory API, please join our Discord server