Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Asana connector

OAuth 2.1/DCR Project ManagementProductivity

Connect to Asana MCP server to manage tasks, projects, and teams directly from your AI workflows.

Asana connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Register your Asana credentials with Scalekit so it handles the token lifecycle. You do this once per environment.

    Dashboard setup steps

    Asana uses Dynamic Client Registration (DCR) — no client ID or secret is needed. The only step is registering your Scalekit redirect URI as an allowed domain in Atlassian Administration.

    1. Copy the redirect URI from Scalekit

      In the Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Asana and click Create. Copy the redirect URI — it looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

    2. Open the Rovo MCP server settings in Atlassian

      • Go to admin.atlassian.com and select your organisation.
      • In the left sidebar, expand Rovo and click Rovo access.
      • Click Rovo MCP server in the submenu.
      • Select the Domains tab at the top of the page.
    3. Add the redirect URI as a domain

      • Under Your domains, click Add domain.
      • In the Add domain dialog, paste the redirect URI from Scalekit into the Domain field.
      • Accept the terms and click Add.

      Once added, Scalekit automatically registers the OAuth client via DCR and handles token management for every user who authorizes the connection — no further configuration needed.

  4. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'asanamcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Asana:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'asanamcp_get_me',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Comment add — Post a comment (discussion entry) to a specific Asana task
  • Create project, project preview, project status update — Create a new Asana project with optional sections and tasks pre-populated
  • Delete task — Permanently delete an Asana task and all of its dependent subtasks
  • Get agent, attachments, items for portfolio — Retrieve full details of a specific Asana AI Teammate agent record by its GID
  • Search objects, tasks, tasks preview — Universal search across Asana resource types including tasks, projects, portfolios, goals, teams, users, tags, and custom fields
  • Update tasks — Modify one or more Asana tasks in a single operation

Get your cloud ID

Most Asana tools require a cloudId — the UUID that identifies your Atlassian cloud site. Call asanamcp_getaccessibleatlassianresources once to retrieve it, then pass the id field value in every subsequent tool call.

// Step 1 — get the cloud ID
const resources = await actions.executeTool({
connectionName: 'asanamcp',
identifier: 'user_123',
toolName: 'asanamcp_getaccessibleatlassianresources',
toolInput: {},
});
const cloudId = resources[0].id;
// Step 2 — use cloudId in subsequent calls
const issue = await actions.executeTool({
connectionName: 'asanamcp',
identifier: 'user_123',
toolName: 'asanamcp_getjiraissue',
toolInput: {
cloudId,
issueIdOrKey: 'KAN-1',
},
});
console.log(issue);

The asanamcp_getaccessibleatlassianresources response looks like this:

[
{
"id": "a4c9b3e2-1234-5678-abcd-ef0123456789",
"name": "My Company",
"url": "https://mycompany.atlassian.net",
"scopes": ["read:jira-work", "write:jira-work", "read:confluence-content.all"]
}
]

Use id as the cloudId parameter. If the user belongs to multiple Atlassian sites, the list contains one entry per site — pick the one matching the target url.

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

asanamcp_add_comment # Post a comment (discussion entry) to a specific Asana task. Supports plain text or HTML formatting. 3 params

Post a comment (discussion entry) to a specific Asana task. Supports plain text or HTML formatting.

Name Type Required Description
task_gid string required GID of the task to post a comment on. Find the GID in the Asana task URL. Example: '1234567890123456'
html string optional HTML-formatted content of the comment. Use for rich text formatting with bold, links, etc. Example: '<body>This looks <strong>good</strong>!</body>'
text string optional Plain text content of the comment. Use this for simple text comments without formatting. Example: 'This looks good, approved!'
asanamcp_create_project # Create a new Asana project with optional sections and tasks pre-populated. 5 params

Create a new Asana project with optional sections and tasks pre-populated.

Name Type Required Description
name string required Name of the project to create. This is the primary label shown in Asana's project list. Example: 'Q4 Product Launch'
description string optional Description of the project, explaining its purpose or scope. Example: 'Track all Q4 product launch tasks.'
sections array optional Names of sections to pre-create in the project. Sections help organize tasks into groups. Example: ["Planning", "In Progress", "Done"]
team string optional GID of the team to associate the project with. Team projects are visible to all team members. Example: '1234567890123456'
workspace_gid string optional GID of the workspace where the project should be created. Required if no team is specified. Example: '1234567890123456'
asanamcp_create_project_preview # Present a structured project plan for confirmation before creating the project in Asana. 5 params

Present a structured project plan for confirmation before creating the project in Asana.

Name Type Required Description
name string required Name of the project to preview. This is the primary label shown in Asana's project list. Example: 'Q4 Product Launch'
description string optional Description of the project, explaining its purpose or scope. Example: 'Track all Q4 product launch tasks.'
sections array optional Names of sections to pre-create in the project. Sections help organize tasks into groups. Example: ["Planning", "In Progress", "Done"]
team string optional GID of the team to associate the project with. Team projects are visible to all team members. Example: '1234567890123456'
workspace_gid string optional GID of the workspace where the project should be created. Required if no team is specified. Example: '1234567890123456'
asanamcp_create_project_status_update # Post a status update to an Asana project or portfolio, including a title, status color, and body text. 4 params

Post a status update to an Asana project or portfolio, including a title, status color, and body text.

Name Type Required Description
project_or_portfolio_gid string required GID of the project or portfolio to post the status update to. Find the GID in the Asana project or portfolio URL. Example: '1234567890123456'
status_type string required Status color indicator representing the health of the project. Valid values: 'on_track', 'at_risk', 'off_track', 'on_hold', 'complete'. Example: 'on_track'
title string required Title of the status update. Appears as the headline of the status entry. Example: 'On track for Q4 launch'
body string optional Detailed body text of the status update. Provides additional context, highlights, and notes. Example: 'All milestones are on track. Team velocity is good.'
asanamcp_create_task_preview # Draft an Asana task for review before creation. Shows a preview to the user without immediately creating the task. 6 params

Draft an Asana task for review before creation. Shows a preview to the user without immediately creating the task.

Name Type Required Description
name string required Name (title) of the task to preview. This is the primary identifier that will be shown in Asana's task list. Example: 'Review Q4 report'
assignee string optional GID or 'me' of the user to assign the task to. Use 'me' to assign to the authenticated user. Example: 'me' or '1234567890123456'
description string optional Task description in plain text or HTML. Provides additional context for the preview. Example: 'Please review the Q4 financial report.'
due_date string optional Proposed due date in ISO 8601 format (YYYY-MM-DD). Example: '2024-12-31'
project string optional GID of the project to add the task to. Example: '1234567890123456'
section string optional GID of the section within the project to place the task in. Requires project to also be specified. Example: '1234567890123456'
asanamcp_create_tasks # Create one or more Asana tasks immediately, without a confirmation step. Supports creating up to 50 tasks in a single call. 7 params

Create one or more Asana tasks immediately, without a confirmation step. Supports creating up to 50 tasks in a single call.

Name Type Required Description
name string required Name (title) of the task to create. This is the primary identifier shown in the Asana task list. Example: 'Review Q4 report'
assignee string optional GID or 'me' of the user to assign the task to. Use 'me' to assign to the authenticated user. Example: 'me' or '1234567890123456'
description string optional Task description in plain text or HTML. Provides additional context and details for the task. Example: 'Please review the Q4 financial report.'
due_date string optional Due date for the task in ISO 8601 format (YYYY-MM-DD). Example: '2024-12-31'
project string optional GID of the project to add the task to. Find the project GID in the Asana project URL. Example: '1234567890123456'
section string optional GID of the section within the project to place the task in. Requires project to also be specified. Example: '1234567890123456'
workspace_gid string optional GID of the workspace where the task should be created. Required if no project is specified. Example: '1234567890123456'
asanamcp_delete_task # Permanently delete an Asana task and all of its dependent subtasks. This action cannot be undone. 1 param

Permanently delete an Asana task and all of its dependent subtasks. This action cannot be undone.

Name Type Required Description
task_gid string required GID of the task to permanently delete. All subtasks will also be deleted. This action cannot be undone. Example: '1234567890123456'
asanamcp_get_agent # Retrieve full details of a specific Asana AI Teammate agent record by its GID. 1 param

Retrieve full details of a specific Asana AI Teammate agent record by its GID.

Name Type Required Description
agent_gid string required The GID of the AI Teammate agent to retrieve.
asanamcp_get_attachments # Retrieve file attachments with download and view URLs for a task, project, or brief. 2 params

Retrieve file attachments with download and view URLs for a task, project, or brief.

Name Type Required Description
parent_gid string required GID of the task, project, or project brief to get attachments for.
parent_type string optional Type of the parent resource. Valid values: task, project, project_brief.
asanamcp_get_items_for_portfolio # Return all projects and other items contained within a specific Asana portfolio. 1 param

Return all projects and other items contained within a specific Asana portfolio.

Name Type Required Description
portfolio_gid string required The GID of the portfolio to retrieve items for.
asanamcp_get_me # Return profile details for the currently authenticated Asana user, including name, email, and workspace memberships. 0 params

Return profile details for the currently authenticated Asana user, including name, email, and workspace memberships.

asanamcp_get_my_tasks # Retrieve tasks assigned to the currently authenticated Asana user. 1 param

Retrieve tasks assigned to the currently authenticated Asana user.

Name Type Required Description
completion_status string optional Filter tasks by completion status. Valid values: 'incomplete' (default), 'completed', 'all'. Example: 'incomplete'
asanamcp_get_portfolio # Retrieve details of a specific Asana portfolio including its associated projects and status. 1 param

Retrieve details of a specific Asana portfolio including its associated projects and status.

Name Type Required Description
portfolio_gid string required The GID (global identifier) of the Asana portfolio to retrieve. Example: '1234567890123456'
asanamcp_get_portfolios # List all portfolios owned by the currently authenticated Asana user. 1 param

List all portfolios owned by the currently authenticated Asana user.

Name Type Required Description
workspace_gid string optional The GID of the workspace to filter portfolios by. If omitted, returns portfolios across all workspaces. Example: '1234567890123456'
asanamcp_get_project # Fetch details of a specific Asana project including its sections and member information. 1 param

Fetch details of a specific Asana project including its sections and member information.

Name Type Required Description
project_gid string required The GID (global identifier) of the Asana project to retrieve. Example: '1234567890123456'
asanamcp_get_projects # List workspace projects, optionally filtered by team. Returns project names, GIDs, and status. 3 params

List workspace projects, optionally filtered by team. Returns project names, GIDs, and status.

Name Type Required Description
include_archived boolean optional Whether to include archived projects in the results. Defaults to false if omitted.
team string optional Filter projects by team GID. Only projects belonging to the specified team will be returned. Example: '1234567890123456'
workspace_gid string optional The GID of the workspace to list projects from. Example: '1234567890123456'
asanamcp_get_status_overview # Returns an aggregated status report for one or more Asana projects or portfolios, including health indicators and progress updates. 2 params

Returns an aggregated status report for one or more Asana projects or portfolios, including health indicators and progress updates.

Name Type Required Description
project_or_portfolio string optional Name or GID of the project or portfolio to get status for.
workspace_gid string optional Workspace GID to look up the project or portfolio in.
asanamcp_get_task # Retrieve comprehensive details of a specific Asana task by its GID, including assignments, dates, custom fields, and comments. 1 param

Retrieve comprehensive details of a specific Asana task by its GID, including assignments, dates, custom fields, and comments.

Name Type Required Description
task_gid string required The GID (global identifier) of the Asana task to retrieve. Example: '1234567890123456'
asanamcp_get_tasks # Returns a filtered list of tasks by context. At least one filter parameter (project, section, tag, user_task_list, or assignee) is required. 6 params

Returns a filtered list of tasks by context. At least one filter parameter (project, section, tag, user_task_list, or assignee) is required.

Name Type Required Description
assignee string optional Filter tasks by assignee. Provide an assignee GID or the string 'me' for the current user. Example: 'me' or '1234567890123456'
completed boolean optional Filter tasks by completion status. Set to true to return only completed tasks, false for incomplete tasks. If omitted, returns all tasks.
project string optional Filter tasks by project GID. Example: '1234567890123456'
section string optional Filter tasks by section GID. Returns tasks in the specified section. Example: '1234567890123456'
tag string optional Filter tasks by tag GID. Returns tasks associated with the specified tag. Example: '1234567890123456'
user_task_list string optional Filter tasks by user task list (My Tasks) GID. Example: '1234567890123456'
asanamcp_get_teams # List teams in the workspace, optionally filtered to teams the specified user is a member of. 2 params

List teams in the workspace, optionally filtered to teams the specified user is a member of.

Name Type Required Description
user string optional User GID or 'me' to filter teams by the user's membership.
workspace_gid string optional Workspace GID to list teams from.
asanamcp_get_user # Retrieve details of an Asana user by their GID, email address, or 'me' for the current user. 2 params

Retrieve details of an Asana user by their GID, email address, or 'me' for the current user.

Name Type Required Description
email string optional Email address of the user to look up.
user_gid string optional User GID or 'me' to retrieve the authenticated user's details.
asanamcp_get_users # List users in the workspace, optionally filtered to members of a specific team. 2 params

List users in the workspace, optionally filtered to members of a specific team.

Name Type Required Description
team string optional Team GID to filter users by team membership.
workspace_gid string optional Workspace GID to list users from.
asanamcp_get_workspace_agents # Return a list of all AI Teammate agents configured in the Asana workspace. 0 params

Return a list of all AI Teammate agents configured in the Asana workspace.

asanamcp_search_objects # Universal search across Asana resource types including tasks, projects, portfolios, goals, teams, users, tags, and custom fields. 3 params

Universal search across Asana resource types including tasks, projects, portfolios, goals, teams, users, tags, and custom fields.

Name Type Required Description
resource_type string required Type of Asana resource to search. Valid values: task, project, portfolio, goal, team, user, tag, custom_field. Example: 'task'
query string optional Search query text to match against resource names and descriptions. Example: 'Q4 planning'
workspace_gid string optional The GID of the workspace to scope the search within. If omitted, searches across all accessible workspaces. Example: '1234567890123456'
asanamcp_search_tasks # Advanced task searching with full-text and attribute-based filtering. Requires a Premium Asana account. 10 params

Advanced task searching with full-text and attribute-based filtering. Requires a Premium Asana account.

Name Type Required Description
assignee string optional Filter tasks by assignee GID or 'me' for the current user. Example: 'me'
completed boolean optional Filter by completion status. Set to true to return only completed tasks, false for incomplete tasks.
due_on string optional Filter tasks with an exact due date (ISO 8601 format). Example: '2024-12-31'
due_on_after string optional Filter tasks due after this date (ISO 8601 format, inclusive). Example: '2024-01-01'
due_on_before string optional Filter tasks due before this date (ISO 8601 format, exclusive). Example: '2024-12-31'
project string optional Filter tasks by project GID. Example: '1234567890123456'
section string optional Filter tasks by section GID. Example: '1234567890123456'
tag string optional Filter tasks by tag GID. Example: '1234567890123456'
text string optional Full-text search query to match against task names and descriptions. Example: 'website redesign'
workspace_gid string optional The GID of the workspace to search within. Example: '1234567890123456'
asanamcp_search_tasks_preview # Display interactive search results for Asana tasks matching the given filters, before committing to any action. 5 params

Display interactive search results for Asana tasks matching the given filters, before committing to any action.

Name Type Required Description
assignee string optional Filter tasks by assignee GID or 'me' for the authenticated user. Example: 'me' or '1234567890123456'
due_date_range_end string optional End of the due date range filter in ISO 8601 format (YYYY-MM-DD). Returns tasks with due dates on or before this date. Example: '2024-12-31'
due_date_range_start string optional Start of the due date range filter in ISO 8601 format (YYYY-MM-DD). Returns tasks with due dates on or after this date. Example: '2024-01-01'
status string optional Filter tasks by completion status. Valid values: 'incomplete', 'completed', 'all'. Example: 'incomplete'
text string optional Full-text search query for tasks. Matches against task name, description, and other text fields. Example: 'Q4 launch'
asanamcp_update_tasks # Modify one or more Asana tasks in a single operation. Supports updating up to 50 tasks at once. 6 params

Modify one or more Asana tasks in a single operation. Supports updating up to 50 tasks at once.

Name Type Required Description
task_gids array required List of GIDs of the tasks to update. Up to 50 task GIDs may be provided in a single call. Example: ["1234567890123456", "9876543210987654"]
assignee string optional New assignee GID or 'me' to reassign the task(s). Use 'me' to assign to the authenticated user. Example: 'me' or '1234567890123456'
completed boolean optional Set to true to mark the task(s) as completed, or false to reopen them. Example: true
description string optional New description for the task(s). Replaces the existing description. Supports plain text or HTML. Example: 'Updated task description.'
due_date string optional New due date in ISO 8601 format (YYYY-MM-DD). Replaces the existing due date. Example: '2024-12-31'
name string optional New name (title) for the task(s). Replaces the existing task name. Example: 'Updated task name'