MCP-сервер для Asana
Эта реализация сервера Model Context Protocol Asana позволяет вам взаимодействовать с API Asana из клиента MCP, например, с приложением Claude Desktop от Anthropic и многими другими.
Более подробная информация о MCP здесь:
Переменные среды
ASANA_ACCESS_TOKEN: (обязательно) Ваш токен доступа AsanaREAD_ONLY_MODE: (Необязательно) Установите значение «true», чтобы отключить все операции записи. В этом режиме:Инструменты, изменяющие данные Asana (создание, обновление, удаление), будут отключены.
Запрос
create-taskбудет отключен.Будут доступны только операции чтения. Это полезно для тестирования или когда вы хотите убедиться, что в ваше рабочее пространство Asana нельзя внести никаких изменений.
Related MCP server: A2A MCP Server
Использование
В инструменте ИИ по вашему выбору (например, Claude Desktop) спросите что-нибудь о задачах, проектах, рабочих пространствах и/или комментариях asana. Упоминание слова «asana» увеличит вероятность того, что LLM выберет правильный инструмент.
Пример:
Сколько незавершенных задач по асанам у нас в проекте «Спринт 30»?
Другой пример:

Инструменты
asana_list_workspacesСписок всех доступных рабочих пространств в Asana
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список рабочих пространств
asana_search_projectsПоиск проектов в Asana с использованием сопоставления шаблонов имен
Требуемые данные:
workspace (строка): рабочее пространство для поиска.
name_pattern (string): Шаблон регулярного выражения для сопоставления названий проектов
Дополнительный ввод:
archived (boolean): возвращать только архивированные проекты (по умолчанию: false)
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список соответствующих проектов
asana_search_tasksПоиск задач в рабочем пространстве с расширенными возможностями фильтрации
Требуемые данные:
workspace (строка): рабочее пространство для поиска.
Дополнительный ввод:
текст (строка): Текст для поиска в названиях и описаниях задач.
resource_subtype (строка): Фильтр по подтипу задачи (например, веха)
завершено (логическое значение): Фильтр для завершенных задач
is_subtask (boolean): Фильтр для подзадач
has_attachment (boolean): Фильтр для задач с вложениями
is_blocked (boolean): Фильтр для задач с неполными зависимостями
is_blocking (логическое значение): Фильтр для незавершенных задач с зависимостями
уполномоченный, проекты, разделы, теги, команды и многие другие расширенные фильтры
sort_by (строка): Сортировать по дате выполнения, создано_в, завершено_в, нравится, изменено_в (по умолчанию: изменено_в)
sort_ascending (boolean): сортировка по возрастанию (по умолчанию: false)
opt_fields (строка): разделенный запятыми список необязательных полей для включения
custom_fields (объект): Объект, содержащий фильтры настраиваемых полей
Возвращает: Список соответствующих задач
asana_get_taskПолучите подробную информацию о конкретной задаче
Требуемые данные:
task_id (строка): идентификатор задачи для извлечения
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Подробную информацию о задаче
asana_create_taskСоздать новую задачу в проекте
Требуемые данные:
project_id (string): Проект, в котором будет создана задача
имя (строка): Название задачи
Дополнительный ввод:
примечания (строка): Описание задачи
html_notes (строка): описание задачи в формате HTML
due_on (строка): дата выполнения в формате ГГГГ-ММ-ДД
получатель (строка): получатель (может быть «я» или идентификатор пользователя)
Подписчики (массив строк): Массив идентификаторов пользователей для добавления в качестве подписчиков.
parent (строка): идентификатор родительской задачи, под которой следует установить данную задачу.
проекты (массив строк): Массив идентификаторов проектов, в которые нужно добавить эту задачу
resource_subtype (string): Тип задачи (default_task или веха)
custom_fields (объект): Объект, сопоставляющий строки GID настраиваемых полей с их значениями
Возвращает: информацию о созданной задаче
asana_get_task_storiesПолучайте комментарии и истории по конкретной задаче
Требуемые данные:
task_id (строка): идентификатор задачи, для которой необходимо получить истории
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список историй/комментариев к задачам
asana_update_taskОбновить данные существующей задачи
Требуемые данные:
task_id (строка): идентификатор задачи для обновления.
Дополнительный ввод:
имя (строка): Новое имя для задачи
заметки (строка): Новое описание задачи
due_on (строка): Новая дата выполнения в формате ГГГГ-ММ-ДД
получатель (строка): Новый получатель (может быть «я» или идентификатор пользователя)
завершено (логическое значение): отметить задачу как завершенную или нет
resource_subtype (string): Тип задачи (default_task или веха)
custom_fields (объект): Объект, сопоставляющий строки GID настраиваемых полей с их значениями
Возврат: обновленная информация о задаче
asana_get_projectПолучите подробную информацию о конкретном проекте
Требуемые данные:
project_id (строка): идентификатор проекта для извлечения
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возврат: Подробная информация о проекте
asana_get_project_task_countsПолучить количество задач в проекте
Требуемые данные:
project_id (строка): идентификатор проекта, для которого необходимо получить количество задач.
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: информацию о количестве задач
asana_get_project_sections
Получить разделы в проекте
Требуемые данные:
project_id (строка): идентификатор проекта, для которого необходимо получить разделы
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список разделов проекта
asana_create_task_story
Создайте комментарий или историю по задаче
Требуемые данные:
task_id (строка): идентификатор задачи, в которую нужно добавить историю.
текст (строка): Текстовое содержание истории/комментария.
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Созданную информацию о сюжете
asana_add_task_dependencies
Установить зависимости для задачи
Требуемые данные:
task_id (строка): идентификатор задачи, к которой нужно добавить зависимости.
зависимости (массив строк): Массив идентификаторов задач, от которых зависит эта задача
Возвращает: обновленные зависимости задач.
asana_add_task_dependents
Установить зависимости для задачи (задачи, которые зависят от этой задачи)
Требуемые данные:
task_id (строка): идентификатор задачи, к которой нужно добавить иждивенцев.
dependents (массив строк): Массив идентификаторов задач, которые зависят от этой задачи.
Возвращает: обновленные зависимые задачи
asana_create_subtask
Создать новую подзадачу для существующей задачи
Требуемые данные:
parent_task_id (строка): идентификатор родительской задачи для создания подзадачи
имя (строка): Имя подзадачи
Дополнительный ввод:
примечания (строка): Описание подзадачи
due_on (строка): дата выполнения в формате ГГГГ-ММ-ДД
получатель (строка): получатель (может быть «я» или идентификатор пользователя)
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Созданную информацию о подзадаче
asana_get_multiple_tasks_by_gid
Получите подробную информацию о нескольких задачах по их GID (максимум 25 задач)
Требуемые данные:
task_ids (массив строк или строка, разделенная запятыми): GID задач для извлечения (макс. 25)
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: список подробной информации о задаче.
asana_get_project_status
Получить обновление статуса проекта
Требуемые данные:
project_status_gid (строка): GID статуса проекта для извлечения
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: информацию о статусе проекта
asana_get_project_statuses
Получить все обновления статуса проекта
Требуемые данные:
project_gid (строка): GID проекта, для которого необходимо получить статусы
Дополнительный ввод:
ограничение (число): Результаты на страницу (1-100)
смещение (строка): токен смещения пагинации
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список обновлений статуса проекта
asana_create_project_status
Создать новое обновление статуса для проекта
Требуемые данные:
project_gid (строка): GID проекта для создания статуса
текст (строка): Текстовое содержание обновления статуса.
Дополнительный ввод:
цвет (строка): Цвет статуса (зеленый, желтый, красный)
title (string): Заголовок обновления статуса.
html_text (строка): текст в формате HTML для обновления статуса
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: информацию о статусе созданного проекта
asana_delete_project_status
Удалить обновление статуса проекта
Требуемые данные:
project_status_gid (строка): GID статуса проекта для удаления
Возврат: Подтверждение удаления
asana_set_parent_for_task
Установите родительскую задачу и расположите подзадачу внутри других подзадач этой родительской задачи.
Требуемые данные:
task_id (строка): идентификатор задачи, над которой нужно работать.
данные (объект):
parent (строка): новый родитель задачи или null, если родитель отсутствует
Дополнительный ввод:
insert_after (string): Подзадача родителя для вставки задачи после нее или null для вставки в начало списка.
insert_before (string): Подзадача родителя для вставки задачи перед ней или null для вставки в конец списка.
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возврат: обновленная информация о задаче
asana_get_tasks_for_tag
Получить задачи по определенному тегу
Требуемые данные:
tag_gid (строка): GID тега для извлечения задач
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
opt_pretty (boolean): предоставляет ответ в «красивом» формате.
limit (integer): Количество объектов, возвращаемых на страницу. Значение должно быть от 1 до 100.
смещение (строка): смещение к следующей странице, возвращаемое API.
Возвращает: Список задач для указанного тега.
asana_get_tags_for_workspace
Получить теги в рабочем пространстве
Требуемые данные:
workspace_gid (строка): Глобальный уникальный идентификатор рабочего пространства или организации.
Дополнительный ввод:
limit (integer): Результаты на страницу. Количество объектов, возвращаемых на страницу. Значение должно быть от 1 до 100.
offset (string): Токен смещения. Смещение к следующей странице, возвращаемое API.
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список тегов в рабочей области.
Подсказки
task-summaryПолучите сводку и обновление статуса задачи на основе ее заметок, пользовательских полей и комментариев.
Требуемые данные:
task_id (строка): идентификатор задачи, для которой необходимо получить сводку
Возвращает: Подробная подсказка с инструкциями по созданию сводки задачи.
task-completenessПроанализируйте, содержит ли описание задачи все необходимые детали для ее выполнения.
Требуемые данные:
task_id (строка): идентификатор задачи или URL для анализа.
Возвращает: Подробная подсказка с инструкциями по анализу выполнения задачи.
create-taskСоздайте новую задачу с указанными подробностями
Требуемые данные:
project_name (string): Имя проекта Asana, в котором должна быть создана задача.
title (string): Название задачи.
Дополнительный ввод:
заметки (строка): заметки или описание задачи
due_date (строка): дата выполнения задачи (формат ГГГГ-ММ-ДД)
Возвращает: Подробную подсказку с инструкциями по созданию комплексной задачи.
Ресурсы
Рабочие пространства -
asana://workspace/{workspace_gid}Представление рабочих пространств Asana как ресурсов
Каждое рабочее пространство представлено как отдельный ресурс
Формат URI:
asana://workspace/{workspace_gid}Возвращает: объект JSON с подробностями рабочей области, включая:
name: Имя рабочей области (строка)idглобальный идентификатор рабочей области (строка)type: Тип ресурса (строка)is_organization: Является ли рабочее пространство организацией (логическое значение)email_domains: Список доменов электронной почты, связанных с рабочей областью (string[])
Тип MIME:
application/json
Проекты -
asana://project/{project_gid}Шаблон ресурса для получения сведений о проекте по GID
Формат URI:
asana://project/{project_gid}Возвращает: объект JSON с подробностями проекта, включая:
name: Имя проекта (строка)idГлобальный идентификатор проекта (строка)type: Тип ресурса (строка)archived: архивирован ли проект (логическое значение)public: Является ли проект публичным (логическое значение)notes: Описание проекта/примечания (строка)color: Цвет проекта (строка)default_view: Тип представления по умолчанию (строка)due_date,due_on,start_on: Информация о дате проекта (строка)workspace: объект, содержащий информацию о рабочем пространствеteam: Объект, содержащий информацию о команде.sections: Массив объектов разделов в проектеcustom_fields: Массив определений пользовательских полей для проекта
Тип MIME:
application/json
Настраивать
Создайте учетную запись Asana :
Посетите Асану .
Нажмите «Зарегистрироваться».
Получите токен доступа Asana :
Вы можете сгенерировать персональный токен доступа из консоли разработчика Asana.
Более подробная информация здесь: https://developers.asana.com/docs/personal-access-token
Варианты установки :
Для Клода Десктопа:
Добавьте следующее в ваш claude_desktop_config.json :
Для Клода Кода:
Для установки и настройки сервера MCP используйте следующую команду:
Замените <TOKEN> на ваш токен доступа Asana.
Если вы хотите установить бета-версию (еще не выпущенную), вы можете использовать:
@roychri/mcp-server-asana@beta
Текущую бета-версию (если таковая имеется) можно найти одним из следующих способов:
https://www.npmjs.com/package/@roychri/mcp-server-asana?activeTab=versions
npm dist-tag ls @roychri/mcp-server-asana
Поиск неисправностей
Если вы столкнулись с ошибками разрешений:
Убедитесь, что ваш план Asana допускает доступ к API
Убедитесь, что токен доступа и конфигурация правильно заданы в
claude_desktop_config.json.
Внося вклад
Клонируйте этот репозиторий и начинайте взламывать.
Протестируйте локально с помощью MCP Inspector
Если вы хотите протестировать свои изменения, вы можете использовать MCP Inspector следующим образом:
Это откроет клиенту доступ к порту 5173 , а серверу — к порту 3000 .
Если эти порты уже используются чем-то другим, вы можете использовать:
Лицензия
Этот сервер MCP лицензирован по лицензии MIT. Это означает, что вы можете свободно использовать, изменять и распространять программное обеспечение в соответствии с условиями лицензии MIT. Для получения более подробной информации см. файл LICENSE в репозитории проекта.