Skip to main content
Glama
README.md
# asana-mcp

An MCP server for Asana that reaches **every workspace**, over the classic API with a personal
access token. Shared by the family's apps (Excephalon, Highdeas).

Asana's hosted MCP server binds each OAuth grant to a single workspace chosen at sign-in, and
refuses personal access tokens. This server has neither limit: one PAT spans all workspaces, and
it is a plain string in a file, copyable between machines like any other runtime state.

## Use

Create a personal access token at https://app.asana.com/0/developer-console and save it, alone,
in a file. Then register the server with any MCP client as a stdio command:

```
python asana_mcp.py --serve --pat-file /path/to/pat.txt
```

No dependencies beyond the Python standard library.

## Tools

`list_workspaces`, `list_projects`, `list_project_tasks`, `list_my_tasks`, `get_task`,
`search` (typeahead - works on every Asana plan, unlike full task search), `create_task`,
`complete_task`. Asana's own error words pass through whole, marked as errors - a swallowed
reason sends whoever asked off to fix the wrong thing.

## Develop

```
python -m pytest tests/
```