M

MCP Asana 服务

@roychri/mcp-server-asana
0 Stars 356 次浏览 roychri 更新于 2026-08-23

在MCP客户端(例如Anthropic的Claude桌面应用程序)上执行Asana操作,还有更多功能。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "asana": {
      "args": [
        "-y",
        "@roychri/mcp-server-asana"
      ],
      "command": "npx",
      "env": {
        "ASANA_ACCESS_TOKEN": "your-asana-access-token"
      }
    }
  }
}

该服务需要配置环境变量:ASANA_ACCESS_TOKEN

服务介绍

Asana 的 MCP 服务器

npm version

这个 Asana 的 Model Context Protocol 服务器实现允许你通过 MCP 客户端(如 Anthropic 的 Claude 桌面应用程序等)与 Asana API 进行通信。

更多关于 MCP 的信息:

使用方法

在您选择的 AI 工具中(例如:Claude 桌面应用),询问有关 asana 任务、项目、工作区和/或评论的信息。提到“asana”这个词将增加语言模型选择正确工具的机会。

示例:

我们在 Sprint 30 项目中有多少未完成的 asana 任务?

另一个示例:

Claude 桌面应用示例

工具

  1. asana_list_workspaces
    • List all available workspaces in Asana
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: List of workspaces
  2. asana_search_projects
    • Search for projects in Asana using name pattern matching
    • Required input:
      • workspace (string): The workspace to search in
      • name_pattern (string): Regular expression pattern to match project names
    • Optional input:
      • archived (boolean): Only return archived projects (default: false)
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: List of matching projects
  3. asana_search_tasks
    • Search tasks in a workspace with advanced filtering options
    • Required input:
      • workspace (string): The workspace to search in
    • Optional input:
      • text (string): Text to search for in task names and descriptions
      • resource_subtype (string): Filter by task subtype (e.g. milestone)
      • completed (boolean): Filter for completed tasks
      • is_subtask (boolean): Filter for subtasks
      • has_attachment (boolean): Filter for tasks with attachments
      • is_blocked (boolean): Filter for tasks with incomplete dependencies
      • is_blocking (boolean): Filter for incomplete tasks with dependents
      • assignee, projects, sections, tags, teams, and many other advanced filters
      • sort_by (string): Sort by due_date, created_at, completed_at, likes, modified_at (default: modified_at)
      • sort_ascending (boolean): Sort in ascending order (default: false)
      • opt_fields (string): Comma-separated list of optional fields to include
      • custom_fields (object): Object containing custom field filters
    • Returns: List of matching tasks
  4. asana_get_task
    • Get detailed information about a specific task
    • Required input:
      • task_id (string): The task ID to retrieve
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Detailed task information
  5. asana_create_task
    • Create a new task in a project
    • Required input:
      • project_id (string): The project to create the task in
      • name (string): Name of the task
    • Optional input:
      • notes (string): Description of the task
      • html_notes (string): HTML-like formatted description of the task
      • due_on (string): Due date in YYYY-MM-DD format
      • assignee (string): Assignee (can be 'me' or a user ID)
      • followers (array of strings): Array of user IDs to add as followers
      • parent (string): The parent task ID to set this task under
      • projects (array of strings): Array of project IDs to add this task to
      • resource_subtype (string): The type of the task (default_task or milestone)
      • custom_fields (object): Object mapping custom field GID strings to their values
    • Returns: Created task information
  6. asana_get_task_stories
    • Get comments and stories for a specific task
    • Required input:
      • task_id (string): The task ID to get stories for
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: List of task stories/comments
  7. asana_update_task
    • Update an existing task's details
    • Required input:
      • task_id (string): The task ID to update
    • Optional input:
      • name (string): New name for the task
      • notes (string): New description for the task
      • due_on (string): New due date in YYYY-MM-DD format
      • assignee (string): New assignee (can be 'me' or a user ID)
      • completed (boolean): Mark task as completed or not
      • resource_subtype (string): The type of the task (default_task or milestone)
      • custom_fields (object): Object mapping custom field GID strings to their values
    • Returns: Updated task information
  8. asana_get_project
    • Get detailed information about a specific project
    • Required input:
      • project_id (string): The project ID to retrieve
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Detailed project information
  9. asana_get_project_task_counts
    • Get the number of tasks in a project
    • Required input:
      • project_id (string): The project ID to get task counts for
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Task count information
  10. asana_get_project_sections
    • Get sections in a project
    • Required input:
      • project_id (string): The project ID to get sections for
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: List of project sections
  11. asana_create_task_story
    • Create a comment or story on a task
    • Required input:
      • task_id (string): The task ID to add the story to
      • text (string): The text content of the story/comment
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Created story information
  12. asana_add_task_dependencies
    • Set dependencies for a task
    • Required input:
      • task_id (string): The task ID to add dependencies to
      • dependencies (array of strings): Array of task IDs that this task depends on
    • Returns: Updated task dependencies
  13. asana_add_task_dependents
    • Set dependents for a task (tasks that depend on this task)
    • Required input:
      • task_id (string): The task ID to add dependents to
      • dependents (array of strings): Array of task IDs that depend on this task
    • Returns: Updated task dependents
  14. asana_create_subtask
    • Create a new subtask for an existing task
    • Required input:
      • parent_task_id (string): The parent task ID to create the subtask under
      • name (string): Name of the subtask
    • Optional input:
      • notes (string): Description of the subtask
      • due_on (string): Due date in YYYY-MM-DD format
      • assignee (string): Assignee (can be 'me' or a user ID)
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Created subtask information
  15. asana_get_multiple_tasks_by_gid
    • Get detailed information about multiple tasks by their GIDs (maximum 25 tasks)
    • Required input:
      • task_ids (array of strings or comma-separated string): Task GIDs to retrieve (max 25)
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: List of detailed task information
  16. asana_get_project_status
    • Get a project status update
    • Required input:
      • project_status_gid (string): The project status GID to retrieve
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Project status information
  17. asana_get_project_statuses
    • Get all status updates for a project
    • Required input:
      • project_gid (string): The project GID to get statuses for
    • Optional input:
      • limit (number): Results per page (1-100)
      • offset (string): Pagination offset token
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: List of project status updates
  18. asana_create_project_status
    • Create a new status update for a project
    • Required input:
      • project_gid (string): The project GID to create the status for
      • text (string): The text content of the status update
    • Optional input:
      • color (string): The color of the status (green, yellow, red)
      • title (string): The title of the status update
      • html_text (string): HTML formatted text for the status update
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Created project status information
  19. asana_delete_project_status
    • Delete a project status update
    • Required input:
      • project_status_gid (string): The project status GID to delete
    • Returns: Deletion confirmation
  20. asana_set_parent_for_task
    • Set the parent of a task and position the subtask within the other subtasks of that parent
    • Required input:
      • task_id (string): The task ID to operate on
      • data (object):
        • parent (string): The new parent of the task, or null for no parent
    • Optional input:
      • insert_after (string): A subtask of the parent to insert the task after, or null to insert at the beginning of the list
      • insert_before (string): A subtask of the parent to insert the task before, or null to insert at the end of the list
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: Updated task information
  21. asana_get_tasks_for_tag
    • Get tasks for a specific tag
    • Required input:
      • tag_gid (string): The tag GID to retrieve tasks for
    • Optional input:
      • opt_fields (string): Comma-separated list of optional fields to include
      • opt_pretty (boolean): Provides the response in a 'pretty' format
      • limit (integer): The number of objects to return per page. The value must be between 1 and 100.
      • offset (string): An offset to the next page returned by the API.
    • Returns: List of tasks for the specified tag
  22. asana_get_tags_for_workspace
    • Get tags in a workspace
    • Required input:
      • workspace_gid (string): Globally unique identifier for the workspace or organization
    • Optional input:
      • limit (integer): Results per page. The number of objects to return per page. The value must be between 1 and 100.
      • offset (string): Offset token. An offset to the next page returned by the API.
      • opt_fields (string): Comma-separated list of optional fields to include
    • Returns: List of tags in the workspace

提示

  1. task-summary

    • 根据任务的备注、自定义字段和评论获取任务摘要和状态更新
    • 必需输入:
      • task_id (字符串): 要获取摘要的任务ID
    • 返回: 用于生成任务摘要的详细提示
  2. task-completeness

    • 分析任务描述是否包含完成所需的所有必要细节
    • 必需输入:
      • task_id (字符串): 要分析的任务ID或URL
    • 返回: 用于分析任务完整性的详细提示
  3. create-task

    • 使用指定的详情创建新任务
    • 必需输入:
      • project_name (字符串): 应该在其中创建任务的Asana项目名称
      • title (字符串): 任务标题
    • 可选输入:
      • notes (字符串): 任务的备注或描述
      • due_date (字符串): 任务截止日期 (YYYY-MM-DD 格式)
    • 返回: 用于创建全面任务的详细提示

资源

  1. 工作区 - asana://workspace/{workspace_gid}

    • 作为资源表示的Asana工作区
    • 每个工作区都作为一个独立的资源展示
    • URI 格式: asana://workspace/{workspace_gid}
    • 返回: 包含工作区详情的JSON对象,包括:
      • name: 工作区名称 (字符串)
      • id: 工作区全局ID (字符串)
      • type: 资源类型 (字符串)
      • is_organization: 工作区是否为组织 (布尔值)
      • email_domains: 与工作区关联的电子邮件域名列表 (字符串数组)
    • MIME 类型: application/json
  2. 项目 - asana://project/{project_gid}

    • 通过GID检索项目详情的模板资源
    • URI 格式: asana://project/{project_gid}
    • 返回: 包含项目详情的JSON对象,包括:
      • name: 项目名称 (字符串)
      • id: 项目全局ID (字符串)
      • type: 资源类型 (字符串)
      • archived: 项目是否已归档 (布尔值)
      • public: 项目是否公开 (布尔值)
      • notes: 项目描述/备注 (字符串)
      • color: 项目颜色 (字符串)
      • default_view: 默认视图类型 (字符串)
      • due_date, due_on, start_on: 项目日期信息 (字符串)
      • workspace: 包含工作区信息的对象
      • team: 包含团队信息的对象
      • sections: 项目中的部分对象数组
      • custom_fields: 项目的自定义字段定义数组
    • MIME 类型: application/json

设置

请注意,原文中的“Setup”部分没有具体内容,因此在翻译中也保持了这种形式。如果这部分有额外的信息需要添加,请告知我。

  1. 创建 Asana 账户

    • 访问 Asana
    • 点击“注册”。
  2. 获取 Asana 访问令牌

    • 您可以从 Asana 开发者控制台生成个人访问令牌。
    • 更多详情请参阅:https://developers.asana.com/docs/personal-access-token
  3. 配置 Claude Desktop
    在您的 claude_desktop_config.json 文件中添加以下内容:

    {
      "mcpServers": {
        "asana": {
          "command": "npx",
          "args": ["-y", "@roychri/mcp-server-asana"],
          "env": {
            "ASANA_ACCESS_TOKEN": "your-asana-access-token"
          }
        }
      }
    }
    

如果您想安装测试版(尚未发布),可以使用:

  • @roychri/mcp-server-asana@beta

您可以通过以下方式找到当前的测试版本(如果有):

  1. https://www.npmjs.com/package/@roychri/mcp-server-asana?activeTab=versions
  2. npm dist-tag ls @roychri/mcp-server-asana

故障排除

如果遇到权限错误:

  1. 确保您的 Asana 计划允许 API 访问。
  2. 确认在 claude_desktop_config.json 中正确设置了访问令牌和配置。

贡献

克隆此仓库并开始开发。

使用 MCP Inspector 本地测试

如果您想测试您的更改,可以这样使用 MCP Inspector:

npm run inspector

这将使客户端暴露在端口 5173 上,服务器暴露在端口 3000 上。

如果这些端口已被其他程序占用,您可以使用:

CLIENT_PORT=5009 SERVER_PORT=3009 npm run inspector

许可证

该 MCP 服务器根据 MIT 许可证授权。这意味着您可以在遵守 MIT 许可证条款和条件的前提下自由使用、修改和分发该软件。更多详细信息,请参见项目仓库中的 LICENSE 文件。

相关 MCP 服务