100+ integrations are ready to connect to your AI.Connect your first MCP

Asana MCP server for your AI

Search every task in a workspace, reassign and re-date them in bulk, spin up projects with sections and subtasks, and pull the comment history behind any piece of work.

PopMCPAsana

Which tasks in the Q3 Launch project are overdue and who owns them

Supported Asana tools

Every task, project, section, portfolio, goal, tag, custom field and time-tracking call PopMCP exposes, plus the webhooks and polls it watches for you.

asana_add_followers_for_task

Add followers to a task.

asana_add_project_for_task

Add a project to a task.

asana_add_tag_for_task

Add a tag to a task.

asana_create_subtask_for_task

Create a subtask.

asana_create_task

Create a task.

asana_delete_task

Delete a task.

asana_get_subtasks_for_task

Get subtasks from a task.

asana_get_task

Get a task.

asana_get_tasks

Get multiple tasks.

asana_get_tasks_for_project

Get tasks from a project.

asana_search_tasks_for_workspace

Search tasks in a workspace.

asana_set_parent_for_task

Set the parent of a task.

asana_update_task

Update a task.

asana_create_project

Create a project.

asana_delete_project

Delete a project.

asana_get_project

Get a project.

asana_get_projects

Get multiple projects.

asana_get_projects_for_team

Get a team's projects.

asana_get_projects_for_workspace

Get all projects in a workspace.

asana_update_project

Update a project.

asana_get_items_for_portfolio

Get portfolio items.

asana_get_portfolio

Get a portfolio.

asana_get_portfolios

Get multiple portfolios.

asana_get_goal

Get a goal.

asana_get_goals

Get goals.

asana_create_tag

Create a tag.

asana_get_custom_field

Get a custom field.

asana_get_custom_fields_for_workspace

Get a workspace's custom fields.

asana_get_tags

Get multiple tags.

asana_get_tags_for_workspace

Get tags in a workspace.

asana_get_user

Get an user.

asana_get_users

Get multiple users.

asana_get_users_for_workspace

Get users in a workspace or organization.

asana_add_task_for_section

Add task to section.

asana_create_section_for_project

Create a section in a project.

asana_create_story_for_task

Create a story on a task.

asana_get_sections_for_project

Get sections in a project.

asana_get_stories_for_task

Get stories from a task.

asana_get_team

Get a team.

asana_get_teams_for_workspace

Get teams in a workspace.

asana_get_workspace

Get a workspace.

asana_get_workspaces

Get multiple workspaces.

asana_create_webhook

Establish a webhook.

asana_delete_webhook

Delete a webhook.

asana_get_webhooks

Get multiple webhooks.

asana_get_attachment

Get an attachment.

asana_get_attachments_for_object

Get attachments from an object.

asana_typeahead_for_workspace

Get objects via typeahead.

asana_add_dependencies_for_task

Set dependencies for a task.

asana_add_dependents_for_task

Set dependents for a task.

asana_duplicate_task

Duplicate a task.

asana_get_dependencies_for_task

Get dependencies from a task.

asana_get_dependents_for_task

Get dependents from a task.

asana_get_task_for_custom_id

Get a task for a given custom ID.

asana_get_tasks_for_section

Get tasks from a section.

asana_get_tasks_for_tag

Get tasks from a tag.

asana_get_tasks_for_user_task_list

Get tasks from an user task list.

asana_remove_dependencies_for_task

Unlink dependencies from a task.

asana_remove_dependents_for_task

Unlink dependents from a task.

asana_remove_follower_for_task

Remove followers from a task.

asana_remove_project_for_task

Remove a project from a task.

asana_remove_tag_for_task

Remove a tag from a task.

asana_add_custom_field_setting_for_project

Add a custom field to a project.

asana_add_followers_for_project

Add followers to a project.

asana_add_members_for_project

Add users to a project.

asana_create_project_for_team

Create a project in a team.

asana_create_project_for_workspace

Create a project in a workspace.

asana_duplicate_project

Duplicate a project.

asana_get_projects_for_task

Get projects a task is in.

asana_get_task_counts_for_project

Get task count of a project.

asana_project_save_as_template

Create a project template from a project.

asana_remove_custom_field_setting_for_project

Remove a custom field from a project.

asana_remove_followers_for_project

Remove followers from a project.

asana_remove_members_for_project

Remove users from a project.

asana_search_projects_for_workspace

Search projects in a workspace.

asana_add_custom_field_setting_for_portfolio

Add a custom field to a portfolio.

asana_add_item_for_portfolio

Add a portfolio item.

asana_add_members_for_portfolio

Add users to a portfolio.

asana_create_portfolio

Create a portfolio.

asana_delete_portfolio

Delete a portfolio.

asana_duplicate_portfolio

Duplicate a portfolio.

asana_remove_custom_field_setting_for_portfolio

Remove a custom field from a portfolio.

asana_remove_item_for_portfolio

Remove a portfolio item.

asana_remove_members_for_portfolio

Remove users from a portfolio.

asana_update_portfolio

Update a portfolio.

asana_add_custom_field_setting_for_goal

Add a custom field to a goal.

asana_add_followers

Add a collaborator to a goal.

asana_create_goal

Create a goal.

asana_create_goal_metric

Create a goal metric.

asana_delete_goal

Delete a goal.

asana_get_parent_goals_for_goal

Get parent goals from a goal.

asana_remove_custom_field_setting_for_goal

Remove a custom field from a goal.

asana_remove_followers

Remove a collaborator from a goal.

asana_update_goal

Update a goal.

asana_update_goal_metric

Update a goal metric.

asana_create_custom_field

Create a custom field.

asana_create_enum_option_for_custom_field

Create an enum option.

asana_create_tag_for_workspace

Create a tag in a workspace.

asana_delete_custom_field

Delete a custom field.

asana_delete_tag

Delete a tag.

asana_get_favorites_for_user

Get an user's favorites.

asana_get_tag

Get a tag.

asana_get_tags_for_task

Get a task's tags.

asana_get_user_for_workspace

Get an user in a workspace or organization.

asana_get_users_for_team

Get users in a team.

asana_insert_enum_option_for_custom_field

Reorder a custom field's enum.

asana_update_custom_field

Update a custom field.

asana_update_enum_option

Update an enum option.

asana_update_tag

Update a tag.

asana_update_user

Update an user.

asana_update_user_for_workspace

Update an user in a workspace or organization.

asana_add_user_for_team

Add an user to a team.

asana_create_story_for_goal

Create a story on a goal.

asana_create_team

Create a team.

asana_delete_section

Delete a section.

asana_delete_story

Delete a story.

asana_get_section

Get a section.

asana_get_stories_for_goal

Get stories from a goal.

asana_get_story

Get a story.

asana_get_teams_for_user

Get teams for an user.

asana_insert_section_for_project

Move or Insert sections.

asana_remove_user_for_team

Remove an user from a team.

asana_update_section

Update a section.

asana_update_story

Update a story.

asana_update_team

Update a team.

asana_add_user_for_workspace

Add an user to a workspace or organization.

asana_create_time_tracking_category

Create a time tracking category.

asana_create_time_tracking_entry

Create a time tracking entry.

asana_delete_time_tracking_category

Delete a time tracking category.

asana_delete_time_tracking_entry

Delete a time tracking entry.

asana_get_time_tracking_categories

Get time tracking categories for a workspace.

asana_get_time_tracking_category

Get a time tracking category.

asana_get_time_tracking_entries

Get multiple time tracking entries.

asana_get_time_tracking_entries_for_task

Get time tracking entries for a task.

asana_get_time_tracking_entries_for_time_tracking_category

Get time tracking entries for a time tracking category.

asana_get_time_tracking_entry

Get a time tracking entry.

asana_get_workspace_events

Get workspace events.

asana_remove_user_for_workspace

Remove an user from a workspace or organization.

asana_update_time_tracking_category

Update a time tracking category.

asana_update_time_tracking_entry

Update a time tracking entry.

asana_update_workspace

Update a workspace.

asana_add_supporting_relationship

Add a supporting goal relationship.

asana_create_allocation

Create an allocation.

asana_create_budget

Create a budget.

asana_create_membership

Create a membership.

asana_create_ooo_entry

Create an OOO entry.

asana_create_rate

Create a rate.

asana_create_role

Create a role.

asana_delete_allocation

Delete an allocation.

asana_delete_budget

Delete a budget.

asana_delete_membership

Delete a membership.

asana_delete_ooo_entry

Delete an OOO entry.

asana_delete_project_template

Delete a project template.

asana_delete_rate

Delete a rate.

asana_delete_role

Delete a role.

asana_get_allocation

Get an allocation.

asana_get_allocations

Get multiple allocations.

asana_get_budget

Get a budget.

asana_get_budgets

Get all budgets.

asana_get_goal_relationship

Get a goal relationship.

asana_get_goal_relationships

Get goal relationships.

asana_get_membership

Get a membership.

asana_get_memberships

Get multiple memberships.

asana_get_ooo_entries

Get OOO entries for an user.

asana_get_ooo_entry

Get an OOO entry.

asana_get_project_template

Get a project template.

asana_get_project_templates

Get multiple project templates.

asana_get_project_templates_for_team

Get a team's project templates.

asana_get_rate

Get a rate.

asana_get_rates

Get multiple rates.

asana_get_role

Get a role.

asana_get_roles

Get multiple roles.

asana_get_webhook

Get a webhook.

asana_instantiate_project

Instantiate a project from a project template.

asana_remove_supporting_relationship

Removes a supporting goal relationship.

asana_update_allocation

Update an allocation.

asana_update_budget

Update a budget.

asana_update_goal_relationship

Update a goal relationship.

asana_update_membership

Update a membership.

asana_update_ooo_entry

Update an OOO entry.

asana_update_rate

Update a rate.

asana_update_role

Update a role.

asana_update_webhook

Update a webhook.

asana_approve_access_request

Approve an access request.

asana_create_access_request

Create an access request.

asana_create_attachment_for_object

Upload an attachment.

asana_create_project_brief

Create a project brief.

asana_create_project_status_for_project

Create a project status.

asana_create_status_for_object

Create a status update.

asana_create_timesheet_approval_status

Create a timesheet approval status.

asana_delete_attachment

Delete an attachment.

asana_delete_project_brief

Delete a project brief.

asana_delete_project_status

Delete a project status.

asana_delete_status

Delete a status update.

asana_delete_task_template

Delete a task template.

asana_get_access_requests

Get access requests.

asana_get_custom_field_settings_for_goal

Get a goal's custom fields.

asana_get_custom_field_settings_for_portfolio

Get a portfolio's custom fields.

asana_get_custom_field_settings_for_project

Get a project's custom fields.

asana_get_custom_field_settings_for_team

Get a team's custom fields.

asana_get_project_brief

Get a project brief.

asana_get_project_portfolio_setting

Get a project portfolio setting.

asana_get_project_portfolio_settings_for_portfolio

Get project portfolio settings for a portfolio.

asana_get_project_portfolio_settings_for_project

Get project portfolio settings for a project.

asana_get_project_status

Get a project status.

asana_get_project_statuses_for_project

Get statuses from a project.

asana_get_status

Get a status update.

asana_get_statuses_for_object

Get status updates from an object.

asana_get_task_template

Get a task template.

asana_get_task_templates

Get multiple task templates.

asana_get_team_membership

Get a team membership.

asana_get_team_memberships

Get team memberships.

asana_get_team_memberships_for_team

Get memberships from a team.

asana_get_team_memberships_for_user

Get memberships from an user.

asana_get_timesheet_approval_status

Get a timesheet approval status.

asana_get_timesheet_approval_statuses

Get multiple timesheet approval statuses.

asana_instantiate_task

Instantiate a task from a task template.

asana_reject_access_request

Reject an access request.

asana_update_project_brief

Update a project brief.

asana_update_project_portfolio_setting

Update a project portfolio setting.

asana_update_timesheet_approval_status

Update a timesheet approval status.

asana_get_portfolio_membership

Get a portfolio membership.

asana_get_portfolio_memberships

Get multiple portfolio memberships.

asana_get_portfolio_memberships_for_portfolio

Get memberships from a portfolio.

asana_get_workspace_membership

Get a workspace membership.

asana_get_workspace_memberships_for_user

Get workspace memberships for an user.

asana_get_workspace_memberships_for_workspace

Get the workspace memberships for a workspace.

asana_create_graph_export

Initiate a graph export.

asana_create_organization_export

Create an organization export request.

asana_create_resource_export

Initiate a resource export.

asana_get_agent

Get an agent.

asana_get_agents_for_workspace

Get a list of agents in a workspace.

asana_get_custom_type

Get a custom type.

asana_get_custom_types

Get all custom types associated with an object.

asana_get_organization_export

Get details on an org export request.

asana_get_project_membership

Get a project membership.

asana_get_project_memberships_for_project

Get memberships from a project.

asana_get_time_period

Get a time period.

asana_get_time_periods

Get time periods.

asana_create_batch_request

Submit parallel requests.

asana_get_audit_log_events

Get audit log events.

asana_get_events

Get events on a resource.

asana_get_job

Get a job by id.

asana_get_reactions_on_object

Get reactions with an emoji base on an object..

asana_get_user_task_list

Get an user task list.

asana_get_user_task_list_for_user

Get an user's task list.

asana_trigger_rule

Trigger a rule.

Connect Asana to your AI

Credentials off one Asana screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.

Paste a Personal Access Token — it authenticates as you over HTTPS, with no OAuth app, redirect URL or client secret. Then choose which Asana workspaces to connect and which PopMCP workspace each lands in.

Personal Access Token••••••••••••3f7a
ConnectionVerified

Then just ask for the work

  • Which tasks in the Q3 Launch project are overdue and who owns them

    • get_projects_for_workspace
    • get_tasks_for_project
    • get_users_for_workspace
  • Find every unassigned task due this week in Marketing and assign them to Priya

    • search_tasks_for_workspace
    • get_users_for_workspace
    • update_task
  • Set up a Website Redesign project with Design, Build and QA sections and a kickoff task

    • create_project
    • create_section_for_project
    • create_task
    • add_task_for_section
  • Show the projects in our Roadmap portfolio and the last comment on each blocked task

    • get_portfolios
    • get_items_for_portfolio
    • get_tasks_for_project
    • get_stories_for_task

Use Asana from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Asana MCP server questions

What teams ask before putting Asana behind an AI client.

Does connecting Asana need an OAuth app or client secret?

No. The connect form asks for one value, a Personal Access Token, and that token authenticates as you over HTTPS. There is no OAuth app, redirect URL, or client secret to register beforehand. Generate the PAT in Asana, paste it, and the connection is live.

Which Asana workspaces does the connection cover?

You decide after the token is accepted. PopMCP asks which Asana workspaces to connect and which PopMCP workspace each one belongs in, so a client's workspace and your internal one stay separate. Because the token authenticates as you, the agent only reaches projects and tasks your own Asana account can already see.

How many Asana operations does the server expose?

247 operations across 48 API modules, split 117 read and 130 write. 48 load by default so your AI client's tool list stays workable, and the rest stay searchable, so a request that needs portfolios or the audit log still resolves. There are also 24 triggers PopMCP can watch.

Which Asana changes arrive instantly, and which are polled?

Task created, task updated, task deleted, task removed from project, comment added, project created, project updated, project deleted, section added, file attached, and project member added all come through Asana webhooks. Task completed, status update posted, and time logged are polled instead, so those land on a check interval rather than the second they happen. Worth knowing if you are building an approval flow that fires the moment someone ticks a task off.

Can the agent filter tasks by custom field?

Yes. get_custom_fields_for_workspace lists what your workspace defines and get_custom_field returns a single definition with its options, so the agent knows the real values before it filters. search_tasks_for_workspace is Asana's advanced search, so priority, stage, or any other custom field can narrow the result set.

Does it go past tasks and projects?

Yes. Portfolios, goals, status updates, teams, tags, sections, attachments, memberships, time tracking, and webhooks are all covered, along with the batch, typeahead, and audit log APIs. So an agent can walk from a portfolio to its projects to the goal they roll up to, or read time logged against a single task, without you wiring two tools together.

Do I have to run or host the Asana MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

Why do only 48 of the 247 tools load by default?

Loading 247 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 48-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.

What is the difference between a tool and a trigger?

A tool is something your AI calls — there are 247 here. A trigger is something PopMCP watches for you: 24 Asana events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Asana.

Connect Asana to your AI in minutes

Launch a hosted MCP endpoint for Asana, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP