Skip to main content
Glama
BlZvi
by BlZvi

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ASANA_ACCESS_TOKENYesYour Asana personal access token
ASANA_READ_ONLY_MODENoSet to true to disable all write operations
ASANA_DEFAULT_WORKSPACE_GIDNoDefault workspace GID — tools use this when no workspace is specified

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
asana_list_workspacesA

List all Asana workspaces accessible to the current token. Call this first to get the workspace GID required by most other tools. Most accounts have exactly one workspace. Returns an array with gid, resource_type, and name by default.

asana_get_userA

Get details for an Asana user by GID, email address, or 'me' (current user). Returns gid, name, and email by default. Use 'me' to identify the current token's user. Use asana_get_users_for_workspace to find GIDs by name or email.

asana_get_users_for_workspaceA

List all users in a workspace. Returns gid, name, and email for each user. Use this to find a user's GID before assigning tasks or filtering by assignee. Supports pagination for large workspaces.

asana_get_teamA

Get details for a team by GID. Returns gid, name, description, and organization. Use asana_get_teams_for_workspace to find team GIDs.

asana_get_teams_for_workspaceA

List all teams in a workspace. Returns gid and name for each team. Use this to find a team GID before calling asana_create_project — most organization workspaces require a team. Supports pagination.

asana_typeaheadA

Search for Asana objects (tasks, projects, users, tags, teams, portfolios, goals) by partial name. Returns up to 100 compact results with gid and name. Use this to find the GID of a resource when you only know its name — e.g. find a task called 'Fix login bug' before updating it. Results are ordered by relevance (recency for projects, contact frequency for users). For users, include opt_fields: 'gid,name,email' to get email addresses.

asana_search_projectsA

Search for projects in a workspace by name using a regex pattern. Fetches all projects (auto-paginated) and filters client-side. Use name_pattern: '.' to list all projects. Returns array of objects with gid, name, resource_type by default.

asana_get_projectA

Get full details for a project by GID. Returns gid, name, archived, color, created_at, modified_at, default_view, due_on, start_on, notes, privacy_setting, public, team.gid, and workspace.gid by default.

asana_get_project_task_countsA

Get task counts for a project broken down by completion status. IMPORTANT: returns an empty object unless opt_fields specifies count fields explicitly. Always include opt_fields.

asana_get_project_sectionsA

List all sections in a project. Returns array of objects with gid, name, resource_type. Section GIDs are needed to place tasks in specific sections or to call section-specific tools.

asana_create_projectA

Create a new project in a workspace. In organization workspaces (most), a team GID is required. Returns the created project object.

asana_update_projectA

Update fields on an existing project. Only supply the fields you want to change. Returns the updated project object.

asana_delete_projectA

Permanently delete a project and all its tasks. This action cannot be undone.

asana_get_project_statusA

Get a single project status update by its GID. Returns the status object including text, color (green/yellow/red), title, author, and created_at.

asana_get_project_statusesA

List all status updates for a project, ordered newest first. Status updates are the periodic health check-ins (green/yellow/red) visible in the project's status tab. Returns an array of status objects.

asana_create_project_statusA

Create a new status update for a project (the health check-in shown in the project's status tab). Returns the created status object. Use color to visually signal project health.

asana_delete_project_statusA

Permanently delete a project status update. This cannot be undone.

asana_search_tasksA

Full-text search for tasks across a workspace with advanced filters. Searches task names AND descriptions. Returns up to 100 results (no auto-pagination). Prefer filters like projects_any, assignee_any, completed, or due_on_before to narrow results. Returns minimal fields by default — always use opt_fields.

asana_get_taskA

Get full details for a single task by GID. Default response is minimal (gid + name only) — always use opt_fields. Returns rich data including custom fields, memberships (project+section), HTML notes, parent, subtask count, tags, and followers.

asana_create_taskA

Create a new task. Use memberships to place it directly in a specific project section (preferred over project_id alone). Returns the created task object.

asana_update_taskA

Update fields on an existing task. Only supply the fields you want to change. Returns the updated task object. To mark complete: set completed: true. To move sections: use asana_add_task_to_section instead.

asana_create_subtaskA

Create a subtask under an existing task. Subtasks are tasks with a parent. Returns the created subtask object. Use asana_get_subtasks to list existing subtasks.

asana_get_multiple_tasks_by_gidA

Fetch up to 25 tasks by GID in a single call. More efficient than calling asana_get_task repeatedly. Use when you have a known list of task GIDs (e.g. from a search result). Returns the same fields as asana_get_task.

asana_add_project_to_taskA

Add an existing task to a project (tasks can belong to multiple projects). Added to the end of the project by default. Optionally specify a section or relative position. Use at most one of: section, insert_after, insert_before.

asana_remove_project_from_taskA

Remove a task from a project. The task still exists and remains in any other projects it belongs to. Only removes the association.

asana_delete_taskA

Permanently delete a task including all its subtasks. This cannot be undone. Use asana_update_task with completed: true instead if you just want to mark it done.

asana_get_subtasksA

List all direct subtasks of a task. Returns only one level deep — call recursively for nested subtasks. Returns minimal fields by default, use opt_fields for more.

asana_get_tasks_for_projectA

List all tasks in a project (direct members only, not subtasks). Returns tasks across all sections. For tasks in a specific section use asana_get_tasks_for_section. Returns minimal fields by default — use opt_fields.

asana_get_tasks_for_sectionA

List all tasks in a specific project section. Use asana_get_project_sections to get section GIDs. Returns minimal fields by default — use opt_fields.

asana_add_task_dependenciesA

Mark one or more tasks as dependencies of a given task (i.e. the given task cannot start until the dependency tasks are complete). Returns an empty object {} on success. Use asana_get_task with opt_fields=dependencies to verify.

asana_add_task_dependentsA

Mark one or more tasks as dependents of a given task (i.e. those tasks cannot start until this task is complete). Returns an empty object {} on success. This is the inverse of asana_add_task_dependencies.

asana_set_parent_for_taskA

Convert a task into a subtask by assigning it a parent task. Optionally control the subtask's position among its siblings. Returns the updated task object including the new parent. To remove a parent (promote a subtask to top-level), set parent to null.

asana_get_task_storiesA

Get all stories (comments and system activity) for a task, ordered oldest first. Returns an array of story objects — each has type: 'comment' (user-added comments) or type: 'system' (auto-generated activity like assignments and status changes). Filter for type === 'comment' to get only user comments.

asana_create_task_storyA

Add a comment to a task. Provide either text (plain text) or html_text (formatted). If both are given, html_text is used and text is ignored. Returns the created story object including gid, text, created_at, created_by.

asana_get_tagA

Get full details for a single tag by GID. Returns the tag's name, color, notes, followers, and workspace. Use asana_get_tags_for_workspace to find a tag GID by name.

asana_get_tags_for_taskA

List all tags currently applied to a task. Returns an array of tag objects with gid, name, and color. Tags are workspace-scoped labels used to categorize tasks across projects.

asana_get_tags_for_workspaceA

List all tags in a workspace. Tags are workspace-scoped and can be applied to any task. Returns an array of tag objects. Use limit and offset for pagination on large workspaces.

asana_update_tagA

Update the name, color, or notes of an existing tag. Only supply the fields you want to change. Returns the updated tag object.

asana_delete_tagA

Permanently delete a tag from the workspace. This does NOT remove the tag from tasks — it just deletes the tag itself. Returns an empty object {} on success.

asana_get_tasks_for_tagA

List all tasks that have a specific tag applied. Returns an array of task objects. Useful for finding all tasks in a workspace labeled with a particular tag, regardless of project.

asana_create_tag_for_workspaceA

Create a new tag in a workspace. Tags are workspace-scoped and can be applied to any task. Returns the created tag object. After creating, use asana_add_tag_to_task to apply it.

asana_add_tag_to_taskA

Apply a tag to a task. Returns an empty object {} on success. Use asana_get_tags_for_workspace to find the tag GID first. To remove the tag, use asana_remove_tag_from_task.

asana_remove_tag_from_taskA

Remove a tag from a task (does not delete the tag itself). Returns an empty object {} on success.

asana_get_sectionA

Get details for a single section by GID. Returns the section's name, created_at, and parent project. Use asana_get_project_sections to list all sections in a project and find GIDs.

asana_create_sectionA

Create a new section in a project. Sections appear as column headers in board view or group headers in list view. Returns the created section object with gid and name. Use insert_before or insert_after to control placement.

asana_update_sectionA

Rename an existing section. Returns the updated section object with gid and name. To reorder sections, use asana_move_section instead.

asana_delete_sectionA

Delete a section from a project. Tasks in the deleted section are moved to the project's default (first) section — they are NOT deleted. The last remaining section in a project cannot be deleted. Returns a success message.

asana_move_sectionA

Reorder a section within a project by moving it before or after another section. Returns an empty object {} on success. To rename a section, use asana_update_section.

asana_add_task_to_sectionA

Move a task into a specific section within a project. The task is placed at the top of the section unless insert_before or insert_after is specified. Returns a success message. Prefer using the memberships parameter in asana_create_task to place tasks in sections at creation time.

asana_get_portfolioA

Get full details for a portfolio by GID. Returns name, color, public status, owner, members, and workspace. Use asana_get_portfolios to find portfolio GIDs.

asana_get_portfoliosA

List portfolios in a workspace. IMPORTANT: The owner parameter is required by the Asana API — omitting it returns a Bad Request error. Use owner: 'me' to list your own portfolios. Returns an array of portfolio objects.

asana_create_portfolioA

Create a new portfolio in a workspace. Portfolios group related projects for high-level tracking. Returns the created portfolio object with gid and name.

asana_update_portfolioA

Update the name, color, or public visibility of a portfolio. Only supply the fields to change. Returns the updated portfolio object.

asana_delete_portfolioA

Permanently delete a portfolio. This does NOT delete the projects in the portfolio. Returns a success message.

asana_get_portfolio_itemsA

List all projects in a portfolio. Returns an array of project objects with gid, name, color, and archived status. Use asana_add_portfolio_item to add projects.

asana_add_portfolio_itemA

Add a project to a portfolio. Optionally control placement with insert_before or insert_after. Returns a success message.

asana_remove_portfolio_itemA

Remove a project from a portfolio. This does NOT delete the project — it only removes the association. Returns a success message.

asana_get_goalA

Get full details for a goal by GID. Returns name, status, notes, owner, team, time_period, followers, and workspace. Use asana_get_goals to list goals and find GIDs.

asana_get_goalsA

List goals in a workspace. Returns an array of goal objects with gid, name, status, owner, and team. Filter by team or time period using optional params. Supports pagination.

asana_create_goalA

Create a new goal in a workspace. IMPORTANT: time_period is required by the Asana API — get valid GIDs from asana_get_time_periods. Returns the created goal object. Note: status can only be set after a goal metric is configured.

asana_update_goalA

Update fields on an existing goal. Only supply the fields to change. Returns the updated goal object. Note: setting status requires the goal to have a metric configured first — otherwise the API returns an error.

asana_delete_goalA

Permanently delete a goal. This cannot be undone. Returns a success message.

asana_get_time_periodsA

List all time periods in a workspace (fiscal years, halves, and quarters). Time periods are used to scope goals. Returns a hierarchical array: FY (fiscal year) → H (half-year) → Q (quarter), each with gid, display_name, start_on, end_on, and parent. Use the GIDs with asana_create_goal or asana_get_goals.

asana_get_time_periodA

Get full details for a single time period by GID. Returns display_name, start_on, end_on, and parent time period. Use asana_get_time_periods to find GIDs.

asana_get_time_tracking_entriesA

List all time tracking entries logged for a task. Returns an array of entry objects with gid, duration_minutes, entered_on, and created_by. Note: time tracking must be enabled in the workspace.

asana_create_time_tracking_entryA

Log time spent on a task. Returns the created entry with gid, duration_minutes, entered_on, and created_by. Note: time tracking must be enabled in the workspace.

asana_get_time_tracking_entryA

Get a single time tracking entry by GID. Returns gid, duration_minutes, entered_on, created_by, and task. Use asana_get_time_tracking_entries to find entry GIDs.

asana_update_time_tracking_entryA

Update the duration or date of an existing time tracking entry. Returns the updated entry with gid, duration_minutes, and entered_on.

asana_delete_time_tracking_entryA

Permanently delete a time tracking entry from a task. This cannot be undone. Returns a success message.

asana_get_attachments_for_objectA

List all attachments on a task or project. Returns gid, name, resource_subtype, created_at, and host for each attachment. Use asana_get_attachment to get the download URL for a specific file.

asana_get_attachmentA

Get full details for a single attachment by GID. Returns name, download_url, view_url, size, host, created_at, and parent. Use the download_url to access the file. Use asana_get_attachments_for_object to list all attachments on a task.

asana_delete_attachmentA

Delete an attachment from a task or project. Returns an empty object {} on success. This action is permanent. Get attachment GIDs from asana_get_attachments_for_object.

asana_create_attachment_for_objectA

Attach an external URL link to a task or project. Creates a named link that appears in the task's attachments panel. Use this to link GitHub PRs, documents, design files, or any external resource to a task. Note: file upload (binary) is not supported through this tool — only URL-based (external) attachments.

asana_get_custom_fields_for_workspaceA

List all custom field definitions in a workspace. Returns gid, name, type, and enum_options for each field. Use this to discover available custom fields and their GIDs before reading or writing custom field values on tasks.

asana_get_custom_fieldA

Get full details for a custom field by GID. Returns name, type, description, enum_options (with gid, name, color, enabled), precision, and format. Use this to get enum option GIDs before setting custom field values on tasks.

asana_create_custom_fieldA

Create a new custom field in a workspace. Supported types: text, number, enum, multi_enum, date, people. For enum/multi_enum fields, add options after creation using asana_create_enum_option. Returns the created custom field object.

asana_update_custom_fieldA

Update a custom field's name, description, or settings. Note: the type field cannot be changed after creation. To add/update enum options, use asana_create_enum_option or asana_update_enum_option. Returns the updated custom field.

asana_delete_custom_fieldA

Permanently delete a custom field from the workspace. This removes the field from all tasks and projects. Locked fields can only be deleted by the user who locked them. Returns an empty object {} on success.

asana_create_enum_optionA

Add a new option to an enum or multi_enum custom field. New options are appended to the end of the list by default. Returns the created enum option with its GID. Use the GID to set this option on tasks via asana_update_task.

asana_update_enum_optionA

Update an enum option's name, color, or enabled status. Use this to rename options, change their color, or disable/enable them. Disabled options are hidden from users but existing values are preserved. Returns the updated enum option.

asana_get_task_historyA

Reconstruct a task's full lifecycle from its Asana activity stream. Returns the chronological event timeline (assignments, section moves, reschedules, completions, custom-field changes, comments), how long the task spent in each section, cycle/lead time, reschedule history with slip days, ownership churn, and triggered risk signals (stalled, chronic slip, ownership churn, review-bound). Use this to answer 'why is this task late?', 'where did it get stuck?' or 'who has touched it?'. Accepts a task GID, an Asana task URL, or a task name. Costs 2–3 API requests (more for very long activity streams).

asana_get_project_flow_metricsA

Compute delivery-flow statistics for a project by replaying the activity stream of its recently-completed tasks. Returns cycle-time and lead-time percentiles (p50/p85/p95 — cycle time is right-skewed, so the mean is reported only as a secondary figure), per-section dwell times ranked worst-first to expose bottlenecks, weekly throughput, reschedule frequency and median slip, and 'worst offender' task lists with clickable permalinks. EXPENSIVE: costs roughly one API request per sampled task, so it is bounded by max_tasks (hard cap 100) and by the server-wide per-prompt request budget; the response always states how much of the project was actually sampled. Use this to answer 'where does work get stuck?' or 'how long does delivery actually take?'.

asana_get_user_activityA

Summarize what a person did in Asana over a date range: tasks completed, tasks created, optional comment activity, and current open workload. Aggregates by month and by project. Uses windowed search to work correctly beyond Asana's 100-result search cap, and always reports coverage so partial results are never mistaken for complete ones. Returns methodology caveats that must be surfaced alongside any figures — notably that assignee reflects the CURRENT assignee, not who did the work.

asana_find_comparable_tasksA

Find completed tasks similar to a target task, to anchor an estimate on real history (reference-class forecasting). Returns each comparable's story points AND its actual cycle time, which is what reveals where past estimates were wrong. Similarity is computed from name/description term overlap, shared tags, and section match. Use this before estimating so the estimate is grounded in what work of this shape has actually cost.

asana_get_velocityA

Compute delivery velocity for a person or project over recent periods. Reports median and MAD (not mean and stddev — small samples make stddev unstable), detects bulk-close periods and excludes them, and reports what fraction of completed tasks actually had story points. When points coverage is below 50% the point velocity is SUPPRESSED and task-count velocity is returned instead, because low-coverage point velocity looks authoritative while measuring an arbitrary subset. Always returns a commitment RANGE, never a single number.

asana_match_tasks_to_refsA

Resolve code references — branch names, commit subjects, PR titles — to the Asana tasks they refer to. Recognizes bare GIDs, Asana URLs, #1234 / ASANA-1234 conventions, and falls back to a conservative fuzzy name match that only accepts a single unambiguous hit. Use this to connect repository history to Asana work, e.g. to find which tasks have no code behind them or which commits have no tracked task.

Prompts

Interactive templates invoked by user choice

NameDescription
asana-helpList everything this Asana server can do, grouped by what you are trying to accomplish, with copy-pasteable examples. Start here if you are not sure which command to use.
task-summaryGet a comprehensive summary and status update for an Asana task. Pre-fetches task details, custom fields, and all comments — no additional tool calls required.
task-historyReconstruct and analyze the full history of an Asana task from its activity stream: section timeline, time spent in each stage, handoffs, reschedules, and risk signals. Pre-fetches the entire lifecycle — no additional tool calls required.
analyze-taskScore how well-defined and understandable an Asana task is. Pre-fetches the task, subtasks, and comments, then produces a clarity score with a per-dimension breakdown and specific improvement suggestions.
task-completenessFetch an Asana task, assess whether its description is fully actionable, ask targeted questions to fill gaps, then update the task description.
task-breakdownBreak a complex Asana task into well-scoped subtasks. Pre-fetches the task and existing subtasks, then guides creation of a complete subtask checklist.
estimateEstimate an Asana task by anchoring on completed work of similar shape (reference-class forecasting). Pre-fetches comparable tasks with both their original estimates and their ACTUAL cycle times, so the estimate corrects for historical bias instead of inheriting it. Supports a planning-poker mode for team discussion.
log-workDocument work that was done outside Asana (ad-hoc, urgent, or support tasks). Searches for the project, creates a task with full context, and marks it complete. Useful for retro-logging.
project-summaryGenerate a project status report for an Asana project. Pre-fetches project metadata, task counts, recent status updates, and open tasks — no additional tool calls required.
status-updateGenerate a polished stakeholder status update (email/Slack format) for an Asana project. Pre-fetches project data — no additional tool calls required.
project-risksScan a project for risk signals (overdue tasks, missing assignees, empty descriptions, milestones at risk) and produce a prioritized risk register with mitigations.
flow-reportAnalyze delivery flow for an Asana project: cycle/lead time percentiles, which workflow sections are bottlenecks, weekly throughput, reschedule rates, and the worst-offending tasks. Reconstructs history from each task's activity stream. Costs roughly one API request per sampled task.
project-onboardingGenerate a 'getting up to speed' brief for someone new to a project. Pre-fetches project details, structure, active tasks, and recent status updates.
overdue-triageFetch all overdue tasks in a project and help triage them: do now, reschedule, reassign, or drop. Pre-fetches task data — no additional tool calls required.
stale-tasksFind tasks that have had no activity for a long time and decide what to do with each: revive, reassign, reschedule, or close. The highest-return recurring cleanup — stale tasks quietly destroy the signal value of a backlog.
prioritize-backlogFetch all incomplete tasks in a project and guide prioritization. Organizes by section, surfaces unprioritized items, and asks targeted questions to help rank work.
team-workloadAnalyze task distribution across team members in an Asana project to identify workload imbalances, overloaded members, and unassigned work.
my-tasksFetch all incomplete tasks assigned to you and generate a prioritized daily work plan. Optionally scoped to a specific workspace.
standupGenerate standup notes by fetching tasks you completed recently and tasks currently assigned to you. Produces a done/doing/blockers summary.
weekly-reviewGenerate a weekly review by fetching tasks completed this week and your current open tasks. Produces a reflection on the past week and a plan for the next.
unblock-meFind what is blocking your work — tasks waiting on dependencies, on other people, or stuck in review — and draft the nudges needed to clear them. Turns 'I'm stuck' into specific, sendable follow-ups.
captureTurn a freeform braindump — meeting notes, a list of thoughts, pasted text — into well-formed Asana tasks in the right projects. Previews everything before creating. The fastest path from 'things in my head' to tracked work.
contributionsSummarize a person's Asana work over a period: what they completed and created, how it was distributed across projects and months, and how it compares to the previous period. Pre-fetches everything using windowed search so results are not silently truncated. Reports methodology caveats alongside the figures.
portfolio-healthRoll up delivery health across every project in an Asana portfolio: progress, status colour, overdue counts, and ownership. The executive cross-project view — answers 'how is everything going?' in one call.
goal-progressReport progress against Asana goals: current metric values, status, time elapsed versus progress made, and which goals are behind pace. Answers 'how are we tracking against our objectives?'
sprint-capacityRecommend how much work a person or team should commit to next sprint, based on measured historical velocity rather than guesswork. Detects and excludes bulk-close periods, reports points coverage, and always answers with a range. Use before sprint planning to set a realistic commitment.
sprint-planningPlan a sprint from a project's backlog. Pre-fetches incomplete tasks, then guides selection, assignment, and sprint goal definition based on team capacity.
sprint-from-confluenceFetch a Confluence page, extract work items or requirements, and create corresponding Asana tasks in a project. Bridges research/planning docs directly into actionable work.
create-taskInteractively guide the creation of a comprehensive Asana task by collecting requirements through targeted questions, then create it using asana_create_task.
link-tasks-to-codeMap an Asana project's tasks to the repository's branches and commits. Identifies tasks with no code behind them and commits with no tracked task. Requires the client to have git/filesystem tools; degrades to asking the user to paste git output.
tech-debt-roadmapTurn in-code debt markers (TODO/FIXME/HACK) and churn hotspots into a reviewable Asana backlog. Pre-fetches existing debt-tagged tasks so proposals are deduplicated against work already tracked. Previews before creating anything.
estimate-from-codeEstimate an Asana task by examining the actual code that would change, combined with historical comparables. More accurate than title-only estimation because it grounds the estimate in real change surface.
release-notesGenerate release notes by combining tasks completed in a window with the commits from the same period. Produces a themed changelog rather than a raw task dump.
roadmap-gap-analysisCompare what the Asana roadmap claims is done against what the codebase actually supports. Surfaces items marked complete that lack tests, error handling, or documentation.
impact-analysisFor a proposed change, identify the affected code, related past Asana work, and who last touched the area — to determine blast radius and the right owner.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BlZvi/asana-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server