Asana MCP server
Last verified: 2026-09
Tasks and projects in Asana.
Community Chat, mail & docs Needs a secret Claude Desktop, Cursor, Windsurf, Claude Code
What it does
Asana workspaces, projects, tasks, stories, dependencies. asana_create_task and update are writes. Optional read-only mode via env.
It sits in Chat, mail & docs: These servers act as the bot or the integration you install.
Good for
- List workspaces and search tasks in one project.
- Create a task in a test project, not the company workspace.
- Read stories on a task instead of opening Asana.
- Enable read-only mode if the package supports it.
Tools
- asana_list_workspaces / asana_search_projects / asana_get_project — Navigate.
- asana_search_tasks / asana_get_task / asana_get_task_stories — Read work.
- asana_create_task / asana_update_task / asana_create_subtask / asana_create_task_story — Write.
- asana_add_task_dependencies / asana_add_task_dependents — Graph.
Config (Claude Desktop / Cursor / Windsurf)
Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets.
Windows paths look like C:\\Users\\you\\project, not /path/to.
Host-side steps →
Claude Desktop
| OS | Config file |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json
(usually C:\Users\<you>\AppData\Roaming\Claude\) |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Cursor
| Scope | macOS / Linux | Windows |
|---|---|---|
| This project | .cursor/mcp.json in the repo root | |
| This user | ~/.cursor/mcp.json |
%USERPROFILE%\.cursor\mcp.json |
Windsurf
| OS | Config file |
|---|---|
| macOS / Linux | ~/.codeium/windsurf/mcp_config.json |
| Windows | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
{
"mcpServers": {
"asana": {
"command": "npx",
"args": [
"-y",
"asana-mcp"
],
"env": {
"ASANA_ACCESS_TOKEN": "1/..."
}
}
}
}
Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.
One-liner: npx -y asana-mcp
Secrets it wants: ASANA_ACCESS_TOKEN
How to get started
- Create a PAT. Set ASANA_ACCESS_TOKEN. Turn on read-only mode if the package supports it.
- List workspaces, then search tasks in one project.
- Do not let it mass-update a company workspace.
Access risk
Create/update will ping teammates. A PAT is the user.
When to skip it
Skip it for Linear/Jira/Todoist if that is the real tracker.
Vs alternatives
| Server | Official? | Needs a secret? | Best for |
|---|---|---|---|
| Asana | No | Yes | Tasks and projects in Asana. |
| Linear | No | Yes | Issues, projects, and cycles in Linear. |
| Todoist | No | Yes | Inbox and projects in Todoist. |
| Jira | No | Yes | Jira issues and JQL search. |
More in Chat, mail & docs
FAQ
Which token?
ASANA_ACCESS_TOKEN — a PAT. Create/update pings teammates.
Asana or Linear or Todoist?
Team tracker vs personal inbox. Match what the org already uses.
Dependencies and subtasks?
Yes — asana_add_task_dependencies, asana_create_subtask, etc.
Can it mass-update?
If you ask it to. Do not point it at the company workspace on day one.