Asana MCP Server

Asana's own hosted MCP endpoint for reading and changing tasks, projects and portfolios

Official · asana.com Remote (hosted) · Streamable HTTP Productivity

40 popularity score

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Its sign-in lets no client register itself: a client signs in only with an app (a client ID) registered with its maker first, so these snippets work only after that step.

Claude CodeTerminal; Claude Code then prompts for the client secret
claude mcp add --transport http \
  --client-id <YOUR_CLIENT_ID> \
  --client-secret \
  --callback-port 8080 \
  asana https://mcp.asana.com/v2/mcp
CursorCursor Settings > Tools & MCP > Add new global MCP server
{
  "mcpServers": {
    "asana": {
      "url": "https://mcp.asana.com/v2/mcp",
      "auth": {
        "CLIENT_ID": "${env:ASANA_CLIENT_ID}",
        "CLIENT_SECRET": "${env:ASANA_CLIENT_SECRET}"
      }
    }
  }
}
VS CodeCommand Palette > MCP: Add Server > HTTP, then enter client ID and secret when prompted
{
  "servers": {
    "asana": {
      "type": "http",
      "url": "https://mcp.asana.com/v2/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.asana]
command = "npx"
args = [
  "-y",
  "mcp-remote@latest",
  "https://mcp.asana.com/v2/mcp",
  "3334",
  "--static-oauth-client-info",
  "@/Users/<YOUR_USERNAME>/.asana/mcp_oauth_client.json",
  "--resource",
  "https://mcp.asana.com/v2"
]
windsurfWindsurf mcp.json (MCP Marketplace gear icon)
{
  "mcpServers": {
    "asana": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://mcp.asana.com/v2/mcp",
        "3334",
        "--static-oauth-client-info",
        "{\"client_id\": \"${env:ASANA_CLIENT_ID}\", \"client_secret\": \"${env:ASANA_CLIENT_SECRET}\"}"
      ],
      "env": {
        "ASANA_CLIENT_ID": "${env:ASANA_CLIENT_ID}",
        "ASANA_CLIENT_SECRET": "${env:ASANA_CLIENT_SECRET}"
      }
    }
  }
}
kiroKiro: Open MCP Config (mcp.json)
{
  "mcpServers": {
    "asana": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://mcp.asana.com/v2/mcp",
        "3334",
        "--static-oauth-client-info",
        "{\"client_id\": \"${env:ASANA_CLIENT_ID}\", \"client_secret\": \"${env:ASANA_CLIENT_SECRET}\"}"
      ],
      "env": {
        "ASANA_CLIENT_ID": "${env:ASANA_CLIENT_ID}",
        "ASANA_CLIENT_SECRET": "${env:ASANA_CLIENT_SECRET}"
      }
    }
  }
}
Claude (desktop and web)Asana app in Claude, per the Asana Help Center
https://mcp.asana.com/v2/mcp
ChatGPTAsana app in ChatGPT, per the Asana Help Center
https://mcp.asana.com/v2/mcp

What it does

Asana runs this MCP server itself at https://mcp.asana.com/v2/mcp, over Streamable HTTP. There is nothing to install: a client connects to the address and the user signs in to Asana in the browser. Once connected, an assistant can look up tasks, projects, portfolios, teams, users and AI Teammates, pull status overviews of projects, and create, update, comment on or delete tasks, create projects and post project status updates.

The tools reference lists 27 tools: 18 that only read, 6 that write, and 3 preview tools that show a confirmation card before anything is created; Asana says the preview tools render only in Claude and ChatGPT, and other clients use the plain write tools, which act at once. Asana says the list changes over time and that `tools/list` in the client is the authoritative source.

This V2 server replaces the earlier beta server at https://mcp.asana.com/sse, which Asana marked deprecated with shutdown on 05/11/2026. V2 tool names dropped the `asana_` prefix that V1 used. A session is tied to one workspace, chosen at sign-in, and tokens issued for it are not accepted by the Asana REST API. The endpoint's sign-in metadata (/.well-known/oauth-protected-resource/v2/mcp) names app.asana.com as the authorization server and a single scope, `default`, which matches the docs' statement that MCP apps get full access to every tool rather than per-tool scopes.

What it needs

An Asana account, with the MCP client not blocked by the workspace admin through Asana app management. For coding clients (Claude Code, Cursor, VS Code, Codex, Windsurf, Kiro), you first create your own MCP app in the Asana developer console to get a client ID and client secret and set the redirect URL your client uses, because the server does not offer dynamic client registration. Codex, Windsurf and Kiro connect through the community `mcp-remote` package, which needs Node.js and npm. The Claude and ChatGPT apps are set up from the Asana Help Center.

Limits

Each session reaches one workspace; working across several needs separate sessions. `search_tasks` works on Premium Asana accounts only (others use `get_tasks`). `create_tasks` and `update_tasks` take up to 50 tasks per call. There is no dedicated goals tool: goals are found through `search_objects`. The preview tools with a confirmation step work only in Claude and ChatGPT. MCP tokens cannot be used with the Asana REST API. Some clients, such as Replit and JetBrains, do not yet support V2's pre-registered OAuth and were told to stay on the V1 server until its 05/11/2026 shutdown. Asana describes `mcp-remote`, used for Codex, Windsurf and Kiro, as experimental and unsupported by Asana.

Who it suits

Suits Asana users who want an assistant to triage, create and update work in their workspace without running anything locally, and who prefer the vendor's own endpoint. Claude and ChatGPT users get the simplest setup through Asana's apps and the confirmation previews. Developers on coding clients must first register their own OAuth app, which is more setup than a token-based server. Since writes such as delete_task act without a confirmation step outside Claude and ChatGPT, teams that want read-only use should know the token carries full access to all tools. Those who need the Asana REST API itself or several workspaces in one session should look elsewhere.

Tools 27

search_objects
Finds tasks, projects, portfolios, goals, teams, users, tags, custom fields or AI Teammates by name
get_task
Full record of one task, with subtasks, dependencies and comments
get_tasks
Lists tasks filtered by project, section, tag, user task list or assignee
get_my_tasks
Lists the signed-in user's assigned tasks
search_tasks
Full-text task search with filters; Premium accounts only
get_project
Details of one project, optionally with its sections
get_projects
Lists projects in the workspace, by team or including archived ones
get_portfolio
Details of one portfolio and its projects
get_portfolios
Lists the user's portfolios in the workspace
get_items_for_portfolio
Lists the projects and goals inside a portfolio
get_status_overview
Builds a status summary of matching projects or portfolios, with blockers
get_attachments
Lists attachments on a task, project or project brief with their links
get_user
Looks up a user by GID, email or "me"
get_me
Name, email and workspaces of the signed-in user
get_users
Lists workspace users, optionally by team
get_teams
Lists teams in the workspace, optionally for one user
get_agent
Full record of one AI Teammate
get_workspace_agents
Lists the AI Teammates set up in the workspace
create_tasks
Creates up to 50 tasks at once, with no confirmation step
create_project
Creates a project, optionally with sections and tasks
update_tasks
Changes fields on up to 50 tasks in one call
delete_task
Deletes a task permanently, with subtasks not held by another project
add_comment
Posts a comment on a task, with mentions or pinning
create_project_status_update
Posts a coloured status update to a project or portfolio
create_task_preview
Shows a draft task for approval before creating it (Claude and ChatGPT)
create_project_preview
Shows a draft project plan for approval before creating it (Claude and ChatGPT)
search_tasks_preview
Shows task search results in an interactive view (Claude and ChatGPT)

Similar servers