Asana MCP server for AI agents and assistants

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Asana MCP or direct API to create tasks, update project statuses, assign teammates, and fetch work summaries through natural language.

Asana logoAsana
Oauth2

Asana is a collaborative work management platform for teams to organize and track projects. It streamlines teamwork, boosts productivity, and keeps everyone aligned on goals.

247 Tools6 Triggers

Try Asana now

Type what you want done — sign in and watch it run live in the Tool Router playground.

TOOL ROUTER PLAYGROUND
Asana
Try asking
TOOLS & TRIGGERS

Supported Tools and Triggers

Every Asana action and event your agent gets out of the box.

Add a custom field to a goal

Add a custom field to a goal.

Add a custom field to a portfolio

Add a custom field to a portfolio.

Add a custom field to a project

Add a custom field to a project.

Add a collaborator to a goal

Add a collaborator to a goal.

Add Followers to Project

Tool to add followers to a project in Asana.

Add Followers to Task

Tool to add followers to a task in Asana.

Add item to portfolio

Add a project (or other supported item) to an Asana portfolio using the native addItem endpoint.

Add users to a portfolio

Add users to a portfolio.

Add Members to Project

Tool to add users to a project in Asana.

Add Project to Task

Tool to add a project to a task in Asana.

Add Supporting Relationship to Goal

Tool to add a supporting goal relationship to a goal.

Add Tag to Task

Tool to add an existing tag to a task in Asana.

Add Task Dependencies

Tool to add dependency relationships to an Asana task.

Add Task Dependents

Mark tasks as dependents of an Asana prerequisite task, if not already linked.

Add task to section

Adds an existing task to a section, optionally positioning it before or after another task in that section; if no position is specified, the task is added to the end.

Add User for Team

Tool to add a user to a team in Asana.

Add User for Workspace

Tool to add a user to a workspace or organization in Asana.

Approve Access Request

Tool to approve an access request in Asana.

Create Access Request

Tool to create an access request in Asana.

Create Allocation

Creates an allocation for a user in a workspace over a defined period, with an effort value in hours or percent and an optional project association.

Create a project

Creates a new Asana project in the specified workspace.

Create a tag in a workspace

Creates a new tag, with properties like name and color defined in the request body, within a specific Asana workspace (using `workspace_gid`); this tag helps categorize tasks, is confined to the workspace, and is not automatically applied to tasks.

Create task in asana with specific details

Creates a new Asana task; requires 'workspace', 'parent', or 'projects' for association, and 'followers', 'projects', 'tags' are set only at creation.

Create Attachment for Object

Tool to upload an attachment or link an external resource to a task, project, or project_brief in Asana.

Create Attachment for Task

Tool to upload an attachment to a task.

Create a budget

Create a budget.

Create Custom Field

Tool to create a new custom field in a workspace.

Create Enum Option for Custom Field

Tool to create a new enum option for a custom field in Asana.

Create a goal

Create a goal.

Create a goal metric

Create a goal metric.

Create Membership

Tool to create a membership by adding a user or team to a project, goal, or portfolio.

Create an OOO entry

Create an OOO entry.

Create a portfolio

Create a portfolio.

Create Project Brief

Tool to create a project brief for a project.

Create project for team

Tool to create a project in a team.

Create project for workspace

Tool to create a project in a workspace.

Create Project Status Update

Tool to create a new status update on a project.

Create a rate

Create a rate.

Create a role

Create a role.

Create a section in a project

Creates a new SECTION (not a task) in a project.

Create Status Update for Object

Tool to create a status update on a project, portfolio, or goal.

Create a story on a goal

Create a story on a goal.

Create subtask

Creates a new Asana subtask under an existing parent task (`task_gid`); `due_on` and `due_at` are mutually exclusive and cannot be set simultaneously.

Create a tag

Tool to create a new tag in an Asana workspace.

Create task comment

Adds a new text comment (story) to an existing Asana task, appearing in its activity feed.

Create Team

Creates a new team in a specified Asana organization for collaboration.

Create a timesheet approval status

Create a timesheet approval status.

Create a time tracking category

Create a time tracking category.

Create a time tracking entry

Create a time tracking entry.

Delete Allocation

Tool to delete an allocation by its ID.

Delete Attachment

Tool to delete an attachment by its globally unique identifier.

Delete a budget

Delete a budget.

Delete Custom Field

Tool to delete a custom field by its globally unique identifier.

Delete a goal

Delete a goal.

Delete Membership

Tool to delete a membership by its GID.

Delete an OOO entry

Delete an OOO entry.

Delete a portfolio

Delete a portfolio.

Delete a project

Delete a project.

Delete Project Brief

Tool to delete a project brief by its GID.

Delete Project Status

Tool to delete a project status by its GID.

Delete a project template

Delete a project template.

Delete a rate

Delete a rate.

Delete a role

Delete a role.

Delete a section

Tool to delete a section by its GID.

Delete Status Update

Tool to delete a status update by its GID.

Delete Story

Tool to delete a story by its GID.

Delete a Tag

Tool to delete a specific tag by its GID.

Delete a task

Delete a task.

Delete a task template

Delete a task template.

Delete a time tracking category

Delete a time tracking category.

Delete a time tracking entry

Delete a time tracking entry.

Delete a webhook

Delete a webhook.

Duplicate a portfolio

Duplicate a portfolio.

Duplicate Project

Duplicate a project with a new name.

Duplicate Task

Duplicate a task, returning an asynchronous job record.

Get Access Requests

Tool to retrieve access requests for a target object.

Get AI Studio credit utilization

Get AI Studio credit utilization.

Get AI Studio seats

Get AI Studio seats.

Get Allocation

Get an allocation by ID.

Get Allocations

Tool to get multiple allocations.

Get a project

Retrieves a specific Asana project by its `project_gid`, with an option to include additional fields for comprehensive details using `opt_fields`; this action does not return tasks within the project.

Get a task

Retrieves full details for a specified task GID accessible by the user; use `opt_fields` to customize returned data.

Get Attachment

Tool to get a single attachment by its globally unique identifier.

Get Audit Log Events

Retrieve audit log events for a workspace or organization, with optional filters.

Get a user task list

Retrieves a user's Asana task list for a specified workspace, using the user GID or `me` in `user_task_list_gid`.

Get a budget

Get a budget.

Get all budgets

Get all budgets.

Get current user

Retrieve the authenticated user, including accessible workspaces, for establishing user context.

Get Custom Field

Retrieve a custom field by its globally unique identifier, with optional selection of returned properties.

Get a goal's custom fields

Get a goal's custom fields.

Get a portfolio's custom fields

Get a portfolio's custom fields.

Get a team's custom fields

Get a team's custom fields.

Get Custom Fields for Workspace

List custom fields in a workspace, returning a page of results and pagination information when available.

Get a custom type

Get a custom type.

Get Custom Types

List custom types associated with a project, returning a page of results and pagination information when available.

Get Events on a Resource

Retrieve events on an Asana resource to monitor changes using a sync token.

Get Favorites for User

Get a user's favorites of a selected resource type within a workspace, ordered as they appear in the Asana sidebar.

Get Goal

Retrieve a single goal by its GID, with optional field selection.

Get a goal relationship

Get a goal relationship.

Get Goal Relationships

Tool to retrieve goal relationships.

Get Goals

Tool to retrieve multiple goals.

Get Job

Tool to retrieve a job by its globally unique identifier.

Get Membership

Tool to retrieve a single membership by its ID.

Get Memberships

Tool to retrieve memberships for goals, projects, portfolios, or custom fields.

Get multiple projects

Returns a list of projects filtered by workspace or team (one required), with optional archived status filter, supporting pagination for large datasets.

Get multiple tasks

Retrieve tasks using exactly one scope: a project, section, tag, user task list, or assignee and workspace together.

Get multiple users

Returns a list of users in an Asana workspace or organization, optionally filtered by workspace or team GID, with support for pagination and specifying optional fields.

Get multiple workspaces

Retrieve workspaces accessible to the authenticated user, with pagination support.

Get OOO Entries

Get one page of out-of-office entries for a user in a workspace.

Get an OOO entry

Get an OOO entry.

Get parent goals from a goal

Get parent goals from a goal.

Get Portfolio

Retrieve a single portfolio by its GID, with optional fields for portfolio details.

Get Portfolio Items

Retrieve items in a portfolio.

Get a portfolio membership

Get a portfolio membership.

Get Portfolio Memberships

Tool to retrieve multiple portfolio memberships.

Get memberships from a portfolio

Get memberships from a portfolio.

Get Portfolios

Retrieve portfolios in a specific workspace for a specified owner.

Get Project Brief

Tool to retrieve a project brief by its GID.

Get Project Custom Field Settings

List the custom-field settings attached to an Asana project.

Get Project Membership

Tool to get a project membership by ID.

Get Project Memberships For Project

Tool to get memberships from a specific project.

Get a project portfolio setting

Get a project portfolio setting.

Get project portfolio settings for a portfolio

Get project portfolio settings for a portfolio.

Get project portfolio settings for a project

Get project portfolio settings for a project.

Get Projects for Task

List projects associated with a specific task.

Get Projects for Team

Tool to get a list of projects for a specific team in Asana.

Get Project Status

Retrieve a project status update by its GID.

Get Project Status Updates

Tool to get status updates for a specific project.

Get Project Template

Get a single Asana project template, including configuration needed to instantiate it.

Get Multiple Project Templates

Tool to retrieve multiple project templates.

Get Project Templates for Team

Tool to get a team's project templates in Asana.

Get a rate

Get a rate.

Get multiple rates

Get multiple rates.

Get Reactions on Object

Tool to get reactions with a specific emoji base character on an object.

Get a role

Get a role.

Get multiple roles

Get multiple roles.

Get Section

Retrieve the full record for a single section by its GID.

Get sections in a project

List compact section records for a specified project.

Get Status Update

Tool to retrieve the full record for a single status update by its GID.

Get Status Updates

Retrieve status updates from an object.

Get stories from a goal

Get stories from a goal.

Get Stories for Task

Tool to get stories (comments, status updates, etc.

Get Story

Retrieve a single story by its GID, with optional selection of response fields.

Get Tag

Tool to get a single tag by its globally unique identifier.

Get Tags

Get multiple tags in a workspace.

Get Tags for Task

Get a page of tags associated with a specific task, with pagination support.

Get Tags For Workspace

Get a page of tags in a specific workspace, with pagination support.

Get Task Attachments

Tool to get the list of attachments for a given task, project, or project_brief.

Get Task Counts For Project

Tool to get task count statistics for a project.

Get a task for a given custom ID

Get a task for a given custom ID.

Get tasks for tag

Tool to retrieve tasks associated with a specific Asana tag by tag GID.

Get tasks for user task list

Tool to retrieve tasks from a user task list by user task list GID.

Retrieve tasks for project

Retrieves tasks from a specified Asana project, with a completion-since filter and optional field selection.

Get tasks from a section

Tool to retrieve tasks that belong to a specific Asana section (column/header) by section GID.

Get Task Subtasks

Lists subtasks of a specified Asana task, with pagination and optional field selection.

Get a task template

Retrieve a task template's configuration by its GID, without instantiating it.

Get Task Templates

Lists Asana task templates for a workspace or project, with pagination.

Get Team

Tool to retrieve details of a specific team by its GID.

Get Team Membership

Tool to retrieve a complete team membership record by its GID.

Get Team Memberships

Tool to retrieve compact team membership records.

Get Team Memberships for Team

Tool to get memberships from a specific team.

Get Team Memberships For User

Retrieve a page of team memberships for a specific user within a workspace.

Get Teams for User

Get a page of team records for a specific user in an organization or workspace.

Get teams in workspace

Retrieve a page of compact team records in a workspace visible to the authorized user.

Get Time Period

Tool to retrieve the full record for a single time period by its GID.

Get Time Periods

Tool to retrieve compact or full representations of time periods.

Get a timesheet approval status

Get a timesheet approval status.

Get multiple timesheet approval statuses

Get multiple timesheet approval statuses.

Get time tracking categories for a workspace

Get time tracking categories for a workspace.

Get a time tracking category

Get a time tracking category.

Get Time Tracking Entries

Tool to get multiple time tracking entries across workspace, tasks, or projects.

Get Time Tracking Entries for Task

Tool to get time tracking entries for a task.

Get time tracking entries for a time tracking category

Get time tracking entries for a time tracking category.

Get a time tracking entry

Get a time tracking entry.

Get Objects via Typeahead

Tool to retrieve objects in a workspace via a typeahead search algorithm.

Get User

Get a user by their ID.

Get User in Workspace

Tool to get a user in a workspace or organization by their GID.

Get Users for Team

Get users in a team.

Get Users in Workspace

Get users in a workspace or organization.

Get User Task List

Tool to get a single user task list by its globally unique identifier.

Get a webhook

Get a webhook.

Get Webhooks

Retrieve a page of webhooks in a workspace, optionally filtered by resource.

Get Workspace

Tool to retrieve details of a specific workspace by its GID.

Get workspace events

Get one page of workspace events since a sync token was created.

Get Workspace Membership

Tool to retrieve a specific workspace membership by its GID.

Get Workspace Memberships

Tool to retrieve the workspace memberships for a specific workspace.

Get Workspace Memberships For User

Retrieve a page of workspace memberships for a specific user.

Get Workspace Projects

Retrieve a page of projects associated with a specific Asana workspace.

Reorder Enum Option for Custom Field

Tool to reorder an existing enum option within a custom field by moving it before or after another specified enum option.

Move or Insert Section in Project

Tool to move or reorder an existing section within a project by repositioning it before or after another section.

Instantiate Project Template

Instantiate (create) a real Asana project from a project template, returning the async job record.

Instantiate a task from a task template

Instantiate a task from a task template.

Get goal relationships

Get goal relationships.

List Task Dependencies

List the prerequisite tasks that must be completed before an Asana task.

List Task Dependents

List tasks that are blocked by a specified Asana task.

Reject access request

Tool to reject an access request.

Remove a custom field from a goal

Remove a custom field from a goal.

Remove a custom field from a portfolio

Remove a custom field from a portfolio.

Remove a custom field from a project

Remove a custom field from a project.

Remove Follower From Task

Tool to remove one or more followers from a task.

Remove Followers For Project

Tool to remove followers from a project in Asana.

Remove a collaborator from a goal

Remove a collaborator from a goal.

Remove Item from Portfolio

Tool to remove an item (e.

Remove users from a portfolio

Remove users from a portfolio.

Remove Members from Project

Tool to remove users from a project in Asana.

Remove Project from Task

Tool to remove a project from a task in Asana.

Removes a supporting goal relationship

Removes a supporting goal relationship.

Remove Tag from Task

Tool to remove an existing tag from a task in Asana.

Remove Task Dependencies

Tool to unlink selected prerequisite relationships from an Asana task without deleting any task.

Remove Task Dependents

Unlink selected dependent tasks from an Asana prerequisite task without deleting any task.

Remove User For Team

Tool to remove a user from a team.

Remove User from Workspace

Tool to remove a user from a workspace or organization.

Roll up subtask dates for a project

Start a background job to reconcile subtask dates in a project.

Roll up subtask dates for a task

Start a background job to reconcile a task's subtask dates.

Create a project template from a project

Create a project template from a project.

Search projects in a workspace

Search projects in a workspace.

Search Tasks in Workspace

Search tasks in an Asana workspace by project, assignee, task subtype or text, with optional result fields and a limit of 1–100.

Set parent for task

Tool to set the parent of a task in Asana.

Submit Parallel Requests (Batch API)

Submit up to 10 Asana API requests in parallel using the Batch API, such as fetching multiple tasks or creating multiple subtasks.

Trigger a rule

Trigger a rule.

Update Allocation

Tool to update an existing allocation by its ID.

Update a task

Updates attributes of an existing Asana task identified by its task_gid.

Update a budget

Update a budget.

Update Custom Field

Update the name or description of a custom field by its globally unique identifier.

Update Enum Option

Tool to update an enum option for a custom field.

Update a goal

Update a goal.

Update a goal metric

Update a goal metric.

Update a goal relationship

Update a goal relationship.

Update a membership

Update a membership.

Update an OOO entry

Update an OOO entry.

Update a portfolio

Update a portfolio.

Update a project

Update a project.

Update Project Brief

Tool to update a project brief by its GID.

Update a project portfolio setting

Update a project portfolio setting.

Update a rate

Update a rate.

Update a role

Update a role.

Update Section

Update a section's name or position within a project.

Update Story

Tool to update a story on a task.

Update Tag

Tool to update an existing tag by its globally unique identifier.

Update a team

Tool to update details of an existing team.

Update a timesheet approval status

Update a timesheet approval status.

Update a time tracking category

Update a time tracking category.

Update a time tracking entry

Update a time tracking entry.

Update User

Update a user's custom fields.

Update User for Workspace

Tool to update a user in a workspace or organization.

Update a webhook

Update an existing Asana webhook's event filter configuration.

Update a workspace

Update a workspace.

SETUP GUIDE

Connect Asana MCP Tool with your Agent

1

Install Composio

typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
Install the Composio SDK and your agent framework
2

Create a session with MCP enabled

typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["asana"],
  mcp: true,
});
Create a session scoped to Asana and read its MCP URL and headers
3

Connect your agent to the MCP server

typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "Create a new project for the marketing team called \"Spring Launch\"",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
Pass the session's MCP URL and headers to your agent and run a Asana request
SETUP GUIDE

Connect Asana API Tool with your Agent

1

Install Composio

typescript
npm install @composio/core @composio/openai openai
Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
2

Create a Composio session

typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["asana"] });
const tools = await session.tools();
Initialize Composio with the OpenAI Responses provider and create a session scoped to Asana
3

Run Asana tools with your agent

typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "Create a new project for the marketing team called \"Spring Launch\"" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
Send a request, execute the Asana tool calls through the session, and print the final answer
Guide

Connect multiple Asana accounts to Claude and tell it which one to use by name.

Read the guide

Why Use Composio?

AI Native Asana Integration

  • Supports both Asana MCP and direct API based integrations
  • Structured, LLM-friendly schemas for reliable tool execution
  • Rich coverage for reading, writing, and querying your Asana data

Managed Auth

  • Built-in OAuth handling with automatic token refresh and rotation
  • Central place to manage, scope, and revoke Asana access
  • Per user and per environment credentials instead of hard-coded keys

Agent Optimized Design

  • Tools are tuned using real error and success rates to improve reliability over time
  • Comprehensive execution logs so you always know what ran, when, and on whose behalf

Enterprise Grade Security

  • Fine-grained RBAC so you control which agents and users can access Asana
  • Scoped, least privilege access to Asana resources
  • Full audit trail of agent actions to support review and compliance

Rolling this out across your team?

Give your team centralized access control across every framework with Composio’s MCP Gateway.

EXPLORE MCP GATEWAY
FAQ

Frequently asked questions

No. Composio provides a managed OAuth app for Asana, so you sign in with your normal Asana account and approve access. If you later want the consent screen to show your own company name, you can add your own Asana OAuth app in the Composio dashboard, and every connection after that uses it.

Yes! Composio's Tool Router enables agents to use multiple toolkits. Learn more.

Yes. Composio is SOC 2 Type II compliant and is built to keep your Asana connection and credentials secure. OAuth tokens and API keys are encrypted, and sensitive customer data is protected at rest and in transit.

Composio also undergoes independent security testing and continuously monitors its systems for security threats. You can review the latest reports and policies in the Composio Trust Center.

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

When you connect a Asana account through Composio, every action runs under that account, so anything the agent creates, sends, or changes shows up in Asana as done by you. Keep an approval step in your prompt for actions with side effects, such as sending or deleting, and have the agent draft first.

Exactly the ones Asana lists on its consent screen when you connect. Review that screen before approving. If you connect a work account, your Asana administrator may need to approve the app first, and you can revoke the access inside Asana whenever you want.

Yes. Composio supports multiple connected accounts for the same app, and that works in Claude, ChatGPT, or any other assistant you connect through Composio. Give each Asana connection a name such as work or personal, and the assistant uses the one you mention in the request. Each account keeps its own credentials and nothing is merged.

Composio refreshes Asana tokens automatically, so day to day you do nothing. If you revoke access inside Asana, or Asana invalidates the session, the connection shows as expired in Composio and the agent stops acting on that account until you reconnect it, which is a single sign-in.

Composio's free Hobby plan includes 100,000 tool calls per month with no credit card, and up to 20,000 of those can run through Composio-managed apps like Asana. Personal Asana use rarely gets near that. Paid plans add higher limits and team features, and Asana's own pricing is unaffected.

Built-in connectors usually give one AI access to a limited set of apps. Many people use Composio because it lets their AI connect to more apps than it normally supports, or connect to multiple accounts for the same app (e.g. connect Claude to multiple Asana accounts).

With Composio, you connect Asana once and then use it across different AI assistants without setting it up separately in each one. Connect your apps to Composio once, then connect Composio to whichever AI you use, whether that's Claude, ChatGPT, Hermes, or your own custom assistant.

Start with Asana.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Asana tool your agent needs.Free to start.

Start building