{"_id":"@blzvi/asana-mcp-server","name":"@blzvi/asana-mcp-server","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@blzvi/asana-mcp-server","publishConfig":{"access":"public"},"version":"1.0.0","description":"MCP server that gives AI assistants full access to the Asana API — 80 tools, 18 prompt templates, and browsable resources","main":"build/index.js","type":"module","bin":{"asana-mcp-server":"build/index.js"},"engines":{"node":">=22"},"scripts":{"build":"tsc","prepare":"npm run build","start":"node build/index.js","dev":"tsx src/index.ts","watch":"tsx watch src/index.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","lint":"biome check src/","lint:fix":"biome check --write src/","format":"biome format --write src/"},"repository":{"type":"git","url":"git+https://github.com/BLZvi/asana-mcp-server.git"},"homepage":"https://github.com/BLZvi/asana-mcp-server#readme","bugs":{"url":"https://github.com/BLZvi/asana-mcp-server/issues"},"keywords":["asana","mcp","model-context-protocol","ai","claude","llm","project-management","task-management","automation","anthropic","mcp-server"],"author":{"name":"Zvi Blitsman"},"license":"MIT","devDependencies":{"@biomejs/biome":"2.4.2","@modelcontextprotocol/inspector":"^0.4.0","@types/node":"^22.10.1","tsx":"^4.0.0","typescript":"^5.8.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.0","@xmldom/xmldom":"^0.8.11","asana":"^3.0.12","zod":"^4.3.6"},"gitHead":"d01aa7cea0847598e8bc0f219446b6f3e0dea020","types":"./build/index.d.ts","_id":"@blzvi/asana-mcp-server@1.0.0","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-po/le9sFVBiMqKeAMcsVmqotZ5ivZG8yKIOKX/Vu+8HWMjeAV/iAV19oZRyoTGHxvW2v972GzsJlxB3Z+wGI0g==","shasum":"976eaa10951997efc76f4baca5af147478fd24b8","tarball":"https://registry.npmjs.org/@blzvi/asana-mcp-server/-/asana-mcp-server-1.0.0.tgz","fileCount":93,"unpackedSize":281370,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID2klA1cmETPbfj0WAaJTbhknyNMt9eFjTzrrwaPdL8pAiEA+FJwSQIzyHlJlK/vabJnQvb2g69joSXAOa8V5kXyL/E="}]},"_npmUser":{"name":"zvibl","email":"zvi@blitsman.com"},"directories":{},"maintainers":[{"name":"zvibl","email":"zvi@blitsman.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/asana-mcp-server_1.0.0_1771682265321_0.9122893638308749"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-21T13:57:45.243Z","1.0.0":"2026-02-21T13:57:45.470Z","modified":"2026-02-21T13:57:46.023Z"},"maintainers":[{"name":"zvibl","email":"zvi@blitsman.com"}],"description":"MCP server that gives AI assistants full access to the Asana API — 80 tools, 18 prompt templates, and browsable resources","homepage":"https://github.com/BLZvi/asana-mcp-server#readme","keywords":["asana","mcp","model-context-protocol","ai","claude","llm","project-management","task-management","automation","anthropic","mcp-server"],"repository":{"type":"git","url":"git+https://github.com/BLZvi/asana-mcp-server.git"},"author":{"name":"Zvi Blitsman"},"bugs":{"url":"https://github.com/BLZvi/asana-mcp-server/issues"},"license":"MIT","readme":"# MCP Server for Asana\r\n\r\nGive your AI assistant full access to Asana. Create tasks, manage projects, track time, search across your workspace — all through natural language.\r\n\r\n**80 tools** | **18 prompt templates** | **Browsable resources** | Full read + write coverage\r\n\r\n## What can you do with this?\r\n\r\nJust talk to your AI assistant naturally:\r\n\r\n> \"How many unfinished tasks are in Sprint 30?\"\r\n\r\n> \"Create a task for Sarah to review the API docs, due Friday, in the Backend project\"\r\n\r\n> \"Move all overdue tasks in the Marketing project to the Backlog section\"\r\n\r\n> \"Log 2 hours on PROJ-1234 for today\"\r\n\r\n> \"What's the status of our Q1 goals?\"\r\n\r\n> \"Give me a standup summary for today\"\r\n\r\n> \"Break down this task into subtasks\"\r\n\r\n## Quick Start\r\n\r\n**1. Get your Asana token** from [Asana Developer Console](https://developers.asana.com/docs/personal-access-token)\r\n\r\n**2. Clone and build:**\r\n\r\n```bash\r\ngit clone https://github.com/BLZvi/asana-mcp-server.git\r\ncd asana-mcp-server\r\nnpm install\r\n```\r\n\r\n**3. Add the server to your MCP client:**\r\n\r\n### Claude Desktop\r\n\r\nAdd to your `claude_desktop_config.json`:\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"asana\": {\r\n      \"command\": \"node\",\r\n      \"args\": [\"/absolute/path/to/asana-mcp-server/build/index.js\"],\r\n      \"env\": {\r\n        \"ASANA_ACCESS_TOKEN\": \"your-asana-access-token\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### Claude Code\r\n\r\n```bash\r\nclaude mcp add asana -e ASANA_ACCESS_TOKEN=<TOKEN> -- node /absolute/path/to/asana-mcp-server/build/index.js\r\n```\r\n\r\n### Any MCP-compatible client\r\n\r\nThis server works with any client that supports the [Model Context Protocol](https://modelcontextprotocol.io) — point it at the built `build/index.js` with the `ASANA_ACCESS_TOKEN` env var.\r\n\r\n## 80 Tools Across 16 Categories\r\n\r\nFull CRUD coverage of the Asana API — your AI can read **and** write.\r\n\r\n| Category | Tools | What you can do |\r\n|---|:---:|---|\r\n| **Tasks** | 12 | Search, create, update, delete, list by project/section/tag, batch get (up to 25), subtasks, multi-project |\r\n| **Task Relationships** | 3 | Dependencies, dependents, reparenting |\r\n| **Projects** | 7 | Search by name, CRUD, get sections & task counts |\r\n| **Project Statuses** | 4 | CRUD for project status updates |\r\n| **Sections** | 6 | CRUD, reorder, move tasks between sections |\r\n| **Tags** | 9 | CRUD, add/remove from tasks, list by workspace/task |\r\n| **Custom Fields** | 7 | Create/manage field definitions and enum options |\r\n| **Portfolios** | 8 | CRUD, add/remove projects from portfolios |\r\n| **Goals** | 5 | CRUD for workspace goals |\r\n| **Time Tracking** | 7 | Log hours, manage entries, browse time periods |\r\n| **Comments & Stories** | 2 | Read activity feed, post comments (plain or rich HTML) |\r\n| **Attachments** | 4 | List, inspect, delete, attach external URLs |\r\n| **Users** | 2 | Look up users by GID, email, or `me` |\r\n| **Teams** | 2 | Get team info, list teams in workspace |\r\n| **Typeahead** | 1 | Fuzzy search any resource type by name |\r\n| **Workspaces** | 1 | List all accessible workspaces |\r\n\r\n## 18 Prompt Templates\r\n\r\nPre-built workflows that combine API calls with AI reasoning. The AI pre-fetches relevant Asana data, then produces structured analysis or takes action.\r\n\r\n### Task-level\r\n\r\n| Prompt | Description |\r\n|---|---|\r\n| `task-summary` | Pre-fetches task details + comments, generates a status summary |\r\n| `analyze-task` | Scores how well-defined a task is (0-100) with per-dimension breakdown |\r\n| `task-completeness` | Fetches a task, identifies gaps, asks clarifying questions, updates the description |\r\n| `task-breakdown` | Breaks a complex task into well-scoped subtasks |\r\n| `log-work` | Retro-log work done outside Asana — creates a task and marks it complete |\r\n\r\n### Project-level\r\n\r\n| Prompt | Description |\r\n|---|---|\r\n| `project-summary` | Full project status report with task counts, statuses, and open tasks |\r\n| `status-update` | Polished stakeholder status update (email/Slack-ready) |\r\n| `project-risks` | Scans for risk signals (overdue, unassigned, empty descriptions) and produces a risk register |\r\n| `project-onboarding` | \"Getting up to speed\" brief for someone new to a project |\r\n| `overdue-triage` | Triages overdue tasks: do now, reschedule, reassign, or drop |\r\n| `prioritize-backlog` | Guides prioritization of incomplete tasks by section |\r\n| `team-workload` | Analyzes task distribution across team members to spot imbalances |\r\n\r\n### Personal productivity\r\n\r\n| Prompt | Description |\r\n|---|---|\r\n| `my-tasks` | Fetches your incomplete tasks and generates a prioritized daily plan |\r\n| `standup` | Done/doing/blockers summary from your recent task activity |\r\n| `weekly-review` | Weekly reflection + plan from completed and open tasks |\r\n\r\n### Planning & creation\r\n\r\n| Prompt | Description |\r\n|---|---|\r\n| `sprint-planning` | Plans a sprint from a project's backlog based on team capacity |\r\n| `sprint-from-confluence` | Fetches a Confluence page and creates corresponding Asana tasks |\r\n| `create-task` | Guided task creation with clarifying questions |\r\n\r\n## Browsable Resources\r\n\r\nExpose Asana data as MCP resources that clients can browse directly:\r\n\r\n| URI Pattern | Description |\r\n|---|---|\r\n| `asana://workspace/{gid}` | Workspace details, org info, email domains |\r\n| `asana://project/{gid}` | Project details, sections, custom fields, dates |\r\n| `asana://task/{gid}` | Task details, subtasks, custom fields, recent comments |\r\n\r\n## Configuration\r\n\r\n| Variable | Required | Description |\r\n|---|---|---|\r\n| `ASANA_ACCESS_TOKEN` | Yes | Your [Asana personal access token](https://developers.asana.com/docs/personal-access-token) |\r\n| `ASANA_DEFAULT_WORKSPACE_GID` | No | Default workspace GID — tools use this when no workspace is specified |\r\n| `ASANA_READ_ONLY_MODE` | No | Set to `true` to disable all write operations (great for safe exploration) |\r\n\r\n## Read-Only Mode\r\n\r\nSet `ASANA_READ_ONLY_MODE=true` to restrict the server to read-only operations. All create/update/delete tools and write prompts are automatically hidden. Useful for:\r\n\r\n- Safely exploring what the server can do before granting write access\r\n- Shared environments where you want to prevent accidental changes\r\n- Audit and reporting use cases\r\n\r\n## Roadmap\r\n\r\nWhat's coming next:\r\n\r\n- **Rate limiting / retry** — Automatic backoff for Asana's 429 rate limits\r\n- **Remove dependencies/dependents** — Complete dependency management (currently add-only)\r\n- **Story CRUD** — Edit and delete comments (currently read + create)\r\n- **Duplicate project** — Create projects from templates\r\n- **Test coverage** — Unit and integration tests with vitest\r\n\r\nSee [roadmap.md](roadmap.md) for the full plan.\r\n\r\n## Full Tool Reference\r\n\r\n<details>\r\n<summary><strong>Tasks</strong> — 12 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_search_tasks` | Search tasks with advanced filtering (assignee, project, tags, custom fields, etc.) |\r\n| `asana_get_task` | Get detailed information about a task |\r\n| `asana_get_multiple_tasks_by_gid` | Get details for up to 25 tasks at once |\r\n| `asana_create_task` | Create a task in a project (supports section placement via `memberships`) |\r\n| `asana_update_task` | Update task details (name, assignee, due date, custom fields, etc.) |\r\n| `asana_delete_task` | Permanently delete a task |\r\n| `asana_get_tasks_for_project` | List all tasks in a project |\r\n| `asana_get_tasks_for_section` | List all tasks in a section |\r\n| `asana_create_subtask` | Create a subtask under a parent task |\r\n| `asana_get_subtasks` | Get all subtasks of a task |\r\n| `asana_add_project_to_task` | Add a task to a project |\r\n| `asana_remove_project_from_task` | Remove a task from a project |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Task Relationships</strong> — 3 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_add_task_dependencies` | Set tasks that a task depends on |\r\n| `asana_add_task_dependents` | Set tasks that depend on a task |\r\n| `asana_set_parent_for_task` | Set/change a task's parent and position |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Projects</strong> — 7 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_search_projects` | Search projects by name pattern |\r\n| `asana_get_project` | Get project details |\r\n| `asana_create_project` | Create a new project |\r\n| `asana_update_project` | Update project details |\r\n| `asana_delete_project` | Delete a project |\r\n| `asana_get_project_task_counts` | Get task count breakdown for a project |\r\n| `asana_get_project_sections` | Get sections in a project |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Project Statuses</strong> — 4 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_project_statuses` | Get all status updates for a project |\r\n| `asana_get_project_status` | Get a specific project status |\r\n| `asana_create_project_status` | Create a project status update |\r\n| `asana_delete_project_status` | Delete a project status update |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Sections</strong> — 6 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_section` | Get section details |\r\n| `asana_create_section` | Create a section in a project |\r\n| `asana_update_section` | Rename a section |\r\n| `asana_delete_section` | Delete a section |\r\n| `asana_move_section` | Reorder a section within a project |\r\n| `asana_add_task_to_section` | Move a task to a section |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Tags</strong> — 9 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_tag` | Get tag details |\r\n| `asana_get_tags_for_task` | Get tags on a task |\r\n| `asana_get_tasks_for_tag` | Get tasks with a specific tag |\r\n| `asana_get_tags_for_workspace` | List tags in a workspace |\r\n| `asana_create_tag_for_workspace` | Create a new tag |\r\n| `asana_update_tag` | Update a tag |\r\n| `asana_delete_tag` | Delete a tag |\r\n| `asana_add_tag_to_task` | Add a tag to a task |\r\n| `asana_remove_tag_from_task` | Remove a tag from a task |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Custom Fields</strong> — 7 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_custom_fields_for_workspace` | List all custom field definitions in a workspace |\r\n| `asana_get_custom_field` | Get custom field details (including enum options and GIDs) |\r\n| `asana_create_custom_field` | Create a new custom field (text, number, enum, date, people) |\r\n| `asana_update_custom_field` | Update custom field name, description, or number settings |\r\n| `asana_delete_custom_field` | Permanently delete a custom field from the workspace |\r\n| `asana_create_enum_option` | Add a new option to an enum or multi_enum custom field |\r\n| `asana_update_enum_option` | Update an enum option's name, color, or enabled status |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Portfolios</strong> — 8 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_portfolio` | Get portfolio details |\r\n| `asana_get_portfolios` | List portfolios in a workspace |\r\n| `asana_create_portfolio` | Create a portfolio |\r\n| `asana_update_portfolio` | Update a portfolio |\r\n| `asana_delete_portfolio` | Delete a portfolio |\r\n| `asana_get_portfolio_items` | Get projects in a portfolio |\r\n| `asana_add_portfolio_item` | Add a project to a portfolio |\r\n| `asana_remove_portfolio_item` | Remove a project from a portfolio |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Goals</strong> — 5 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_goal` | Get goal details |\r\n| `asana_get_goals` | List goals in a workspace |\r\n| `asana_create_goal` | Create a goal |\r\n| `asana_update_goal` | Update a goal |\r\n| `asana_delete_goal` | Delete a goal |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Time Tracking & Periods</strong> — 7 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_time_periods` | List time periods in a workspace (quarters, fiscal years) |\r\n| `asana_get_time_period` | Get time period details |\r\n| `asana_get_time_tracking_entries` | Get time entries for a task |\r\n| `asana_get_time_tracking_entry` | Get a specific time entry |\r\n| `asana_create_time_tracking_entry` | Log time on a task |\r\n| `asana_update_time_tracking_entry` | Update a time entry |\r\n| `asana_delete_time_tracking_entry` | Delete a time entry |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Comments & Stories</strong> — 2 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_task_stories` | Get comments and activity for a task |\r\n| `asana_create_task_story` | Add a comment to a task (plain text or rich HTML) |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Attachments</strong> — 4 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_attachments_for_object` | List all attachments on a task or project |\r\n| `asana_get_attachment` | Get attachment details (including download URL) |\r\n| `asana_delete_attachment` | Delete an attachment |\r\n| `asana_create_attachment_for_object` | Attach an external URL link to a task or project |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Users</strong> — 2 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_user` | Get user details by GID, email, or `'me'` (current user) |\r\n| `asana_get_users_for_workspace` | List all users in a workspace (find GIDs by name or email) |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Teams</strong> — 2 tools</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_get_team` | Get team details |\r\n| `asana_get_teams_for_workspace` | List all teams in a workspace |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Typeahead</strong> — 1 tool</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_typeahead` | Fuzzy-search for tasks, projects, users, tags, teams, portfolios, or goals by partial name |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><strong>Workspaces</strong> — 1 tool</summary>\r\n\r\n| Tool | Description |\r\n|---|---|\r\n| `asana_list_workspaces` | List all available workspaces |\r\n\r\n</details>\r\n\r\n## Requirements\r\n\r\n- **Node.js 22+**\r\n- An [Asana personal access token](https://developers.asana.com/docs/personal-access-token)\r\n\r\n## Contributing\r\n\r\n```bash\r\ngit clone https://github.com/BLZvi/asana-mcp-server.git\r\ncd asana-mcp-server\r\nnpm install\r\nnpm run dev\r\n```\r\n\r\nTest with the MCP Inspector:\r\n\r\n```bash\r\nnpm run inspector\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md","_rev":"1-b461dc375cd72c55cd2f063fe41b3308"}