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.

Asana용 MCP 서버

Asana의 이 모델 컨텍스트 프로토콜 서버 구현을 통해 Anthropic의 Claude Desktop Application과 같은 MCP 클라이언트에서 Asana API와 통신할 수 있습니다.

MCP에 대한 자세한 내용은 여기에서 확인하세요.

용법

원하시는 AI 도구(예: Claude Desktop)에서 아사나 관련 작업, 프로젝트, 작업 공간 및/또는 댓글에 대해 질문해 보세요. "아사나"라는 단어를 언급하면 LLM 담당자가 적합한 도구를 선택할 가능성이 높아집니다.

예:

스프린트 30 프로젝트에서 완료되지 않은 아사나 작업이 몇 개나 있나요?

또 다른 예:

사용자 정의 필드 작업

사용자 정의 필드로 작업을 업데이트하거나 생성할 때 다음 형식을 사용하세요.

지엑스피1

값 형식은 필드 유형에 따라 다릅니다.

  • 열거형 필드 : 옵션의 enum_option.gid 를 사용합니다(표시 이름이 아님)
  • 텍스트 필드 : 문자열 사용
  • 숫자 필드 : 숫자를 사용하세요
  • 날짜 필드 : YYYY-MM-DD 형식의 문자열을 사용하세요
  • 다중 열거형 필드 : 열거형 옵션 GID 배열 사용

사용자 정의 필드 GID 찾기

사용자 정의 필드의 GID와 열거형 옵션을 찾으려면:

  1. opt_fields 매개변수를 설정하여 asana_get_task 사용하여 사용자 정의 필드를 포함합니다.
    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를 찾습니다.

예: 열거형 사용자 정의 필드 업데이트

// 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(문자열): 프로젝트 이름과 일치하는 정규 표현식 패턴
    • 선택 입력:
      • 작업 공간(문자열): 검색할 작업 공간(DEFAULT_WORKSPACE_ID가 설정된 경우 선택 사항)
      • 팀(문자열): 프로젝트를 필터링할 팀
      • 보관됨(부울): 보관된 프로젝트만 반환합니다(기본값: false)
      • limit (숫자): 페이지당 결과(1-100)
      • offset(문자열): 페이지 번호 오프셋 토큰
      • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
    • 반환: 일치하는 프로젝트 목록
    • 참고: DEFAULT_WORKSPACE_ID가 설정되지 않은 경우 작업 공간이나 팀을 지정해야 합니다.
  3. asana_search_tasks
    • 고급 필터링 옵션을 사용하여 작업 공간에서 작업 검색
    • 필수 입력:
      • 작업 공간(문자열): 검색할 작업 공간(DEFAULT_WORKSPACE_ID가 설정된 경우 선택 사항)
    • 선택 입력:
      • text(문자열): 작업 이름과 설명에서 검색할 텍스트
      • resource_subtype(문자열): 작업 하위 유형(예: 마일스톤)으로 필터링
      • 완료(부울): 완료된 작업에 대한 필터링
      • is_subtask(부울): 하위 작업에 대한 필터
      • has_attachment(부울): 첨부 파일이 있는 작업을 필터링합니다.
      • is_blocked(부울): 종속성이 완료되지 않은 작업을 필터링합니다.
      • is_blocking(부울): 종속 항목이 있는 완료되지 않은 작업을 필터링합니다.
      • 담당자, 프로젝트, 섹션, 태그, 팀 및 기타 여러 고급 필터
      • sort_by(문자열): due_date, created_at, finished_at, likes, modified_at(기본값: modified_at) 순으로 정렬
      • sort_ascending(boolean): 오름차순으로 정렬합니다(기본값: false)
      • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
      • custom_fields(객체): 사용자 정의 필드 필터를 포함하는 객체
    • 반환: 일치하는 작업 목록
  4. asana_get_task
    • 특정 작업에 대한 자세한 정보를 얻으세요
    • 필수 입력:
      • task_id(문자열): 검색할 작업 ID
    • 선택 입력:
      • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
    • 반환: 자세한 작업 정보
  5. asana_create_task
    • 프로젝트에서 새 작업 만들기
    • 필수 입력:
      • project_id(문자열): 작업을 생성할 프로젝트
      • name(문자열): 작업의 이름
    • 선택 입력:
      • notes(문자열): 작업에 대한 설명
      • html_notes(문자열): 작업에 대한 HTML 형식의 설명
      • due_on(문자열): YYYY-MM-DD 형식의 마감일
      • 담당자(문자열): 담당자(나 또는 사용자 ID일 수 있음)
      • 팔로워(문자열 배열): 팔로워로 추가할 사용자 ID 배열
      • parent(문자열): 이 작업을 설정할 부모 작업 ID
      • 프로젝트(문자열 배열): 이 작업을 추가할 프로젝트 ID 배열
      • resource_subtype(문자열): 작업 유형(기본 작업 또는 마일스톤)
      • custom_fields(객체): 사용자 정의 필드 GID 문자열을 해당 값에 매핑하는 객체
    • 반환: 생성된 작업 정보
  6. asana_get_task_stories
    • 특정 작업에 대한 의견과 스토리를 받으세요
    • 필수 입력:
      • task_id(문자열): 스토리를 가져올 작업 ID
    • 선택 입력:
      • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
    • 반환: 작업 스토리/코멘트 목록
  7. asana_update_task
    • 기존 작업 세부 정보 업데이트
    • 필수 입력:
      • task_id(문자열): 업데이트할 작업 ID
    • 선택 입력:
      • name(문자열): 작업의 새 이름
      • notes(문자열): 작업에 대한 새로운 설명
      • due_on(문자열): YYYY-MM-DD 형식의 새로운 마감일
      • 담당자(문자열): 새로운 담당자(나 또는 사용자 ID일 수 있음)
      • 완료(부울): 작업을 완료로 표시하거나 표시하지 않음
      • resource_subtype(문자열): 작업 유형(기본 작업 또는 마일스톤)
      • custom_fields(객체): 사용자 정의 필드 GID 문자열을 해당 값에 매핑하는 객체
    • 반환: 업데이트된 작업 정보
  8. asana_get_project
    • 특정 프로젝트에 대한 자세한 정보를 얻으세요
    • 필수 입력:
      • project_id(문자열): 검색할 프로젝트 ID
    • 선택 입력:
      • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
    • 반환: 자세한 프로젝트 정보
  9. asana_get_project_task_counts
    • 프로젝트의 작업 수를 가져옵니다
    • 필수 입력:
      • project_id(문자열): 작업 수를 가져올 프로젝트 ID
    • 선택 입력:
      • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
    • 반환: 작업 개수 정보
  10. asana_get_project_sections
  • 프로젝트의 섹션 가져오기
  • 필수 입력:
    • project_id(문자열): 섹션을 가져올 프로젝트 ID
  • 선택 입력:
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 프로젝트 섹션 목록
  1. asana_create_task_story
  • 작업에 대한 댓글이나 스토리를 작성하세요
  • 필수 입력:
    • task_id(문자열): 스토리를 추가할 작업 ID
    • text(문자열): 스토리/댓글의 텍스트 내용
  • 선택 입력:
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 생성된 스토리 정보
  1. asana_add_task_dependencies
  • 작업에 대한 종속성 설정
  • 필수 입력:
    • task_id(문자열): 종속성을 추가할 작업 ID
    • 종속성(문자열 배열): 이 작업이 종속된 작업 ID 배열
  • 반환: 업데이트된 작업 종속성
  1. asana_add_task_dependents
  • 작업에 대한 종속 항목 설정(이 작업에 종속된 작업)
  • 필수 입력:
    • task_id(문자열): 종속 항목을 추가할 작업 ID
    • 종속 항목(문자열 배열): 이 작업에 종속된 작업 ID 배열
  • 반환: 업데이트된 작업 종속성
  1. asana_create_subtask
  • 기존 작업에 대한 새 하위 작업 만들기
  • 필수 입력:
    • parent_task_id(문자열): 하위 작업을 생성할 상위 작업 ID
    • name(문자열): 하위 작업의 이름
  • 선택 입력:
    • notes(문자열): 하위 작업에 대한 설명
    • due_on(문자열): YYYY-MM-DD 형식의 마감일
    • 담당자(문자열): 담당자(나 또는 사용자 ID일 수 있음)
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 하위 작업 정보가 생성되었습니다.
  1. asana_add_followers_to_task
  • 작업에 팔로워 추가
  • 필수 입력:
    • task_id(문자열): 팔로워를 추가할 작업 ID
    • 팔로워(문자열 배열): 작업에 팔로워로 추가할 사용자 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
  • 선택 입력:
    • limit (숫자): 페이지당 결과(1-100)
    • offset(문자열): 페이지 번호 오프셋 토큰
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 프로젝트 상태 업데이트 목록
  1. asana_create_project_status
  • 프로젝트에 대한 새로운 상태 업데이트를 만듭니다.
  • 필수 입력:
    • project_gid(문자열): 상태를 생성할 프로젝트 GID
    • text(문자열): 상태 업데이트의 텍스트 내용
  • 선택 입력:
    • color(문자열): 상태의 색상(녹색, 노란색, 빨간색)
    • title(문자열): 상태 업데이트의 제목
    • html_text(문자열): 상태 업데이트를 위한 HTML 형식 텍스트
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 생성된 프로젝트 상태 정보
  1. asana_delete_project_status
  • 프로젝트 상태 업데이트 삭제
  • 필수 입력:
    • project_status_gid(문자열): 삭제할 프로젝트 상태 GID
  • 반환: 삭제 확인
  1. asana_set_parent_for_task
  • 작업의 상위 항목을 설정하고 해당 상위 항목의 다른 하위 항목 내에 하위 작업을 배치합니다.
  • 필수 입력:
    • task_id(문자열): 작업할 작업 ID
    • 부모(문자열): 작업의 새 부모 또는 부모가 없는 경우 null
  • 선택 입력:
    • insert_after(문자열): 작업을 삽입할 부모의 하위 작업 또는 목록의 시작 부분에 삽입할 경우 null
    • insert_before(문자열): 작업을 삽입할 부모의 하위 작업 또는 목록 끝에 삽입할 경우 null
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 업데이트된 작업 정보
  1. asana_get_tasks_for_tag
  • 특정 태그에 대한 작업 가져오기
  • 필수 입력:
    • tag_gid(문자열): 작업을 검색할 태그 GID
  • 선택 입력:
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
    • opt_pretty(부울): '예쁜' 형식으로 응답을 제공합니다.
    • limit(정수): 페이지당 반환할 개체 수입니다. 값은 1에서 100 사이여야 합니다.
    • offset(문자열): API에서 반환된 다음 페이지에 대한 오프셋입니다.
  • 반환: 지정된 태그에 대한 작업 목록
  1. asana_get_tags_for_workspace
  • 작업 공간에서 태그 가져오기
  • 필수 입력:
    • workspace_gid(문자열): 작업 공간 또는 조직의 전역 고유 식별자(DEFAULT_WORKSPACE_ID가 설정된 경우 선택 사항)
  • 선택 입력:
    • limit(정수): 페이지당 결과 수. 페이지당 반환할 객체 수. 값은 1에서 100 사이여야 합니다.
    • offset(문자열): 오프셋 토큰. API에서 반환된 다음 페이지까지의 오프셋입니다.
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 작업 공간의 태그 목록
  1. asana_create_section_for_project
  • 프로젝트에 새 섹션 만들기
  • 필수 입력:
    • project_id(문자열): 섹션을 생성할 프로젝트 ID
    • name(문자열): 생성할 섹션의 이름
  • 선택 입력:
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 생성된 섹션 정보
  1. asana_add_task_to_section
  • 프로젝트의 특정 섹션에 작업 추가
  • 필수 입력:
    • section_id(문자열): 작업을 추가할 섹션 ID
    • task_id(문자열): 섹션에 추가할 작업 ID
  • 선택 입력:
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 작업 결과
  1. asana_create_project
  • 작업 공간에서 새 프로젝트 만들기
  • 필수 입력:
    • workspace_id(문자열): 프로젝트를 생성할 작업 공간 ID(DEFAULT_WORKSPACE_ID가 설정된 경우 선택 사항)
    • name(문자열): 생성할 프로젝트의 이름
    • team_id(문자열): 조직 작업 공간에 필수 - 프로젝트를 공유할 팀 GID
  • 선택 입력:
    • public(부울): 프로젝트가 조직에 공개되는지 여부(기본값: false)
    • 보관됨(부울): 프로젝트가 보관되었는지 여부(기본값: false)
    • color (문자열): 프로젝트의 색상(연한 녹색, 연한 주황색, 연한 파란색 등)
    • 레이아웃(문자열): 프로젝트의 레이아웃(보드, 목록, 타임라인 또는 달력)
    • default_view(문자열): 프로젝트의 기본 보기(목록, 보드, 캘린더, 타임라인 또는 간트)
    • due_on(문자열): 이 프로젝트의 마감일(YYYY-MM-DD 형식)
    • start_on(문자열): 이 프로젝트의 작업이 시작되는 날짜(YYYY-MM-DD 형식)
    • notes(문자열): 프로젝트와 관련된 자유형 텍스트 정보
    • opt_fields(문자열): 포함할 선택적 필드의 쉼표로 구분된 목록
  • 반환: 생성된 프로젝트 정보
  1. asana_get_teams_for_user
  • 사용자가 액세스할 수 있는 팀을 가져옵니다.
  • 필수 입력:
    • user_gid(문자열): 팀을 가져올 사용자 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(문자열): 사용자를 가져올 작업 공간 ID(DEFAULT_WORKSPACE_ID가 설정된 경우 선택 사항)
  • 선택 입력:
    • limit(정수): 페이지당 결과(1-100)
    • offset(문자열): 페이지 번호 오프셋 토큰
    • opt_fields(문자열): 포함할 선택 필드의 쉼표로 구분된 목록(기본값은 "name,email")
    • auto_paginate(부울): 모든 페이지를 자동으로 가져올지 여부
    • max_pages(정수): auto_paginate가 true일 때 가져올 최대 페이지 수
  • 반환: 작업 공간의 사용자 목록
  1. asana_get_project_hierarchy
  • 섹션, 작업 및 하위 작업을 포함한 Asana 프로젝트의 전체 계층 구조를 가져옵니다.
  • 필수 입력:
    • project_id(문자열): 계층 구조를 가져올 프로젝트 ID
  • 선택 입력:
    • include_completed_tasks(부울): 완료된 작업 포함(기본값: false)
    • include_subtasks(부울): 각 작업에 대한 하위 작업을 포함합니다(기본값: true)
    • include_completed_subtasks(부울): 완료된 하위 작업 포함(기본값: include_completed_tasks 뒤따름)
    • max_subtask_depth(숫자): 검색할 하위 작업의 최대 깊이(기본값: 1)
    • opt_fields_tasks(문자열): 작업에 대한 선택적 필드
    • opt_fields_subtasks(문자열): 하위 작업에 대한 선택 필드
    • opt_fields_sections(문자열): 섹션에 대한 선택 필드
    • opt_fields_project(문자열): 프로젝트에 대한 선택 필드
    • limit(숫자): 페이지당 최대 결과 수(1-100)
    • 오프셋(문자열): 이전 응답의 페이지 매김 토큰
    • auto_paginate(부울): 모든 페이지를 자동으로 가져올지 여부
    • max_pages(숫자): auto_paginate가 true일 때 가져올 최대 페이지 수
  • 반환: 통계를 사용한 계층적 프로젝트 구조

프롬프트

  1. task-summary
    • 메모, 사용자 정의 필드 및 주석을 기반으로 작업에 대한 요약 및 상태 업데이트를 받으세요.
    • 필수 입력:
      • task_id(문자열): 요약을 가져올 작업 ID
    • 반환: 작업 요약 생성을 위한 지침이 포함된 자세한 프롬프트

자원

없음

설정

  1. Asana 계정 만들기 :
  2. Asana 액세스 토큰 검색 :
  3. 선택 사항: 기본 작업 공간 ID 가져오기 :
    • 주로 하나의 작업 공간에서 작업하는 경우 기본 작업 공간 ID를 설정할 수 있습니다.
    • Asana API를 사용하여 작업 공간을 나열하거나 Asana의 작업 공간으로 이동하여 URL에서 ID를 복사합니다.
    • 기본 작업 공간 ID를 설정하면 각 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 검사기를 사용하여 로컬로 테스트하세요

변경 사항을 테스트하려면 다음과 같이 MCP 검사기를 사용할 수 있습니다.

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

이 서버 구현을 통해 AI 어시스턴트는 Asana의 API와 상호 작용할 수 있으며, 사용자는 자연어 요청을 통해 작업, 프로젝트, 작업 공간 및 코멘트를 관리할 수 있습니다.

  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