Asana MCP Server

io.github.jtalk22由 GitHub 帳號 jtalk22 發布v1.0.1更新於 Oct 24, 2026

Change Asana without opening Asana — custom fields, sections, start dates, rich notes, bulk. PAT.

已驗證STDIO僅桌面效率與工作流開發者工具

概覽

AI 產生的概覽

讓助理透過本機 stdio 程序與個人存取權杖讀取並修改 Asana 的任務、專案、區段和自訂欄位。

可以做什麼
這是一個以 REST API 為基礎、本機優先的 Asana MCP 伺服器,提供約 75 個工具:讀取任務、專案、區段、使用者、團隊、標籤、動態、子任務、相依性、附件、狀態和專案集;寫入包括建立、更新、完成、指派、留言、加標籤、移動區段、設定日期和自訂欄位、上傳附件以及批次操作;另有結構工具可建立自訂欄位、擴充下拉選項、將欄位附加到專案以及重新排序區段。五個組合工具可一次呼叫回傳晨間簡報、某人的完整佇列、專案集與看板彙總以及收件匣分診。破壞性工具需要 confirm: true,且可將曝露的工具範圍裁剪為 read、write、all 或明確清單。
適用情境
當你希望不打開 Asana 就由助理驅動 Asana 變更時值得加入,特別適合看板與欄位設計、批次或重複更新,以及可直接決策的彙總。它適合偏好透明本機程序並需要直接 REST 覆蓋而非託管連接器的使用者。
執行需求
透過 stdio 在本機執行,通常使用 npx @jtalk22/asana-mcp。需要 Asana 個人存取權杖,透過 ASANA_PAT 提供,或經安裝命令存入 macOS 鑰匙圈或本機設定檔。當權杖只能看到一個工作區時,ASANA_WORKSPACE_GID 為選用。需要連線至 Asana API 的網路存取。
安裝前請注意
此 PAT 擁有與 Asana 登入相同的存取權限,應視為敏感密鑰。寫入操作會建立、更新、完成、移動和刪除 Asana 資料;delete_task、delete_project 和 delete_section 需要 confirm: true,attach_file 也需要 confirm: true 且只能讀取目前目錄或已設定的檔案根目錄。批次操作會在單項失敗後繼續,請檢查逐項結果。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Asana MCP Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Asana MCP Server

Change Asana without opening Asana.

A local-first Asana MCP over the REST API: controlled writes, schema operations, diagnostics, and one-call briefs over a Personal Access Token.

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

Claude Code Claude Desktop Cursor Copilot Windsurf Gemini CLI Codex CLI any stdio MCP client

Why this exists · Install · 75 tools · Composites · Slack + Asana · Honest limits · API reference


Why this exists

Asana's official V2 MCP server is the supported hosted choice: OAuth, workspace-scoped access, consolidated task writes, and interactive confirmations in supported clients. Its tool set changes over time, so use Asana's current tools reference rather than a frozen comparison table.

Choose this server when you want a transparent local stdio process and direct REST coverage:

NeedThis server's approach
Local operationPAT + stdio. No hosted intermediary and no product telemetry.
Controlled agent surfaceMount read, write, all, or an explicit comma-list of tools.
Board and field designCreate fields and enum options, attach fields to projects, create/reorder sections, and instantiate templates.
Reliable REST edge casesTyped custom-field values, section placement, rich task notes, start/due ordering, pagination, and bounded retry.
Large or repetitive workBulk loops continue past individual failures and report per-item outcomes.
Fewer agent round-tripsMorning briefs, user queues, portfolio rollups, board rollups, and inbox triage return decision-ready results.
Local diagnostics--doctor, explicit workspace detection, generated tool reference, and release preflight.

You can use both: the official service for managed OAuth and this package for local-first REST workflows or capabilities your operating model needs. To use this package, create a Personal Access Token, run --setup, and keep the process on your machine. It talks only to app.asana.com.

Slack + Asana continuity preview

This package remains the full 75-tool, MIT-licensed local server. Nothing below is an unlock for missing tools.

The same maintainer is also building Keep the Thread, a managed continuity layer for an independent operator or two-to-five-person team that already works in Slack and Asana but does not want another dashboard. Its first cross-tool contract asks a narrower question:

Which Slack commitment is missing, incomplete, or stale in one selected Asana project?

mermaid
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"]
ChooseWhen it fits
This open-source packageYou want local stdio, your own PAT, all 75 Asana REST tools, controlled writes, board/schema design, and no hosted intermediary.
Keep the Thread previewYou want a managed remote MCP endpoint, official connector consent, Slack-to-Asana discrepancy reporting, saved continuity contracts, or scheduled Slack delivery.

The hosted Asana connector code is live and read-only, but public OAuth activation is still staged. See the representative input/output contract, inspect the live connector status, or request a bounded deployment review. Creating, updating, completing, or deleting Asana tasks is not part of the hosted discrepancy report.

Install

1. Get a token — app.asana.com/0/my-apps → Personal access tokens → Create. Then either:

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

or export ASANA_PAT yourself.

2. Add the server to your MCP client:

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

Claude Code one-liner: claude mcp add asana -- npx -y @jtalk22/asana-mcp

3. Verify:

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

Workspace is auto-detected when your token sees exactly one. Tokens that see several: set ASANA_WORKSPACE_GID (the doctor lists your options) or pass workspace per call.

75 tools: read, act, design

  • 26 reads — tasks, projects, sections, users, teams, tags, stories, subtasks, dependencies, attachments, statuses, portfolios, typeahead (name→GID), cross-board duplicate detection that knows a multi-homed task is not a duplicate.
  • 40 writes — create/update/complete/assign, comments, followers, tags, dependencies, memberships, section moves, dates (start_on done right), custom fields (dates wrapped, multi_enum arrays), rich notes (sanitized), attachments (100MB uploads), bulk ops, project statuses, portfolios, templates with async-job polling, and asana_set_notes_safe for boards where automations rewrite what you just wrote.
  • 6 schema/design tools — create custom fields, extend dropdowns, attach fields to projects, sections, reorder: the agent can build the board, not just fill it.
  • 3 destructive — delete_task / delete_project / delete_section refuse to run without confirm: true.
  • Local file boundary — attach_file requires confirm: true and only reads from the current directory or ASANA_MCP_FILE_ROOTS.
  • Read-only batch — batch_ops rejects every non-GET action at both schema and runtime layers.

Every tool declares MCP annotations — readOnlyHint, destructiveHint, idempotentHint, openWorldHint, titles. Clients that honor them (Claude Code does) auto-allow reads in plan mode, parallelize them safely, and gate the destructive three.

Trim the advertised surface with ASANA_MCP_TOOLS=read (30 tools), write, or a comma-list — a triage agent doesn't need delete tools in its context.

Full inputs and semantics: docs/API.md.

Composites: one call, one answer

Five tools that replace ten-call round-trips, built from running real boards daily:

  • asana_morning_brief — incomplete tasks bucketed overdue / due-today / upcoming / blocked-by-dependency, one call.
  • asana_user_queue — one person's FULL queue, paginated past the API's 100-result search cap, bucketed by due date with per-project counts. The "what is X sitting on?" call.
  • asana_portfolio_rollup — per-project health (incomplete / overdue / completed-this-week + status) across a portfolio or project list. include_archived: true catches the open tasks hiding on archived boards — every default listing skips them.
  • asana_board_rollup — one board grouped by section, any number custom field summed per section ("Deal $", "Claim $"), deadline fields checked for overdue by name — fields resolve live from the board's own settings, nothing hard-coded.
  • asana_triage_inbox — bulk-create from a triaged list (the bulk CREATE the API doesn't have), per-item overrides, continues past failures.

Honest limits

  • Asana's search API caps at 100 results with no pagination. Tools built on it say so (truncated: true) instead of pretending the tail doesn't exist; asana_user_queue and the list tools paginate past it where the REST API allows.
  • The /batch endpoint silently discards PUT bodies and GET options upstream — so this server doesn't route writes through it. asana_batch_ops exists for GET-with-default-fields only, and its description says exactly that.
  • Comment rich text (html_text on stories) is downgraded to escaped plaintext by Asana — comments here are plain text by design rather than silently ugly.
  • Date custom fields come back as full ISO timestamps; overdue math normalizes to YYYY-MM-DD before comparing (a silent all-clear bug we hit and fixed).
  • A PAT reads only its own My Tasks (others 403) — asana_user_queue uses the assignee route that works for anyone.

More in docs/TROUBLESHOOTING.md.

Security

Your PAT has the same access as your Asana login. It's read from ASANA_PAT, the macOS Keychain (asana-mcp), or ~/.asana-mcp.json (written mode 600) — never logged, never sent anywhere but api.asana.com's host. No telemetry, no phone-home; read SECURITY.md.

Development

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

PRs welcome — see CONTRIBUTING.md. MIT.


Also by the same author: @jtalk22/slack-mcp — catch up on Slack without reading it.

來源:README.md,提交 f583fe1

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分