mcpField
A
Asana MCP Server

Asana MCP Server

ローカル
github.com生産性011 週間前に更新

Asana MCP Server について

Asana MCP Server は、Personal Access Token を使い、REST API 経由で Asana を読み書きするローカル優先のサーバーです。タスクやプロジェクトの操作に加え、スキーマ設計、診断、状況集約も扱います。

主な機能

  1. 01Asana の読み書き・設計用 75 ツール
  2. 02カスタムフィールド、セクション、テンプレート
  3. 03項目別結果を返す一括操作
  4. 04タスク、ボード、ポートフォリオの集約
  5. 05ツール選択とローカル診断

活用シーン

  1. 01MCP クライアントからタスクやプロジェクト構成を更新
  2. 02プロジェクトのフィールドやセクションを作成・拡張
  3. 03タスクキューの整理とボード状況の集約
  4. 04エージェントが使うツール群の制限

MCP 対応

ローカル stdio 経由で Asana REST API の 75 ツールを MCP クライアントに提供します。ツール注釈、ツール群の選択、破壊的操作への明示的な確認で、公開する操作を制御できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jtalk22-asana": {
"command": "npx",
"args": [
"-y",
"@jtalk22/asana-mcp"
],
"env": {
"ASANA_PAT": "<ASANA_PAT>",
"ASANA_WORKSPACE_GID": "<ASANA_WORKSPACE_GID>",
"ASANA_MCP_TOOLS": "<ASANA_MCP_TOOLS>"
}
}
}
}
起動コマンドnpx -y @jtalk22/asana-mcp
設定が必要な環境変数
ASANA_PATシークレットAsana Personal Access Token (create at https://app.asana.com/0/my-apps). Optional when stored via `asana-mcp --setup` (macOS Keychain or ~/.asana-mcp.json).
ASANA_WORKSPACE_GIDWorkspace GID. Optional — auto-detected when the token sees exactly one workspace.
ASANA_MCP_TOOLSTool surface filter: all | read | write | comma-list of tool names.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@jtalk22/asana-mcp1.0.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Asana MCP サーバー

Asana を開かずに、Asana を変更できます。

REST API を利用するローカルファーストな Asana MCP です。パーソナルアクセストークンを使って、制御された書き込み、スキーマ操作、診断、1 回の呼び出しで完了する概要を提供します。

npx -y @jtalk22/asana-mcp --setup

Claude Code Claude Desktop Cursor Copilot Windsurf Gemini CLI Codex CLI 任意の stdio MCP クライアント

このサーバーを作った理由 · インストール · 75 個のツール · 複合ツール · Slack + Asana · 正直な制限事項 · API リファレンス


このサーバーを作った理由

Asana の公式 V2 MCP サーバーは、サポート対象のホスト型サービスです。OAuth、ワークスペース単位のアクセス、統合されたタスク書き込み、サポート対象クライアントでの対話型確認を提供します。ツールセットは随時変更されるため、固定された比較表ではなく、Asana の最新のツールリファレンスをご利用ください。

透明性の高いローカル stdio プロセスと、REST API の直接的な網羅性を求める場合は、このサーバーをお選びください。

ニーズこのサーバーの対応
ローカルでの運用PAT + stdio。ホスト型の中継サービスも、製品テレメトリーもありません。
制御されたエージェント向けインターフェースread、write、all、または明示的なツールのカンマ区切りリストをマウントします。
ボードとフィールドの設計フィールドと列挙型のオプションの作成、プロジェクトへのフィールドの追加、セクションの作成と並べ替え、テンプレートのインスタンス化ができます。
REST API の信頼性が課題となるケース型付きカスタムフィールド値、セクション配置、リッチ形式のタスクメモ、開始日と期限の順序、ページネーション、上限付き再試行に対応します。
大規模または反復的な作業個々の失敗があっても一括処理を続行し、項目ごとの結果を報告します。
エージェントの往復回数を削減朝の概要、ユーザーのキュー、ポートフォリオのロールアップ、ボードのロールアップ、受信トレイのトリアージから、意思決定にすぐ使える結果が得られます。
ローカル診断--doctor、明示的なワークスペース検出、ツールリファレンスの生成、リリース前の事前確認に対応します。

両方を併用することもできます。管理された OAuth には公式サービスを、ローカルファーストな REST ワークフローや運用モデルで必要な機能にはこのパッケージをご利用ください。このパッケージを使うには、パーソナルアクセストークンを作成して --setup を実行し、プロセスをお使いのマシン上で稼働させます。通信先は app.asana.com のみです。

Slack + Asana の継続性プレビュー

このパッケージは引き続き、75 個のツールを備えた MIT ライセンスのローカルサーバーです。以下に、利用できないツールを解放するものはありません。

同じメンテナーが現在、Keep the Thread も開発しています。Slack と Asana をすでに利用しているものの、別のダッシュボードは増やしたくない個人事業者や 2~5 人のチーム向けの、マネージド型の継続性レイヤーです。最初のクロスツール連携では、次のような、より対象を絞った問いに答えます。

選択した 1 つの Asana プロジェクトで、対応する Slack 上の約束のうち、見つからないもの、不完全なもの、または古くなっているものはどれですか?

flowchart LR
    Slack["1–5 selected Slack channels"] --> Report["continuity_asana_discrepancy_report"]
    Asana["1 selected Asana project\nincomplete tasks only"] --> Report
    Report --> Gaps["matched commitments · gaps · task drift · next reviews"]
    Gaps --> Receipt["source IDs preserved\nwrites_performed: 0"]
選択肢適したケース
このオープンソースパッケージローカル stdio、ご自身の PAT、Asana REST ツール全 75 個、制御された書き込み、ボード/スキーマ設計を利用し、ホスト型の中継サービスを介さずに運用したい場合。
Keep the Thread プレビューマネージド型のリモート MCP エンドポイント、公式コネクターの同意、Slack と Asana の不一致レポート、保存済みの継続性コントラクト、または定期的な Slack 配信を利用したい場合。

ホスト型 Asana コネクターのコードは稼働中で、読み取り専用ですが、一般向けの OAuth 有効化はまだ段階的に進めています。代表的な入出力コントラクトを確認するか、稼働中のコネクターのステータスを調べるか、範囲を限定したデプロイメントレビューをリクエストしてください。Asana タスクの作成、更新、完了、削除は、ホスト型の不一致レポートには含まれません。

インストール

1. トークンを取得します — app.asana.com/0/my-apps → Personal access tokens → Create。その後、次のいずれかを行います。

npx -y @jtalk22/asana-mcp --setup    # stores it in the macOS Keychain (or ~/.asana-mcp.json, mode 600)

または、ASANA_PAT を自分でエクスポートします。

2. サーバーを追加します MCP クライアントに追加します。

{
  "mcpServers": {
    "asana": {
      "command": "npx",
      "args": ["-y", "@jtalk22/asana-mcp"]
    }
  }
}

Claude Code のワンライナー:claude mcp add asana -- npx -y @jtalk22/asana-mcp

3. 確認します:

npx -y @jtalk22/asana-mcp --doctor   # token → identity → workspace → tool surface, as JSON

トークンからワークスペースが1つだけ見える場合、ワークスペースは自動検出されます。複数のワークスペースが見えるトークンの場合は、ASANA_WORKSPACE_GID を設定する(doctor に選択肢が表示されます)か、呼び出しごとに workspace を渡してください。

75 個のツール:読み取り、操作、設計

  • 読み取り 26 個 — タスク、プロジェクト、セクション、ユーザー、チーム、タグ、ストーリー、サブタスク、依存関係、添付ファイル、ステータス、ポートフォリオ、タイプアヘッド(名前→GID)、複数のボードに属するタスクは重複ではないと判定するクロスボード重複検出。
  • 書き込み 40 個 — 作成/更新/完了/割り当て、コメント、フォロワー、タグ、依存関係、メンバーシップ、セクション間の移動、日付(start_on を適切に処理)、カスタムフィールド(日付をラップし、multi_enum は配列に対応)、リッチノート(サニタイズ済み)、添付ファイル(100MB のアップロード)、一括操作、プロジェクトのステータス、ポートフォリオ、非同期ジョブのポーリングに対応したテンプレート、そして自動化によって直前に書き込んだ内容が書き換えられるボード向けの asana_set_notes_safe。
  • スキーマ/設計ツール 6 個 — カスタムフィールドの作成、ドロップダウンの拡張、プロジェクトへのフィールドの追加、セクションの並べ替え。エージェントはボードに入力するだけでなく、ボードを構築できます。
  • 破壊的操作 3 個 — delete_task / delete_project / delete_section は、confirm: true がなければ実行を拒否します。
  • ローカルファイルの境界 — attach_file には confirm: true が必要で、現在のディレクトリまたは ASANA_MCP_FILE_ROOTS 内のファイルのみを読み取ります。
  • 読み取り専用の一括処理 — batch_ops は、スキーマ層と実行時層の両方で GET 以外のすべての操作を拒否します。

すべてのツールで MCP アノテーション(readOnlyHint、destructiveHint、idempotentHint、openWorldHint、タイトル)を宣言します。アノテーションに対応したクライアント(Claude Code など)は、プランモードで読み取りを自動許可し、安全に並列実行して、3 つの破壊的操作を制限します。

公開するツールを ASANA_MCP_TOOLS=read(30 個のツール)、write、またはカンマ区切りのリストで絞り込めます。トリアージ用エージェントのコンテキストに削除ツールは不要です。

入力と動作の詳細:docs/API.md。

複合ツール:1 回の呼び出しで答えを取得

実際のボードを毎日運用して構築した、複数回の呼び出しの往復を減らす 5 つのツールです。

  • asana_morning_brief — 未完了タスクを期限超過/本日が期限/近日中/依存関係によりブロック中に分類し、1 回の呼び出しで取得します。
  • asana_user_queue — 1 人分のキュー全体を取得します。API の検索上限である 100 件を超えてページネーションし、期限別に分類して、プロジェクトごとの件数も表示します。「X は何を抱えている?」という質問に使う呼び出しです。
  • asana_portfolio_rollup — ポートフォリオまたはプロジェクトリスト全体について、プロジェクトごとの健全性(未完了/期限超過/今週完了+ステータス)を表示します。include_archived: true を指定すると、アーカイブ済みボードに隠れている未完了タスクも取得できます。デフォルトの一覧では、いずれも取得されません。
  • asana_board_rollup — 1 つのボードをセクションごとにグループ化し、セクションごとに任意の数のカスタムフィールドを合計(「Deal $」、「Claim $」など)します。期限フィールドは名前で期限超過を確認します。フィールドはボード自体の設定からリアルタイムに解決されるため、ハードコードはありません。
  • asana_triage_inbox — トリアージ済みリストから一括作成します(API にない一括作成機能)。項目ごとのオーバーライドに対応し、失敗しても後続の項目を処理します。

正直な制限事項

  • Asana の検索 API はページネーションなしで結果を 100 件までに制限しています。この API を利用するツールは、結果の残りが存在しないかのように振る舞わず、truncated: true と示します。asana_user_queue とリストツールは、REST API で可能な範囲でページネーションして取得します。
  • /batch エンドポイントは、PUT の本文と GET のオプションを上流で黙って破棄します。そのため、このサーバーでは書き込みを /batch 経由で実行しません。asana_batch_ops はデフォルトのフィールドを指定した GET のみを対象としており、その説明にもその旨が明記されています。
  • ストーリーのコメントのリッチテキスト(html_text)は、Asana によってエスケープされたプレーンテキストに変換されます。そのため、コメントは意図的にプレーンテキストとして扱い、黙って見栄えの悪い表示になるのを防いでいます。
  • 日付カスタムフィールドは完全な ISO タイムスタンプとして返されます。期限超過の計算では、比較前に YYYY-MM-DD に正規化します(以前発生して修正した、何も問題がないように見える不具合です)。
  • PAT で読み取れるのは自身の「My Tasks」だけです(他のユーザーのものは 403 になります)。asana_user_queue は、誰に対しても使える担当者ルートを使用します。

詳しくは docs/TROUBLESHOOTING.md をご覧ください。

セキュリティ

PAT は Asana へのログインと同じアクセス権を持ちます。ASANA_PAT、macOS キーチェーン(asana-mcp)、または ~/.asana-mcp.json(モード 600 で書き込み)から読み取られ、ログに記録されたり、api.asana.com のホスト以外に送信されたりすることはありません。テレメトリーや外部への自動通信はありません。SECURITY.md をお読みください。

開発

npm ci && npm test          # 16 unit tests, no token needed
npm run doctor              # live check against your workspace
npm run api-docs            # regenerate docs/API.md from lib/tools.js

プルリクエストを歓迎します。CONTRIBUTING.md をご覧ください。MIT ライセンスです。


同じ作者による別のプロジェクト:@jtalk22/slack-mcp — Slack を読まずにキャッチアップできます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。