使用说明
Asana MCP Server
MCP server that provides Asana tools for tasks, projects, portfolios, templates, and workspace discovery.
Requirements
- Python 3.10+
uvfor environment management- Asana personal access token (PAT)
Environment Variables
ASANA_TOKEN_FILE(preferred, required ifASANA_ACCESS_TOKENnot set)ASANA_ACCESS_TOKEN(fallback)ASANA_API_BASE(optional, defaulthttps://app.asana.com/api/1.0)ASANA_TIMEOUT_SECONDS(optional, default30)ASANA_MAX_RETRIES(optional, default3)LOG_LEVEL(optional, defaultINFO)LOG_FILE(optional, defaultlogs/asana-mcp.log)
Tools
asana_get_current_userasana_list_workspacesasana_list_projectsasana_get_taskasana_search_tasksasana_create_taskasana_update_taskasana_delete_taskasana_move_task_to_sectionasana_create_task_in_sectionasana_list_portfoliosasana_get_portfolioasana_create_portfolioasana_update_portfolioasana_delete_portfolioasana_list_portfolio_itemsasana_add_portfolio_itemasana_remove_portfolio_itemasana_list_portfolio_custom_field_settingsasana_add_portfolio_custom_field_settingasana_remove_portfolio_custom_field_settingasana_add_portfolio_membersasana_remove_portfolio_membersasana_list_portfolio_membershipsasana_list_project_templatesasana_get_project_templateasana_instantiate_project_templateasana_save_project_as_templateasana_delete_project_templateasana_list_task_templatesasana_get_task_templateasana_instantiate_task_templateasana_delete_task_template
Quickstart
uv sync
ASANA_TOKEN_FILE=.secrets/asana.token uv run python -m src.server
Runtime Flags
--versionprints the server version and exits.--health-checkvalidates configuration and exits.
Packaging (PyInstaller)
- Onefile build:
./scripts/build_dist.sh - Onedir build (faster startup):
./scripts/build_dist_onedir.sh
Run outputs:
./dist/asana-mcp-server --health-check
./dist/asana-mcp-server/asana-mcp-server --health-check
Codex CLI MCP Server Install
Example ~/.codex/config.toml entry:
[mcp_servers.asana]
command = "uv"
args = ["--project", "/path/to/repo", "run", "python", "-m", "src.server"]
[mcp_servers.asana.env]
PYTHONPATH = "/path/to/repo"
ASANA_TOKEN_FILE = "${HOME}/path/to/repo/.secrets/asana.token"
CLI Scripts
Each script accepts --payload or --payload-file with JSON input.
Example:
ASANA_ACCESS_TOKEN=*** \
uv run python -m scripts.asana_get_task --payload '{"task_gid":"123"}'