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 デスクトップ アプリケーションなどの MCP クライアントから Asana API と通信できるようになります。

MCP の詳細はこちらをご覧ください:

使用法

選択したAIツール(例: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を使用します(表示名ではありません)
  • テキストフィールド:文字列を使用する
  • 数値フィールド: 数値を使用する
  • 日付フィールド: 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 が設定されている場合はオプション)
      • チーム (文字列): プロジェクトをフィルタリングするチーム
      • archived (boolean): アーカイブされたプロジェクトのみを返します (デフォルト: false)
      • 制限(数):1ページあたりの結果数(1~100)
      • offset (文字列): ページネーションオフセットトークン
      • opt_fields (文字列): 含めるオプションフィールドのカンマ区切りリスト
    • 戻り値: 一致するプロジェクトのリスト
    • 注意: DEFAULT_WORKSPACE_IDが設定されていない場合は、ワークスペースまたはチームのいずれかを指定する必要があります。
  3. asana_search_tasks
    • 高度なフィルタリングオプションを使用してワークスペース内のタスクを検索する
    • 必須入力:
      • ワークスペース (文字列): 検索するワークスペース (DEFAULT_WORKSPACE_ID が設定されている場合はオプション)
    • オプション入力:
      • テキスト (文字列): タスク名と説明で検索するテキスト
      • resource_subtype (文字列): タスクのサブタイプ (例: マイルストーン) でフィルタリング
      • 完了 (ブール値): 完了したタスクのフィルター
      • is_subtask (boolean): サブタスクのフィルター
      • has_attachment (boolean): 添付ファイル付きのタスクをフィルターする
      • is_blocked (boolean): 依存関係が不完全なタスクをフィルターします
      • is_blocking (boolean): 依存関係のある未完了タスクをフィルターします
      • 担当者、プロジェクト、セクション、タグ、チーム、その他多くの高度なフィルター
      • sort_by (文字列): due_date、created_at、completed_at、likes、modified_at (デフォルト: changed_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 (文字列): タスクの名前
    • オプション入力:
      • メモ(文字列): タスクの説明
      • html_notes (文字列): タスクのHTML形式の説明
      • due_on (文字列): YYYY-MM-DD形式の期日
      • 担当者(文字列):担当者(「自分」またはユーザーID)
      • フォロワー(文字列の配列):フォロワーとして追加するユーザーIDの配列
      • 親(文字列):このタスクを設定する親タスクID
      • プロジェクト(文字列の配列):このタスクを追加するプロジェクトIDの配列
      • resource_subtype (文字列): タスクの種類 (default_task または milestone)
      • custom_fields (オブジェクト): カスタムフィールドの GID 文字列をその値にマッピングするオブジェクト
    • 戻り値: 作成されたタスク情報
  6. asana_get_task_stories
    • 特定のタスクに関するコメントやストーリーを取得する
    • 必須入力:
      • task_id (文字列): ストーリーを取得するタスクID
    • オプション入力:
      • opt_fields (文字列): 含めるオプションフィールドのカンマ区切りリスト
    • 戻り値: タスクストーリー/コメントのリスト
  7. asana_update_task
    • 既存のタスクの詳細を更新する
    • 必須入力:
      • task_id (文字列): 更新するタスクID
    • オプション入力:
      • name (文字列): タスクの新しい名前
      • メモ(文字列): タスクの新しい説明
      • due_on (文字列): YYYY-MM-DD形式の新しい期日
      • 担当者(文字列):新しい担当者(「自分」またはユーザーID)
      • 完了 (ブール値): タスクを完了としてマークするかどうか
      • resource_subtype (文字列): タスクの種類 (default_task または milestone)
      • 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
    • テキスト(文字列):ストーリー/コメントのテキストコンテンツ
  • オプション入力:
    • 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 (文字列): サブタスクの名前
  • オプション入力:
    • メモ(文字列): サブタスクの説明
    • 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
  • オプション入力:
    • 制限(数):1ページあたりの結果数(1~100)
    • offset (文字列): ページネーションオフセットトークン
    • opt_fields (文字列): 含めるオプションフィールドのカンマ区切りリスト
  • 戻り値: プロジェクトステータスの更新リスト
  1. asana_create_project_status
  • プロジェクトの新しいステータス更新を作成する
  • 必須入力:
    • project_gid (文字列): ステータスを作成するプロジェクトGID
    • テキスト(文字列):ステータス更新のテキストコンテンツ
  • オプション入力:
    • 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 (boolean): プロジェクトが組織に対して公開されているかどうか (デフォルト: false)
    • archived (boolean): プロジェクトがアーカイブされているかどうか (デフォルト: false)
    • color (文字列): プロジェクトの色 (ライトグリーン、ライトオレンジ、ライトブルーなど)
    • レイアウト(文字列):プロジェクトのレイアウト(ボード、リスト、タイムライン、またはカレンダー)
    • default_view (文字列): プロジェクトのデフォルトビュー (リスト、ボード、カレンダー、タイムライン、ガントチャート)
    • due_on (文字列): このプロジェクトの期限日 (YYYY-MM-DD 形式)
    • start_on (文字列): このプロジェクトの作業が開始される日 (YYYY-MM-DD 形式)
    • メモ(文字列): プロジェクトに関連付けられた自由形式のテキスト情報
    • 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が設定されている場合はオプション)
  • オプション入力:
    • 制限(整数): 1ページあたりの結果数(1~100)
    • offset (文字列): ページネーションオフセットトークン
    • opt_fields (文字列): 含めるオプション フィールドのコンマ区切りリスト (デフォルトは "name,email")
    • auto_paginate (boolean): すべてのページを自動的に取得するかどうか
    • 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 (文字列): プロジェクトのオプションフィールド
    • 制限(数値): 1ページあたりの最大結果数(1~100)
    • オフセット(文字列):前のレスポンスからのページネーショントークン
    • auto_paginate (boolean): すべてのページを自動的に取得するかどうか
    • max_pages (数値): auto_paginate が true の場合に取得する最大ページ数
  • 戻り値: 統計情報を含む階層的なプロジェクト構造

プロンプト

  1. task-summary
    • メモ、カスタムフィールド、コメントに基づいてタスクの概要とステータスの更新を取得します
    • 必須入力:
      • task_id (文字列): 概要を取得するタスクID
    • 戻り値: タスク概要を生成するための手順を含む詳細なプロンプト

リソース

なし

設定

  1. Asanaアカウントを作成します:
    • Asanaにアクセスしてください。
    • 「サインアップ」をクリックします。
  2. Asana アクセストークンを取得します:
  3. オプション: デフォルトのワークスペース ID を取得します
    • 主に 1 つのワークスペースで作業する場合は、デフォルトのワークスペース 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 Inspectorを使用してローカルでテストする

変更をテストしたい場合は、次のように 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