Atlas / MCP servers / roychri / Asana

AsanaCAUTION

mcp/roychri/asana
Verdict
CAUTION
Grade
B
Trust score
88 /100
Exposed tools
49 23r · 20w · 6d
Transport
stdio
License
MIT
Stars
148
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/@roychri/mcp-server-asana)

This Model Context Protocol server implementation of Asana allows you to talk to Asana API from MCP Client such as Anthropic's Claude Desktop Application, and many more.

More details on MCP here:

  • https://www.anthropic.com/news/model-context-protocol
  • https://modelcontextprotocol.io/introduction
  • https://github.com/modelcontextprotocol

Environment Variables

  • ASANA_ACCESS_TOKEN: (Required) Your Asana access token
  • READ_ONLY_MODE: (Optional) Set to 'true' to disable all write operations. In this mode:
  • Tools that modify Asana data (create, update, delete) will be disabled
  • The create-task prompt will be disabled
  • Only read operations will be available

This is useful for testing or when you want to ensure no changes can be made to your Asana workspace.

Usage

In the AI tool of your choice (ex: Claude Desktop) ask something about asana tasks, projects, workspaces, and/or comments. Mentioning the word "asana" will increase the chance of having the LLM pick the right tool.

Example:

How many unfinished asana tasks do we have in our Sprint 30 project?

Another example:

Tools

  1. asana_list_workspaces
  2. List all available workspaces in Asana
  3. Optional input:
  4. opt_fields (string): Comma-separated list of optional fields to include
  5. Returns: List of workspaces
  6. asana_search_projects
  7. Search for projects in Asana using name pattern matching
  8. Required input:
  9. workspace (string): The workspace to search in
  10. name_pattern (string):
Read from source at commit 80d87654986bOBSERVED · 2026-10-07
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add mcp-server-asana --env ASANA_ACCESS_TOKEN=${ASANA_ACCESS_TOKEN} -- npx -y @roychri/[email protected]
claude-desktop
{
  "mcpServers": {
    "mcp-server-asana": {
      "command": "npx",
      "args": [
        "-y",
        "@roychri/[email protected]"
      ],
      "env": {
        "ASANA_ACCESS_TOKEN": "${ASANA_ACCESS_TOKEN}"
      }
    }
  }
}
03

Exposed tools (49)

23 read · 20 write · 6 destructive. Blast radius: 6 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
asana_add_project_to_taskwriteAdd an existing task to a project. If no positioning arguments are given, the task will be added to the end of the project.
asana_add_tag_to_taskwriteAdd a tag to a task
asana_add_task_dependencieswriteSet dependencies for a task
asana_add_task_dependentswriteSet dependents for a task (tasks that depend on this task)
asana_add_task_to_sectionwriteMove a task to a section within its project
asana_create_projectwriteCreate a new project in a workspace or team
asana_create_project_statuswriteCreate a new status update for a project
asana_create_sectionwriteCreate a new section in a project
asana_create_subtaskwriteCreate a new subtask for an existing task
asana_create_tag_for_workspacewriteCreate a new tag in a workspace
asana_create_taskwriteCreate a new task in a project
asana_create_task_storywriteCreate a comment or story on a task. Either text or html_text is required.
asana_delete_project_statusdestructiveDelete a project status update
asana_delete_sectiondestructiveDelete a section from a project
asana_delete_tagdestructiveDelete a tag
asana_delete_taskdestructiveDelete a task. This permanently removes the task and cannot be undone.
asana_get_multiple_tasks_by_gidreadGet detailed information about multiple tasks by their GIDs (maximum 25 tasks)
asana_get_my_tasksreadGet tasks from the authenticated user
asana_get_projectreadGet detailed information about a specific project
asana_get_project_sectionsreadGet sections in a project
asana_get_project_statuswriteGet a project status update
asana_get_project_statusesreadGet all status updates for a project
asana_get_project_task_countsreadGet the number of tasks in a project
asana_get_subtasksreadGet all subtasks of a given task. Returns a compact representation of each subtask.
asana_get_tagreadGet detailed information about a specific tag
asana_get_tags_for_taskreadGet a task
asana_get_tags_for_workspacereadGet tags in a workspace
asana_get_taskreadGet detailed information about a specific task
asana_get_task_storiesreadGet comments and stories for a specific task
asana_get_tasks_for_projectreadGet all tasks in a project. Use this instead of search_tasks when you need to list tasks in a specific project. Supports pagination and optional field selection.
asana_get_tasks_for_tagreadGet tasks for a specific tag
asana_list_workspacesreadList all available workspaces in Asana
asana_remove_project_from_taskdestructiveRemove a task from a project. The task will still exist in the system, but it will not be in the project anymore.
asana_remove_tag_from_taskdestructiveRemove a tag from a task
asana_search_projectsreadSearch for projects in Asana using name pattern matching
asana_search_tasksreadSearch tasks in a workspace with advanced filtering options
asana_set_parent_for_taskwriteSet the parent of a task and position the subtask within the other subtasks of that parent
asana_update_projectwriteUpdate a project
asana_update_sectionwriteUpdate a section (rename it)
asana_update_tagwriteUpdate an existing tag
asana_update_taskwriteUpdate an existing task
create-taskwriteCreate a new task with specified details
due_datereadDue date for the task (YYYY-MM-DD format)
notesreadNotes or description for the task
project_namereadThe name of the Asana project where the task should be created
task-completenessreadAnalyze if a task description contains all necessary details for completion
task-summarywriteGet a summary and status update for a task based on its notes, custom fields and comments
task_idreadThe task ID to get summary for
titlereadThe title of the task
04

Trust audit

CAUTIONgrade B · trust 88/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
none-observed
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (4)

HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
HOW-TO-TEST-MCP-ON-CLI.md:397
All information in this guide comes from official Anthropic documentation and verified community resources.
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
asana_delete_project_status, asana_delete_section, asana_delete_tag, asana_delete_task, asana_remove_project_from_task, asana_remove_tag_from_task
Why it matters. 6 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.aider.conf.yml
.aider.conf.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, asana, jsdom, @modelcontextprotocol/inspector, @tsconfig/node20, @types/jsdom, @types/node, esbuild
Why it matters. 11 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-07 · audit v0.4.1 · source sha 80d87654986bfull audit observations/trust-audit/mcp-server/roychri__asana.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-0780d87654986bCAUTIONB88first audit
06

Questions

What tools does Asana expose?

49 in total: 23 read-only, 20 that write, and 6 that can delete or overwrite (asana_delete_project_status, asana_delete_section, asana_delete_tag, asana_delete_task, asana_remove_project_from_task). Every one is listed on this page with its risk.

Is Asana safe to connect to an agent?

With care. The audit graded it B (88/100) and found 4 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 6 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Asana need?

It reads ASANA_ACCESS_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Asana run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @roychri/mcp-server-asana at 1.8.0.

How current is this page?

The grade is for one exact copy of the source (80d87654986b), read on 2026-10-07. The repository is watched and re-audited when it changes.

Advertisement