Minimal Asana MCP server with essential task operations (11 tools)
npm install mcp-asana-minimalMinimal Asana MCP server with essential task operations (11 tools)
A lightweight Model Context Protocol (MCP) server for Asana that provides only the essential task management tools, designed to stay under Cursor's 40-tool limit.
---
- ✅ 11 Essential Tools - Only what you need
- ✅ Personal Access Token Auth - Simple authentication
- ✅ TypeScript - Type-safe implementation
- ✅ Lightweight - Minimal dependencies
---
1. asana_create_task - Create a new task (supports section parameter)
2. asana_update_task - Update an existing task
3. asana_get_task - Get task details
4. asana_list_tasks - List tasks with filters
5. asana_list_projects - List projects in workspace(s)
6. asana_add_comment - Add comments to tasks
7. asana_create_section - Create a new section in a project (works for both list and board views)
8. asana_list_sections - List all sections in a project
9. asana_add_task_to_section - Move an existing task to a different section/column
10. asana_create_subtask - Create a new subtask within an existing task
11. asana_list_subtasks - List all subtasks of a task
---
1. Go to: https://app.asana.com/0/my-apps
2. Click "Create New Token" or "Personal Access Token"
3. Give it a name (e.g., "Cursor IDE Integration")
4. Copy the token
``bash`
export ASANA_ACCESS_TOKEN="your_token_here"
Or add to your shell profile (~/.zshrc or ~/.bashrc):`bash`
echo 'export ASANA_ACCESS_TOKEN="your_token_here"' >> ~/.zshrc
source ~/.zshrc
---
Add to your ~/.cursor/mcp.json:
`json`
{
"mcpServers": {
"asana-minimal": {
"command": "npx",
"args": ["-y", "mcp-asana-minimal"],
"env": {
"ASANA_ACCESS_TOKEN": "${ASANA_ACCESS_TOKEN}"
}
}
}
}
---
After configuration, restart Cursor and use natural language commands:
- "Create a task in Asana called 'Review code'"
- "List my Asana tasks"
- "Update task ABC123 with status completed"
- "Get details for task XYZ789"
- "List all projects in my workspace"
- "Add a comment to task ABC123"
---
`bash`
npm install
npm run build
`bash`
npm start
`bash`
npm publish --access public
---
Create a new task in Asana.
Parameters:
- name (required) - Task namenotes
- (optional) - Task descriptionworkspace
- (optional) - Workspace GIDproject
- (optional) - Project GIDsection
- (optional) - Section GID to add task to (requires project)assignee
- (optional) - Assignee GIDdue_on
- (optional) - Due date (YYYY-MM-DD)
Update an existing task.
Parameters:
- task_id (required) - Task GIDname
- (optional) - New task namenotes
- (optional) - New descriptionassignee
- (optional) - Assignee GID (use "none" to unassign)due_on
- (optional) - Due date (use "none" to remove)completed
- (optional) - Mark as completed
Get details of a specific task.
Parameters:
- task_id (required) - Task GID
List tasks with optional filters.
Parameters:
- project (optional) - Filter by project GIDassignee
- (optional) - Filter by assignee GID (use "me" for current user)workspace
- (optional) - Filter by workspace GIDcompleted
- (optional) - Filter by completion statuslimit
- (optional) - Max results (default: 50, max: 100)
List projects in workspace(s).
Parameters:
- workspace (optional) - Filter by workspace GID (lists all accessible projects if not provided)archived
- (optional) - Include archived projects (default: false)limit
- (optional) - Max results (default: 50, max: 100)
Add a comment (story) to an existing task.
Parameters:
- task_id (required) - Task GIDtext
- (required) - Comment text
Create a new section in an Asana project. Works for both list sections and board columns.
Parameters:
- project (required) - Project GIDname
- (required) - Section name
List all sections (list sections or board columns) in a project.
Parameters:
- project (required) - Project GID
Move an existing task to a different section/column.
Parameters:
- task_id (required) - The GID of the task to movesection_id
- (required) - The GID of the section to move the task to
Create a new subtask within an existing task.
Parameters:
- parent_task_id (required) - The GID of the parent taskname
- (required) - Name of the subtasknotes
- (optional) - Subtask description/notesassignee
- (optional) - User GID or "me" to assign the subtaskdue_on
- (optional) - Due date in YYYY-MM-DD format
List all subtasks of a task.
Parameters:
- task_id` (required) - The GID of the parent task
---
MIT
---
Created: 2025-12-11