How to integrate Asana MCP with Codex

Connect Codex to Asana MCP. Create a new project for q3 goals, add followers to the product launch task, and more using natural language, with authentication handled for you.

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

Introduction

Codex is one of the most popular coding harnesses out there. And MCP makes the experience even better. With the Asana MCP integration, Codex can create and assign tasks, organize projects and sections, track goals and portfolios, post status updates, and comment on tasks, all without leaving the terminal or the app, whichever you prefer.

Also integrate Asana with

Why use Composio?

Apart from a managed and hosted MCP server, you will get:

  • CodeAct: A dedicated workbench that allows GPT to write its code to handle complex tool chaining. Reduces to-and-fro with LLMs for frequent tool calling.
  • Large tool responses: Handle them to minimise context rot.
  • Dynamic just-in-time access to 20,000 tools across 1700+ other Apps for cross-app workflows. It loads the tools you need, so GPTs aren't overwhelmed by tools you don't need.

How to install Asana MCP in Codex

Run the setup command

Run this command in your terminal to add the Composio MCP server to Codex.

Terminal

It will initiate the authentication in a browser window, authorize Codex to access your Composio account.

Composio authentication page

(Optional) Authenticate with OAuth

To authenticate manually, run the login command to open a browser window and authorize Codex to access your Composio account.

bash
codex mcp login composio

Verify the connection

Run codex mcp list to confirm Composio appears as a registered MCP server.

bash
codex mcp list

Codex App

Codex App follows the same approach as VS Code.

  1. Click ⚙️ on the bottom left → MCP Servers → + Add servers → Streamable HTTP:
  2. Fill the header and Key fields with { "x-consumer-api-key" = "ck_*******" }.
  3. The Key is the Composio API key, that you can find on dashboard.composio.dev
  4. Click on Authenticate and authorize Codex to your Composio account and you're all set.
Codex App MCP setup
  1. Restart and verify if it's there in .codex/config.toml
bash
[mcp_servers.composio]
url = "https://connect.composio.dev/mcp"
http_headers = { "x-consumer-api-key" = "ck_*******" }

Try it

Ask Codex for a Asana task. The first time, Composio asks you to connect your Asana account.

For example, ask it to:

  • "Create a new project for Q3 goals"
  • "Add followers to the product launch task"
  • "Attach a file to today's meeting notes task"

What is the Asana MCP server, and what's possible with it?

The Asana MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Asana account. It provides structured and secure access to your projects, tasks, teams, portfolios, and goals, so your agent can organize work, create projects, update statuses, manage collaborators, and handle task details on your behalf.

  • Project planning and organization: Have your agent create or duplicate projects, add sections, prepare project briefs, and remove projects that are no longer needed.
  • Task coordination: Let the agent create subtasks, duplicate tasks, assign tasks to projects or sections, add dependencies, apply tags, and delete outdated tasks.
  • Updates and collaboration: Direct your agent to post task comments, publish project status updates, and add followers so the right people stay informed.
  • Team and workspace management: Instruct your agent to add users to teams or workspaces and manage project membership for users and teams.
  • Portfolio, goal, and resource planning: Have your agent add projects to portfolios, connect supporting goals, create resource allocations, and review existing allocations.

Conclusion

You've successfully integrated Asana with Codex using Composio's MCP server. Now you can interact with Asana directly from your terminal, VS Code, or the Codex App using natural language commands.

Key benefits of this setup:

  • Seamless integration across CLI, VS Code, and standalone app
  • Natural language commands for Asana operations
  • Managed authentication through Composio
  • Access to 20,000+ tools across 1700+ apps for cross-app workflows
  • CodeAct workbench for complex tool chaining

Next steps:

  • Try asking Codex to perform various Asana operations
  • Explore cross-app workflows by connecting more toolkits
  • Build automation scripts that leverage Codex's AI capabilities
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.

FAQ

Frequently asked questions

Start with Asana.It takes 30 seconds.

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

Start building