Back to the MCP Gateway catalog

MCP Gateway · Catalog

Asana icon

Asana MCP server

Official

Asana MCP is the official Model Context Protocol server for Asana, with OAuth and tools that cover tasks, projects, goals, portfolios, and teams. Connect it through the Speakeasy MCP Gateway and agents such as Claude, Cursor, and ChatGPT get one governed URL, with SSO, RBAC, and a full audit trail.

Project management44 toolsAuth: oauth

Behind the MCP Gateway

Run Asana MCP behind the MCP Gateway

One URL for every agent, sign-in through your IdP, RBAC down to the tool, and every Asana call inspected and logged.

Deploy on MCP Gateway

Tools · 44

Each tool below can be allowed or denied per team and role at the MCP Gateway, and every call is inspected and logged.

asana_get_allocations

List allocations filtered by either workspace + assignee or parent (project). Returns allocation details including start/end dates, effort (hours or percentage), and associated projects or portfolios. Use for capacity planning and resource management. Supports pagination for workspaces with many allocations.

asana_get_attachment

Get detailed attachment data including name, resource type, download_url, view_url, and parent. Returns complete attachment information needed for accessing attached files.

asana_get_attachments_for_object

List all attachments for a project, project brief, or task. Returns attachment names, IDs, and URLs (download_url, permanent_url, view_url). Use for accessing files attached to Asana objects. Supports pagination for objects with many attachments.

asana_get_goals

List goals filtered by context (portfolio, project, task, workspace, or team). One context required. Returns goal names, IDs. Use for goal overview or reporting.

asana_get_goal

Get detailed goal data including name, owner, current_status_update, and due_on. Use after finding goal ID via typeahead. Returns complete goal configuration needed for goal operations.

asana_create_goal

Create a new goal. REQUIRES name, time_period, and either workspace or team. Use to establish objectives and key results. Returns created goal details with ID. Supports start/due dates and goal ownership assignment.

asana_get_parent_goals_for_goal

List all parent goals for a specific goal. Returns parent goal names, IDs, and metric.progress. Use to understand goal hierarchy and relationships. Important for managing nested OKRs and goal dependencies.

asana_update_goal

Update goal properties like name, owner, dates, metrics, or status. Use for adjusting timelines, progress, or reassigning ownership. Returns updated goal data. Partial updates supported - only specified fields will change.

asana_update_goal_metric

Update goal metric properties like current_number_value. Returns updated goal data. Partial updates supported - only specified fields will change.

asana_get_portfolio

Get detailed portfolio data by ID including name, owner, and projects. Use after finding portfolio ID via search_objects. Returns complete portfolio configuration. Essential for understanding portfolio context and content.

asana_get_portfolios

List portfolios in workspace owned by the current user. REQUIRES workspace parameter. Returns portfolio names and IDs for portfolios you own. Use for portfolio discovery and management. Supports pagination for workspaces with many portfolios.

asana_get_items_for_portfolio

List projects, goals, and other items in a portfolio. Returns item names, IDs, and types. Use for portfolio content exploration and management. Supports pagination for portfolios with many items.

asana_get_project

Get detailed project data including name, description, owner, members, custom fields, and settings. Use after finding project ID via typeahead. Returns complete project configuration needed for task operations. Specify opt_fields for custom fields data.

asana_get_project_sections

List all sections in a project with their IDs. Essential for task placement and organization. Returns section names and IDs needed for creating/moving tasks. Use before creating tasks to find correct section ID.

asana_get_projects

List projects in a workspace, optionally filtered by team. Returns project names, IDs, owner info, and task counts (num_tasks, num_incomplete_tasks, num_completed_tasks). A null task_counts value means counts could not be retrieved and should not be interpreted as zero.

asana_get_project_status

Get single status update by ID. Returns color (green/yellow/red), text, author, and timestamp. Use when you know specific status ID. For all statuses, use asana_get_project_statuses instead.

asana_get_project_statuses

List all status updates for a project chronologically. Returns status color, text, author for each update. Use to track project health over time. Supports pagination for projects with many updates.

asana_create_project_status

Create project status update with color (green/yellow/red) and text. Use for regular project health updates, milestone documentation, or blocker reporting. Supports HTML formatting. Returns created status ID. One of text or html_text must be provided.

asana_get_project_task_counts

Get task statistics for a project. Returns counts of incomplete, completed, and milestone tasks. Use for quick project progress overview, capacity checks, or reporting dashboards.

asana_get_projects_for_team

List all projects for a team. Returns both active and archived projects with IDs. Use after finding team ID via typeahead. Supports pagination for teams with many projects. Essential for team portfolio views.

asana_get_projects_for_workspace

Get ALL projects in a workspace across all teams. Returns project names and IDs. Use for workspace-wide operations or when team is unknown. May return large result set - consider using typeahead search first.

asana_create_project

Create new project in Asana. Every project requires a workspace, and this cannot be changed after creation. If workspace is an organization, a team must also be specified. Client agents should explicitly ask for team when creating a project rather than inferring it. Supports custom fields, templates, due dates, and privacy settings. Returns project ID for immediate task creation. Essential for project setup.

asana_search_tasks

Advanced task search with multiple filters. Supports text search, all date filters, status filters, user filters, project/portfolio/section/tag filters, and custom fields. Returns matching tasks with IDs. Handles complex queries and bulk task operations. When the user asks about tasks assigned to them, use assignee_any="me" for best results. Note: If you specify projects_any and sections_any, you will receive tasks for the project and tasks for the section. If you're looking for only tasks in a section, omit the projects_any from the request.

asana_get_task

Get full task details by ID. Returns name, description, assignee, due dates, custom fields, projects, dependencies, followers, parent, memberships (project and section), and acknowledgements (hearts and likes). Essential before updating tasks. Use opt_fields for custom field values. Comments and subtasks are included by default. Set include_comments or include_subtasks to false to exclude them. Required for understanding task context.

asana_create_task

Create task in Asana with context. REQUIRES one of: project_id, parent, or workspace+assignee together. For assignee-only tasks, both workspace and assignee must be provided. Returns task ID with confirmation. You can directly tag and mention people by using links in html_notes field.

asana_update_task

Update existing task properties. Change name, notes, assignee, completion status, due dates, custom fields. Requires task ID. Returns updated task data. Use asana_get_task first to understand current state.

asana_get_stories_for_task

Get task activity history (comments, status changes, system events). Returns chronological stories with authors and timestamps. Use for audit trails, understanding task evolution, or retrieving comments.

asana_create_task_story

Add explicit comment to task. ONLY for discussion, feedback, questions, or context not captured by automatic activity logging. Task actions (assignments, status changes) are logged automatically. Supports HTML formatting. One of text or html_text must be provided. Returns story ID.

asana_set_task_dependencies

Set tasks this task depends on (prerequisites). Creates dependency relationship where this task is blocked until dependencies complete. Use for workflow sequencing and project planning. Requires list of task IDs.

asana_set_task_dependents

Set tasks blocked by this task (tasks waiting on this one). Creates dependency where other tasks cannot start until this completes. Use for blocking relationships in project schedules. Requires list of task IDs.

asana_set_parent_for_task

Change task parent (convert to/from subtask). Set parent=null to make regular task. Supports insert positioning among siblings. Use for reorganizing task hierarchy. Returns updated task hierarchy data.

asana_get_tasks

List tasks filtered by context (workspace/project/tag/section/user list). One context required. Supports assignee, date filters. Returns task names and IDs. Use for filtered task views and bulk operations.

asana_delete_task

Delete task from Asana. Use with extreme caution as recovery is challenging. Deletes the task and any subtasks that are not also in another project. Returns success confirmation. Requires task ID. Essential for removing duplicate or obsolete tasks.

asana_add_task_followers

Add followers to task (team members to notify of updates). Automatically sends notifications for task changes. Returns updated followers list. Essential for task collaboration and visibility.

asana_remove_task_followers

Remove followers from task (stop notification subscriptions). Prevents future notifications while maintaining history. Returns updated followers list. Essential for reducing notification noise or when team members change.

asana_get_teams_for_workspace

List all teams in workspace. Returns team names and IDs. Use to discover teams before searching team projects/users. Essential for workspace structure understanding. Supports pagination.

asana_get_teams_for_user

Get teams user belongs to. Returns team names and IDs. Use to check user team access or find teams for specific user. Requires organization ID. "me" supported for current user.

asana_get_time_period

Get detailed information about a time period by ID. Returns name, start date, end date, and status. Use after finding time period ID from other tools. Essential for working with goals and time-based planning.

asana_get_time_periods

List available time periods in a workspace. Filterable by date range. Returns time period names, IDs, start/end dates. REQUIRES workspace parameter. Use for goal planning, reporting periods, or OKR cycles.

asana_typeahead_search

Quick search across Asana objects. ALWAYS use this FIRST before specialized search. Returns most relevant items based on recency and usage. Faster than dedicated search tools for finding specific items. If the user is not specific about which objects to search, use the following priority order: project + task > portfolio > goal + others (user, team, tag, custom_field).If multiple results match the query and the correct one is ambiguous, ask the user to clarify which object they mean rather than guessing.

asana_get_user

Get user details by ID, email, or "me". Returns name, email, workspaces. Use to find user IDs for task assignment. "me" returns authenticated user info. Essential before assigning tasks. When no user_id is provided, defaults to "me" (authenticated user) - equivalent to the former asana_get_user_info tool.

asana_get_team_users

List all team members. Returns user names and IDs. Use team ID from typeahead search first. Supports pagination for large teams. Results are sorted alphabetically and limited to 2000 results.

asana_get_workspace_users

Get all users in workspace. Returns compact users with names and IDs. Results are sorted alphabetically and limited to 2000. Prefer searching more narrowly, like by typeahead or team first instead of this.

asana_list_workspaces

Get all accessible workspaces. Returns workspace IDs needed for most other operations. Always call this FIRST to discover valid workspace IDs before using workspace-specific tools. Results include workspace name, ID, and organization info.

Questions

What is an Asana MCP server?
An Asana MCP server exposes the Asana API to AI agents as Model Context Protocol tools. Instead of a custom integration per agent, any MCP client can connect to the server and call tools such as asana_search_tasks or asana_create_task to work with tasks, projects, goals, portfolios, and teams. The server in this catalog is the official Asana MCP server, which authenticates with OAuth.
What can you do with Asana MCP?
Agents can create, search, update, and delete tasks, manage subtasks and dependencies, add comments, create projects and post project status updates, create goals and update goal metrics, browse portfolios, read attachments, and look up teams, users, and workspaces. Read tools such as asana_get_project_task_counts and asana_get_allocations support reporting and capacity planning. The full tool list is on this page.
Why put Asana MCP behind an MCP gateway?
Connecting the Asana MCP server directly to each client means a separate credential per developer, no inventory of who can reach Asana through an agent, and no record of what agents did with it. An MCP gateway sits between every agent and the Asana server, so sign-in runs through your identity provider, role-based access decides which teams can call which Asana tools, and every call is inspected and logged in one place. The Speakeasy MCP Gateway applies those controls to Asana and to every other server in your catalog.
How do you connect Asana MCP through a gateway?
Add the Asana server from the Speakeasy MCP catalog and every agent reaches it through one gateway URL, next to the rest of your approved servers. Authentication uses OAuth 2.1 with PKCE and dynamic client registration, sign-in runs through your identity provider, and role-based access controls decide which teams can use which Asana tools. Every prompt, response, and tool call is inspected and logged at the gateway.
How is this different from the unofficial Asana MCP?
Community-built Asana MCP servers wrap the same Asana API but are not maintained by Asana, and most authenticate with a personal access token that gives an agent everything the token owner can touch. This catalog lists the official Asana MCP server, which uses OAuth. Running it behind the Speakeasy MCP Gateway adds SSO, role-based access, and an audit trail of every call.

AI everywhere.

Control here.