mcp-native task creation with structured schema validation
Exposes asana_create_task tool through MCP protocol that accepts JSON schema-validated parameters (name, description, assignee, due_date, projects, tags) and translates them into Asana REST API POST requests. Uses TypeScript type definitions and runtime validation to ensure only valid Asana field types are submitted, preventing malformed API calls before they reach Asana's servers.
Unique: Implements MCP tool registration with Asana-specific schema constraints (e.g., due_on as ISO8601 string, projects as array of GIDs) rather than generic REST wrapper, enabling AI clients to understand valid parameter combinations without trial-and-error API calls
vs alternatives: Tighter validation than raw Asana API SDKs because schema is enforced at MCP protocol layer before reaching Asana, reducing failed requests and API quota waste
workspace-aware task search with multi-field filtering
Implements asana_search_tasks tool that queries Asana's task search endpoint with filters across workspace, project, assignee, tag, and status fields. Translates MCP parameters into Asana's query syntax (e.g., 'assignee:gid' format) and returns paginated results with task metadata (GID, name, assignee, due date, completion status). Supports both simple text search and structured field-based filtering.
Unique: Translates natural MCP filter parameters into Asana's proprietary query syntax (e.g., 'assignee:gid' format) transparently, allowing AI clients to use simple field names without learning Asana's search grammar
vs alternatives: More discoverable than raw Asana API because MCP schema explicitly lists available filter fields, whereas Asana's REST API requires reading documentation to know which query operators are valid
project section enumeration and task organization by section
Exposes asana_get_project tool that retrieves full project metadata including sections array with section GIDs and names. Sections are organizational containers within projects that group related tasks. Tool returns section structure enabling AI clients to understand project layout and determine correct section for task placement. Sections are read-only through MCP — creation/deletion not supported.
Unique: Exposes sections as part of project metadata rather than separate tool, allowing AI clients to discover section structure in single call and understand project workflow layout
vs alternatives: More efficient than separate section-listing tool because sections are included in project metadata, reducing API calls needed to understand project organization
task update with selective field modification
Implements asana_update_task tool that modifies specific task fields (name, description, assignee, due_date, completed status, custom fields) through Asana's PATCH endpoint. Uses selective field update pattern — only provided fields are modified, leaving others unchanged. Validates field types before submission and returns updated task metadata. Supports both simple fields (name, description) and complex fields (custom fields, assignee).
Unique: Implements selective field updates using PATCH semantics rather than full task replacement, allowing AI agents to modify single fields without risk of overwriting other task data
vs alternatives: Safer than full task replacement because only specified fields are modified, reducing risk of accidental data loss if AI agent doesn't include all fields in update request
workspace enumeration and multi-workspace navigation
Exposes asana_get_workspaces tool that lists all workspaces accessible to the authenticated user. Returns workspace metadata (GID, name, is_organization) enabling AI clients to discover available workspaces and select correct workspace for subsequent operations. Workspace enumeration is required step before accessing projects or tasks since all Asana entities are scoped to workspaces.
Unique: Provides workspace enumeration as dedicated tool rather than requiring users to hardcode workspace GIDs, enabling dynamic workspace discovery for multi-workspace organizations
vs alternatives: More flexible than hardcoded workspace GIDs because AI agents can discover available workspaces at runtime and select appropriate workspace for operations
task retrieval with full metadata and custom field expansion
Implements asana_get_task tool that retrieves complete task metadata including standard fields (name, description, assignee, due_date, completed) and custom fields with their values. Uses Asana's task detail endpoint with field expansion to include related data (assignee details, project info, custom field definitions and values). Returns comprehensive task context enabling AI clients to understand full task state.
Unique: Includes custom field expansion in task retrieval, returning both field definitions and values in single call, rather than requiring separate custom field metadata lookups
vs alternatives: More complete than basic task retrieval because custom fields are included with values, enabling AI agents to make decisions based on custom metadata without additional API calls
error handling and validation with structured error responses
Implements error handling layer that catches Asana API errors (4xx, 5xx responses) and validation errors (invalid parameters, missing required fields) and returns structured error responses through MCP protocol. Maps Asana API error codes to human-readable messages and includes error context (which field failed, why) enabling AI clients to understand failure reasons and retry appropriately. Validation happens before API calls to prevent wasted requests.
Unique: Validates parameters at MCP schema layer before submitting to Asana API, catching invalid inputs early and reducing failed API calls and quota waste
vs alternatives: More efficient than API-first validation because schema validation prevents invalid requests from reaching Asana, reducing API quota consumption and latency
task dependency and blocking relationship management
Exposes asana_add_task_dependency and asana_remove_task_dependency tools that manage task blocking relationships through Asana's dependency API. Translates MCP requests into Asana's dependency endpoint calls, supporting 'blocks' and 'is_blocked_by' relationship types. Validates that both task GIDs exist before attempting relationship creation, preventing orphaned dependencies.
Unique: Wraps Asana's dependency API with explicit relationship type parameters ('blocks' vs 'is_blocked_by') in MCP schema, making directionality unambiguous for AI agents that might otherwise confuse blocking semantics
vs alternatives: Clearer than Asana's native UI for programmatic dependency creation because MCP schema forces explicit relationship direction, whereas UI can be ambiguous about which task blocks which
+7 more capabilities