Asana MCP Server について
Asana MCP Server は、Personal Access Token を使い、REST API 経由で Asana を読み書きするローカル優先のサーバーです。タスクやプロジェクトの操作に加え、スキーマ設計、診断、状況集約も扱います。
主な機能
- 01Asana の読み書き・設計用 75 ツール
- 02カスタムフィールド、セクション、テンプレート
- 03項目別結果を返す一括操作
- 04タスク、ボード、ポートフォリオの集約
- 05ツール選択とローカル診断
活用シーン
- 01MCP クライアントからタスクやプロジェクト構成を更新
- 02プロジェクトのフィールドやセクションを作成・拡張
- 03タスクキューの整理とボード状況の集約
- 04エージェントが使うツール群の制限
MCP 対応
ローカル stdio 経由で Asana REST API の 75 ツールを MCP クライアントに提供します。ツール注釈、ツール群の選択、破壊的操作への明示的な確認で、公開する操作を制御できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @jtalk22/asana-mcpASANA_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
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 を読まずにキャッチアップできます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。