Asana MCP Server

Asana tasks, projects, and workspaces access for your AI assistant.

Data last scanned today · Reviewed yesterday

604 dangerous tools41 tools145TypeScriptMIT

Overview

This implementation enables AI assistants to interact directly with the Asana API. It allows users to perform operations such as searching for projects within specific workspaces, listing available workspaces, and querying tasks using various filters like completion status, subtasks, or blocking dependencies. The server supports configuration via environment variables, including an optional read-only mode to prevent unintended modifications to workspace data. It is designed to work with standard MCP clients, including the Claude Desktop application.

Our verdict

With a high-risk security score of 30/100, this server should be used with caution. The primary concern is the lack of a dedicated authentication method, meaning anyone with access to the configuration can utilize the server. Additionally, it is a community-maintained project rather than an official vendor tool, and it has not undergone editorial review. Users should prioritize enabling the read-only mode to mitigate risks associated with write operations.

  • Includes an optional read-only mode to restrict write access
  • Small dependency footprint with only three direct dependencies
  • Documented support for advanced task filtering options
  • Lacks native authentication mechanisms for protected access
  • Community-maintained rather than supported by the official vendor
  • No official homepage link provided

Setup

Claude Desktop
{
  "mcpServers": {
    "mcp-server-asana": {
      "args": [
        "-y",
        "@roychri/mcp-server-asana"
      ],
      "command": "npx"
    }
  }
}

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.

  • No read-only mode — running this grants full read/write access.
  • No built-in authentication — anyone with access to this config can invoke every tool it exposes.

Tools

ToolDescriptionRisk
asana_list_workspacesList all available workspaces in Asanalow
asana_search_projectsSearch for projects in Asana using name pattern matchinglow
asana_search_tasksSearch tasks in a workspace with advanced filtering optionslow
asana_get_taskGet detailed information about a specific tasklow
asana_create_taskCreate a new task in a projectmedium
asana_get_task_storiesGet comments and stories for a specific tasklow
asana_update_taskUpdate an existing task's detailsmedium
asana_get_projectGet detailed information about a specific projectlow
asana_get_project_task_countsGet the number of tasks in a projectlow
asana_get_project_sectionsGet sections in a projectlow
asana_create_task_storyCreate a comment or story on a taskmedium
asana_add_task_dependenciesSet dependencies for a taskmedium
asana_add_task_dependentsSet dependents for a task (tasks that depend on this task)medium
asana_create_subtaskCreate a new subtask for an existing taskmedium
asana_get_multiple_tasks_by_gidGet detailed information about multiple tasks by their GIDs (maximum 25 tasks)low
asana_get_project_statusGet a project status updatelow
asana_get_project_statusesGet all status updates for a projectlow
asana_create_project_statusCreate a new status update for a projectmedium
asana_delete_project_statusDelete a project status updatehigh
asana_set_parent_for_taskSet the parent of a task and position the subtask within the other subtasks of that parentmedium
asana_get_tagGet detailed information about a specific taglow
asana_get_tags_for_taskGet a task's tagslow
asana_get_tasks_for_tagGet tasks for a specific taglow
asana_get_tags_for_workspaceGet tags in a workspacelow
asana_update_tagUpdate an existing tagmedium
asana_delete_tagDelete a taghigh
asana_create_tag_for_workspaceCreate a new tag in a workspacemedium
asana_add_tag_to_taskAdd a tag to a taskmedium
asana_remove_tag_from_taskRemove a tag from a taskmedium
asana_add_project_to_taskAdd an existing task to a projectmedium
asana_remove_project_from_taskRemove a task from a projectmedium
asana_delete_taskDelete a task permanentlyhigh
asana_create_projectCreate a new project in a workspace or teammedium
asana_update_projectUpdate a project's details (name, description, etc.)medium
asana_create_sectionCreate a new section in a projectmedium
asana_update_sectionUpdate a section (rename it)medium
asana_delete_sectionDelete a section from a projecthigh
asana_add_task_to_sectionMove a task to a section within its projectmedium
asana_get_subtasksGet all subtasks of a given task. Returns a compact representation of each subtask.low
asana_get_tasks_for_projectGet all tasks in a project. Use this instead of search_tasks when you need to list tasks in a specific project. Works on free Asana plans (unlike search_tasks which requires premium). Supports pagination and optional field selection.low
asana_get_my_tasksGet tasks from the authenticated user's 'My Tasks' list in a workspacelow

Compatibility

ClientLocalDockerRemoteRead-only
ChatGPT
Claude Desktop
Cursor
VS Code
Windsurf

Frequently asked questions

What configuration is required to run the Asana MCP server?

You must provide an ASANA_ACCESS_TOKEN via an environment variable to authorize the server.

Can I prevent the MCP server from modifying my Asana data?

Yes, you can set the READ_ONLY_MODE environment variable to 'true' to disable all create, update, and delete operations.

How can I improve the chances of the LLM selecting the right Asana tool?

Mentioning the word 'asana' in your prompt will help the AI identify that it should use the Asana tools.

Does the server support filtering tasks by their status or attributes?

Yes, the asana_search_tasks tool supports various filters including completed status, resource subtype, subtask status, and attachment presence.

Alternatives

Badge

Asana MCP Server security score, rated on RepoAI

Maintain this server? Add the live badge to your README.