Skip to main content
Glama
by cristip73

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

npm-версия

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

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

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

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

Пример:

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

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

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

Related MCP server: WordPress MCP Server

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

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

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 в репозитории проекта.

Latest Blog Posts

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