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

Related MCP server: WordPress MCP Server
Работа с пользовательскими полями
При обновлении или создании задач с пользовательскими полями используйте следующий формат:
Формат значения зависит от типа поля:
Поля перечисления : используйте
enum_option.gidопции (НЕ отображаемое имя)Текстовые поля : используйте строку
Числовые поля : используйте число
Поля даты : используйте строку в формате ГГГГ-ММ-ДД.
Поля с несколькими перечислениями : используйте массив идентификаторов GID опций перечисления
Поиск GID пользовательских полей
Чтобы найти GID пользовательских полей и их параметры перечисления:
Используйте
asana_get_taskс набором параметровopt_fieldsдля включения пользовательских полей:asana_get_task({ task_id: "TASK_ID", opt_fields: "custom_fields,custom_fields.enum_options" })В ответе найдите массив
custom_fields. Каждое пользовательское поле будет иметь:gid: уникальный идентификатор для настраиваемого поля.name: Отображаемое имя настраиваемого поля.resource_subtype: Тип настраиваемого поля (текст, число, перечисление и т. д.)Для полей перечисления проверьте массив
enum_options, чтобы найти GID каждого параметра.
Пример: обновление пользовательского поля Enum
Инструменты
asana_list_workspacesСписок всех доступных рабочих пространств в Asana
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список рабочих пространств
Примечание: если задано DEFAULT_WORKSPACE_ID, будет возвращена только эта рабочая область вместо извлечения всех рабочих областей.
asana_search_projectsПоиск проектов в Asana с использованием сопоставления шаблонов имен
Требуемые данные:
name_pattern (string): Шаблон регулярного выражения для сопоставления названий проектов
Дополнительный ввод:
workspace (строка): рабочее пространство для поиска (необязательно, если задан DEFAULT_WORKSPACE_ID)
команда (строка): команда, по которой нужно отфильтровать проекты.
archived (boolean): возвращать только архивированные проекты (по умолчанию: false)
ограничение (число): Результаты на страницу (1-100)
смещение (строка): токен смещения пагинации
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список соответствующих проектов
Примечание: необходимо указать либо рабочее пространство, либо команду, если DEFAULT_WORKSPACE_ID не задан.
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 (объект): Объект, содержащий фильтры настраиваемых полей
Возвращает: Список соответствующих задач
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_add_followers_to_task
Добавить подписчиков к задаче
Требуемые данные:
task_id (строка): идентификатор задачи, к которой нужно добавить подписчиков.
Подписчики (массив строк): Массив идентификаторов пользователей для добавления в качестве подписчиков к задаче.
Возврат: обновленная информация о задаче
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 (строка): глобальный уникальный идентификатор рабочей области или организации (необязательно, если задан DEFAULT_WORKSPACE_ID)
Дополнительный ввод:
limit (integer): Результаты на страницу. Количество объектов, возвращаемых на страницу. Значение должно быть от 1 до 100.
offset (string): Токен смещения. Смещение к следующей странице, возвращаемое API.
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список тегов в рабочей области.
asana_create_section_for_project
Создать новый раздел в проекте
Требуемые данные:
project_id (строка): идентификатор проекта для создания раздела
имя (строка): Имя раздела, который нужно создать
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возврат: информация о созданном разделе
asana_add_task_to_section
Добавить задачу в определенный раздел проекта
Требуемые данные:
section_id (строка): идентификатор раздела, в который нужно добавить задачу.
task_id (строка): идентификатор задачи для добавления в раздел.
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возврат: Результат операции
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 (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Созданную информацию о проекте
asana_get_teams_for_user
Получить команды, к которым у пользователя есть доступ
Требуемые данные:
user_gid (string): GID пользователя для получения команд. Используйте 'me', чтобы получить команды для текущего пользователя.
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: список команд, к которым у пользователя есть доступ.
asana_get_teams_for_workspace
Объедините команды в рабочее пространство
Требуемые данные:
workspace_gid (строка): GID рабочей области, для которой необходимо получить команды (необязательно, если задано DEFAULT_WORKSPACE_ID)
Дополнительный ввод:
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возвращает: Список команд в рабочей области
asana_list_workspace_users
Получите пользователей в рабочем пространстве
Требуемые данные:
workspace_id (строка): идентификатор рабочей области, для которой необходимо получить пользователей (необязательно, если задано DEFAULT_WORKSPACE_ID)
Дополнительный ввод:
ограничение (целое число): Результаты на страницу (1-100)
смещение (строка): токен смещения пагинации
opt_fields (строка): разделенный запятыми список необязательных полей для включения (по умолчанию «имя, адрес электронной почты»)
auto_paginate (boolean): следует ли автоматически извлекать все страницы
max_pages (целое число): максимальное количество страниц для извлечения, когда auto_paginate имеет значение true
Возвращает: Список пользователей в рабочей области.
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
Возврат: Иерархическая структура проекта со статистикой
asana_get_attachments_for_object
Список вложений для определенного объекта (задачи, проекта и т. д.)
Требуемые данные:
object_gid (строка): GID объекта для извлечения вложений
Дополнительный ввод:
ограничение (число): Результаты на страницу (1-100)
смещение (строка): токен смещения пагинации
opt_fields (строка): разделенный запятыми список необязательных полей для включения
Возврат: Список вложений
asana_upload_attachment_for_object
Загрузить локальный файл как вложение к задаче или другому объекту
Требуемые данные:
object_gid (строка): GID объекта, к которому следует прикрепить файл.
file_path (string): Путь к локальному файлу для загрузки
Дополнительный ввод:
file_name (строка): Пользовательское имя файла
file_type (string): MIME-тип загруженного файла
Возвращает: метаданные загруженного вложения.
asana_download_attachment
Загрузить вложение в локальный каталог
Требуемые данные:
Attachment_gid (строка): GID вложения для загрузки
Дополнительный ввод:
output_dir (строка): Каталог для сохранения файла (по умолчанию: ~/downloads)
Возвращает: путь и тип MIME загруженного файла.
Подсказки
task-summaryПолучите сводку и обновление статуса задачи на основе ее заметок, пользовательских полей и комментариев.
Требуемые данные:
task_id (строка): идентификатор задачи, для которой необходимо получить сводку
Возвращает: Подробная подсказка с инструкциями по созданию сводки задачи.
Ресурсы
Никто
Настраивать
Создайте учетную запись Asana :
Посетите Асану .
Нажмите «Зарегистрироваться».
Получите токен доступа Asana :
Вы можете сгенерировать персональный токен доступа из консоли разработчика Asana.
Более подробная информация здесь: https://developers.asana.com/docs/personal-access-token
Необязательно: получите идентификатор рабочего пространства по умолчанию :
Если вы в основном работаете с одним рабочим пространством, вы можете установить идентификатор рабочего пространства по умолчанию.
Используйте API Asana для просмотра списка ваших рабочих пространств или перейдите в свое рабочее пространство в Asana и скопируйте идентификатор из URL-адреса.
При установке идентификатора рабочей области по умолчанию вам не придется указывать рабочую область для каждого вызова API.
Если рабочее пространство по умолчанию не задано, сервер вызовет
asana_list_workspaces, чтобы получить список доступных рабочих пространств.
Настройте 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" } } } }
Поиск неисправностей
Если вы столкнулись с ошибками разрешений:
Убедитесь, что ваш план Asana допускает доступ к API
Убедитесь, что токен доступа и конфигурация правильно заданы в
claude_desktop_config.json.
Внося вклад
Клонируйте этот репозиторий и начинайте взламывать.
Протестируйте локально с помощью MCP Inspector
Если вы хотите протестировать свои изменения, вы можете использовать MCP Inspector следующим образом:
Это откроет клиенту доступ к порту 5173 , а серверу — к порту 3000 .
Если эти порты уже используются чем-то другим, вы можете использовать:
Лицензия
Этот сервер MCP лицензирован по лицензии MIT. Это означает, что вы можете свободно использовать, изменять и распространять программное обеспечение в соответствии с условиями лицензии MIT. Для получения более подробной информации см. файл LICENSE в репозитории проекта.