asana_add_project_to_task
Add an existing task to a project. If no positioning arguments are given, the task will be added to the end of the project.
Run Asana from your client: search a workspace with Asana's own filter vocabulary, build task structure with subtasks and two-way dependencies, move work between sections and projects, and post the weekly status update.
LABSCO SUMMARY
asana_search_tasks is the centre of this set: blocked and blocking, section and portfolio membership, five different date axes, all in one call, which turns questions that need a saved search in the UI into a single request. The writes are structured rather than cosmetic — subtasks, dependencies both ways, re-parenting, and section moves that respect position. It is one token's view of Asana, so whatever that token cannot see does not exist here, and deletion of tasks, tags and sections sits in the same set as the reads.
A server over the Asana API scoped to one access token's workspaces — tasks, subtasks, dependencies, projects, sections, tags and project status updates in 41 tools.
ASANA_ACCESS_TOKEN, and an Asana account whose workspaces that token can reach — asana_list_workspaces is the entry point to everything else. The write surface includes asana_delete_task, which the tool itself describes as permanent and not undoable.
One command plus a key — npx -y @roychri/mcp-server-asana, then supply credentials
USE CASES
Search the workspace for incomplete tasks that are blocked or blocking, open the ones that matter, and read the comment history to see who is waiting on whom.
Create the subtasks under the parent, read them back to confirm the shape, then set which ones block which so the order is expressed in Asana rather than in a comment.
Get the task counts behind the claim first, post the status update with a colour that matches it, and read the previous updates so the wording follows on from the last one.
Pull the personal task list for the workspace, update due dates and assignees on what has moved, and drop each task into the section it now belongs in.
Create the project in the right team, add the sections it will be organised by, then create the first tasks and attach any existing ones that belong to it.
List the workspace's tags, see what each one is actually attached to, detach the ones that were applied by mistake, and delete the tags that no longer carry meaning.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
asana_add_project_to_taskAdd an existing task to a project. If no positioning arguments are given, the task will be added to the end of the project.
asana_add_tag_to_taskAdd a tag to a task
asana_add_task_dependenciesSet dependencies for a task
asana_add_task_dependentsSet dependents for a task (tasks that depend on this task)
asana_add_task_to_sectionMove a task to a section within its project
asana_create_projectCreate a new project in a workspace or team
asana_create_project_statusCreate a new status update for a project
asana_create_sectionCreate a new section in a project
asana_create_subtaskCreate a new subtask for an existing task
asana_create_tag_for_workspaceCreate a new tag in a workspace
asana_create_taskCreate a new task in a project
asana_create_task_storyCreate a comment or story on a task. Either text or html_text is required.
asana_delete_project_statusDelete a project status update
asana_delete_sectionDelete a section from a project
asana_delete_tagDelete a tag
asana_delete_taskDelete a task. This permanently removes the task and cannot be undone.
asana_get_multiple_tasks_by_gidGet detailed information about multiple tasks by their GIDs (maximum 25 tasks)
asana_get_my_tasksGet tasks from the authenticated user's 'My Tasks' list in a workspace. Returns the user's personal task list including sections like Inbox, Today, This Week, etc.
asana_get_projectGet detailed information about a specific project
asana_get_project_sectionsGet sections in a project
asana_get_project_statusGet a project status update
asana_get_project_statusesGet all status updates for a project
asana_get_project_task_countsGet the number of tasks in a project
asana_get_subtasksGet all subtasks of a given task. Returns a compact representation of each subtask.
asana_get_tagGet detailed information about a specific tag
asana_get_tags_for_taskGet a task's tags
asana_get_tags_for_workspaceGet tags in a workspace
asana_get_taskGet detailed information about a specific task
asana_get_task_storiesGet comments and stories for a specific task
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. Supports pagination and optional field selection.
asana_get_tasks_for_tagGet tasks for a specific tag
asana_list_workspacesList all available workspaces in Asana
asana_remove_project_from_taskRemove a task from a project. The task will still exist in the system, but it will not be in the project anymore.
asana_remove_tag_from_taskRemove a tag from a task
asana_search_projectsSearch for projects in Asana using name pattern matching
asana_search_tasksSearch tasks in a workspace with advanced filtering options
asana_set_parent_for_taskSet the parent of a task and position the subtask within the other subtasks of that parent
asana_update_projectUpdate a project's details (name, description, etc.)
asana_update_sectionUpdate a section (rename it)
asana_update_tagUpdate an existing tag
asana_update_taskUpdate an existing task's details
BEFORE YOU INSTALL
41 tools when we connected. Setting READ_ONLY_MODE to true disables every create, update and delete tool, leaving reads only.
All 3 documented clients run the server on your machine.
CONTEXT COST
Rated by the size of the 41 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y @roychri/mcp-server-asana{
"mcpServers": {
"asana": {
"command": "npx",
"args": [
"-y",
"@roychri/mcp-server-asana"
],
"env": {
"ASANA_ACCESS_TOKEN": "<YOUR_ASANA_ACCESS_TOKEN>"
}
}
}
}claude mcp add asana -e ASANA_ACCESS_TOKEN=<YOUR_ASANA_ACCESS_TOKEN> -- npx -y @roychri/mcp-server-asana[mcp_servers.asana]
command = "npx"
args = ["-y", "@roychri/mcp-server-asana"]
[mcp_servers.asana.env]
ASANA_ACCESS_TOKEN = "<YOUR_ASANA_ACCESS_TOKEN>"