
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 进程和个人访问令牌读取并修改 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 的网络连接。
安装
在 SourceWeft 中
- 打开 控制台中的 Asana MCP Server,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
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.
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:
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?
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:
or export ASANA_PAT yourself.
2. Add the server to your MCP client:
Claude Code one-liner: claude mcp add asana -- npx -y @jtalk22/asana-mcp
3. Verify:
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_ondone right), custom fields (dates wrapped,multi_enumarrays), rich notes (sanitized), attachments (100MB uploads), bulk ops, project statuses, portfolios, templates with async-job polling, andasana_set_notes_safefor 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_sectionrefuse to run withoutconfirm: true. - Local file boundary —
attach_filerequiresconfirm: trueand only reads from the current directory orASANA_MCP_FILE_ROOTS. - Read-only batch —
batch_opsrejects 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: truecatches 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_queueand the list tools paginate past it where the REST API allows. - The
/batchendpoint silently discards PUT bodies and GET options upstream — so this server doesn't route writes through it.asana_batch_opsexists for GET-with-default-fields only, and its description says exactly that. - Comment rich text (
html_texton 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-DDbefore comparing (a silent all-clear bug we hit and fixed). - A PAT reads only its own My Tasks (others 403) —
asana_user_queueuses 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
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版本历史
1- v1.0.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分