remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Provides comprehensive access to Asana's task management API, enabling users to list workspaces, search and manage projects, create/update tasks, work with task dependencies, manage subtasks, add comments, organize sections, handle custom fields, and retrieve project hierarchies.
Asana 的 MCP 服务器
Asana 的这个模型上下文协议服务器实现允许您从 MCP 客户端(例如 Anthropic 的 Claude 桌面应用程序等)与 Asana API 对话。
有关 MCP 的更多详细信息,请参见:
- https://www.anthropic.com/news/model-context-protocol
- https://modelcontextprotocol.io/introduction
- https://github.com/modelcontextprotocol
用法
在您选择的AI工具(例如:Claude Desktop)中,询问有关asana任务、项目、工作区和/或评论的问题。提及“asana”一词将增加LLM选择正确工具的几率。
例子:
我们的 Sprint 30 项目中有多少未完成的体式任务?
另一个例子:
使用自定义字段
使用自定义字段更新或创建任务时,请使用以下格式:
值格式因字段类型而异:
- 枚举字段:使用选项的
enum_option.gid
(而不是显示名称) - 文本字段:使用字符串
- 数字字段:使用数字
- 日期字段:使用 YYYY-MM-DD 格式的字符串
- 多枚举字段:使用枚举选项 GID 数组
查找自定义字段 GID
要查找自定义字段的 GID 及其枚举选项:
- 使用
asana_get_task
并设置opt_fields
参数来包含自定义字段:Copy - 在响应中,查找
custom_fields
数组。每个自定义字段将包含:gid
:自定义字段的唯一标识符name
:自定义字段的显示名称resource_subtype
:自定义字段的类型(文本、数字、枚举等)- 对于枚举字段,检查
enum_options
数组以找到每个选项的 GID
示例:更新枚举自定义字段
工具
asana_list_workspaces
- 列出 Asana 中所有可用的工作区
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:工作区列表
- 注意:如果设置了 DEFAULT_WORKSPACE_ID,则仅返回该工作区,而不是获取所有工作区
asana_search_projects
- 使用名称模式匹配在 Asana 中搜索项目
- 必需输入:
- name_pattern(字符串):用于匹配项目名称的正则表达式模式
- 可选输入:
- 工作区(字符串):要搜索的工作区(如果设置了 DEFAULT_WORKSPACE_ID,则为可选)
- 团队(字符串):用于筛选项目的团队
- 已存档(布尔值):仅返回已存档的项目(默认值:false)
- 限制(数字):每页结果(1-100)
- offset(字符串):分页偏移标记
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:匹配项目列表
- 注意:如果未设置 DEFAULT_WORKSPACE_ID,则必须指定工作区或团队
asana_search_tasks
- 使用高级过滤选项在工作区中搜索任务
- 必需输入:
- 工作区(字符串):要搜索的工作区(如果设置了 DEFAULT_WORKSPACE_ID,则为可选)
- 可选输入:
- 文本(字符串):在任务名称和描述中搜索的文本
- resource_subtype(字符串):按任务子类型过滤(例如里程碑)
- 已完成(布尔值):过滤已完成的任务
- is_subtask(布尔值):过滤子任务
- has_attachment(布尔值):过滤带有附件的任务
- is_blocked(布尔值):过滤具有不完整依赖关系的任务
- is_blocking(布尔值):过滤有依赖项的未完成任务
- 受让人、项目、部分、标签、团队和许多其他高级过滤器
- sort_by(字符串):按到期日期、创建时间、完成时间、喜欢时间、修改时间排序(默认值:修改时间)
- sort_ascending(布尔值):按升序排序(默认值:false)
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- custom_fields(对象):包含自定义字段过滤器的对象
- 返回:匹配的任务列表
asana_get_task
- 获取有关特定任务的详细信息
- 必需输入:
- task_id(字符串):要检索的任务 ID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:详细的任务信息
asana_create_task
- 在项目中创建新任务
- 必需输入:
- project_id(字符串):创建任务的项目
- name(字符串):任务名称
- 可选输入:
- notes(字符串):任务描述
- html_notes(字符串):类似 HTML 格式的任务描述
- due_on(字符串):YYYY-MM-DD 格式的到期日
- 受让人(字符串):受让人(可以是“我”或用户 ID)
- 关注者(字符串数组):要添加为关注者的用户 ID 数组
- parent(字符串):设置此任务的父任务 ID
- 项目(字符串数组):要添加此任务的项目 ID 数组
- resource_subtype(字符串):任务的类型(default_task 或里程碑)
- custom_fields(对象):将自定义字段 GID 字符串映射到其值的对象
- 返回:创建的任务信息
asana_get_task_stories
- 获取特定任务的评论和故事
- 必需输入:
- task_id(字符串):获取故事的任务 ID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:任务故事/评论列表
asana_update_task
- 更新现有任务的详细信息
- 必需输入:
- task_id(字符串):要更新的任务ID
- 可选输入:
- name(字符串):任务的新名称
- notes(字符串):任务的新描述
- due_on(字符串):新的截止日期,格式为 YYYY-MM-DD
- 受让人(字符串):新受让人(可以是“我”或用户 ID)
- 已完成(布尔值):将任务标记为已完成或未完成
- resource_subtype(字符串):任务的类型(default_task 或里程碑)
- custom_fields(对象):将自定义字段 GID 字符串映射到其值的对象
- 返回:更新的任务信息
asana_get_project
- 获取有关特定项目的详细信息
- 必需输入:
- project_id(字符串):要检索的项目 ID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:详细的项目信息
asana_get_project_task_counts
- 获取项目中的任务数量
- 必需输入:
- project_id(字符串):获取任务计数的项目 ID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:任务计数信息
asana_get_project_sections
- 获取项目中的部分
- 必需输入:
- project_id(字符串):获取部分的项目 ID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:项目部分列表
asana_create_task_story
- 对任务创建评论或故事
- 必需输入:
- task_id(字符串):要添加故事的任务 ID
- text(字符串):故事/评论的文本内容
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:创建的故事信息
asana_add_task_dependencies
- 设置任务的依赖关系
- 必需输入:
- task_id(字符串):要添加依赖项的任务 ID
- 依赖项(字符串数组):此任务所依赖的任务 ID 数组
- 返回:更新的任务依赖关系
asana_add_task_dependents
- 设置任务的依赖项(依赖于此任务的任务)
- 必需输入:
- task_id(字符串):要添加依赖项的任务 ID
- Dependants(字符串数组):依赖于此任务的任务 ID 数组
- 返回:更新的任务依赖项
asana_create_subtask
- 为现有任务创建新的子任务
- 必需输入:
- parent_task_id (string): 创建子任务的父任务 ID
- name(字符串):子任务的名称
- 可选输入:
- notes(字符串):子任务的描述
- due_on(字符串):YYYY-MM-DD 格式的到期日
- 受让人(字符串):受让人(可以是“我”或用户 ID)
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:创建的子任务信息
asana_add_followers_to_task
- 为任务添加关注者
- 必需输入:
- task_id(字符串):要添加关注者的任务 ID
- 关注者(字符串数组):要作为关注者添加到任务的用户 ID 数组
- 返回:更新的任务信息
asana_get_multiple_tasks_by_gid
- 通过 GID 获取多个任务的详细信息(最多 25 个任务)
- 必需输入:
- task_ids(字符串数组或逗号分隔的字符串):要检索的任务 GID(最多 25 个)
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:任务详细信息列表
asana_get_project_status
- 获取项目状态更新
- 必需输入:
- project_status_gid (字符串):要检索的项目状态 GID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:项目状态信息
asana_get_project_statuses
- 获取项目的所有状态更新
- 必需输入:
- project_gid (字符串):获取状态的项目 GID
- 可选输入:
- 限制(数字):每页结果(1-100)
- offset(字符串):分页偏移标记
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:项目状态更新列表
asana_create_project_status
- 为项目创建新的状态更新
- 必需输入:
- project_gid (string):要创建状态的项目 GID
- text(字符串):状态更新的文本内容
- 可选输入:
- 颜色(字符串):状态的颜色(绿色、黄色、红色)
- title(字符串):状态更新的标题
- html_text(字符串):状态更新的 HTML 格式文本
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:创建项目状态信息
asana_delete_project_status
- 删除项目状态更新
- 必需输入:
- project_status_gid (字符串):要删除的项目状态 GID
- 返回:删除确认
asana_set_parent_for_task
- 设置任务的父级并将子任务定位在该父级的其他子任务中
- 必需输入:
- task_id(字符串):要操作的任务ID
- parent(字符串):任务的新父级,如果没有父级则为 null
- 可选输入:
- insert_after(字符串):在父任务之后插入子任务,或为 null 以在列表开头插入
- insert_before (string):在父任务之前插入的子任务,或为 null 以在列表末尾插入
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:更新的任务信息
asana_get_tasks_for_tag
- 获取特定标签的任务
- 必需输入:
- tag_gid (字符串):用于检索任务的标签 GID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- opt_pretty(布尔值):以“漂亮”格式提供响应
- limit (整数):每页返回的对象数。该值必须介于 1 到 100 之间。
- offset(字符串):API 返回的下一页的偏移量。
- 返回:指定标签的任务列表
asana_get_tags_for_workspace
- 获取工作区中的标签
- 必需输入:
- workspace_gid(字符串):工作区或组织的全局唯一标识符(如果设置了 DEFAULT_WORKSPACE_ID,则可选)
- 可选输入:
- limit(整数):每页结果数。每页返回的对象数。该值必须介于 1 到 100 之间。
- offset (字符串):偏移量标记。API 返回的下一页的偏移量。
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:工作区中的标签列表
asana_create_section_for_project
- 在项目中创建新部分
- 必需输入:
- project_id(字符串):要创建该部分的项目 ID
- name(字符串):要创建的部分的名称
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:创建的部分信息
asana_add_task_to_section
- 将任务添加到项目中的特定部分
- 必需输入:
- section_id (字符串): 要添加任务的部分 ID
- task_id(字符串):要添加到部分的任务 ID
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:运算结果
asana_create_project
- 在工作区中创建新项目
- 必需输入:
- workspace_id(字符串):在其中创建项目的工作区 ID(如果设置了 DEFAULT_WORKSPACE_ID,则为可选)
- name(字符串):要创建的项目的名称
- team_id(字符串):组织工作区必需 - 与之共享项目的团队 GID
- 可选输入:
- public(布尔值):该项目是否对组织公开(默认值:false)
- archived(布尔值):项目是否已存档(默认值:false)
- 颜色(字符串):项目的颜色(浅绿色、浅橙色、浅蓝色等)
- 布局(字符串):项目的布局(板、列表、时间线或日历)
- default_view(字符串):项目的默认视图(列表、板、日历、时间线或甘特图)
- due_on(字符串):该项目的截止日期(YYYY-MM-DD 格式)
- start_on(字符串):该项目开始工作的日期(YYYY-MM-DD 格式)
- notes(字符串):与项目相关的自由格式的文本信息
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:创建的项目信息
asana_get_teams_for_user
- 获取用户有权访问的团队
- 必需输入:
- user_gid(字符串):用于获取队伍的用户 GID。使用“me”可获取当前用户的队伍。
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:用户有权访问的团队列表
asana_get_teams_for_workspace
- 让团队进入工作区
- 必需输入:
- workspace_gid (字符串):获取团队的工作区 GID(如果设置了 DEFAULT_WORKSPACE_ID,则为可选)
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:工作区中的团队列表
asana_list_workspace_users
- 获取工作区中的用户
- 必需输入:
- workspace_id(字符串):获取用户的工作区 ID(如果设置了 DEFAULT_WORKSPACE_ID,则为可选)
- 可选输入:
- 限制(整数):每页结果数(1-100)
- offset(字符串):分页偏移标记
- opt_fields(字符串):要包含的可选字段的逗号分隔列表(默认为“name,email”)
- auto_paginate (boolean): 是否自动获取所有页面
- max_pages(整数):当 auto_paginate 为 true 时,可获取的最大页面数
- 返回:工作区中的用户列表
asana_get_project_hierarchy
- 获取 Asana 项目的完整层次结构,包括部分、任务和子任务
- 必需输入:
- project_id(字符串):获取层次结构的项目 ID
- 可选输入:
- include_completed_tasks(布尔值):包含已完成的任务(默认值:false)
- include_subtasks(布尔值):为每个任务包含子任务(默认值:true)
- include_completed_subtasks(布尔值):包含已完成的子任务(默认值:遵循include_completed_tasks)
- max_subtask_depth(数字):要检索的子任务的最大深度(默认值:1)
- opt_fields_tasks(字符串):任务的可选字段
- opt_fields_subtasks(字符串):子任务的可选字段
- opt_fields_sections(字符串):部分的可选字段
- opt_fields_project(字符串):项目的可选字段
- 限制(数字):每页最大结果数(1-100)
- 偏移量(字符串):来自前一个响应的分页标记
- auto_paginate (boolean): 是否自动获取所有页面
- max_pages(数字):当 auto_paginate 为 true 时,最多可获取的页面数
- 返回:带有统计数据的分层项目结构
提示
task-summary
- 根据任务的注释、自定义字段和评论获取任务的摘要和状态更新
- 必需输入:
- task_id(字符串):要获取摘要的任务 ID
- 返回:包含生成任务摘要说明的详细提示
资源
没有任何
设置
- 创建 Asana 帐户:
- 访问Asana 。
- 点击“注册”。
- 检索 Asana 访问令牌:
- 您可以从 Asana 开发者控制台生成个人访问令牌。
- 更多详细信息请访问: https://developers.asana.com/docs/personal-access-token
- 可选:获取您的默认工作区 ID :
- 如果您主要使用一个工作区,则可以设置默认工作区 ID。
- 使用 Asana API 列出您的工作区,或者转到 Asana 中的工作区并从 URL 复制 ID。
- 当您设置默认工作区 ID 时,您不需要为每个 API 调用指定工作区。
- 如果没有默认工作区,服务器将调用
asana_list_workspaces
来获取可用工作区列表。
- 配置 Claude Desktop :将以下内容添加到您的
claude_desktop_config.json
中:Copy
故障排除
如果遇到权限错误:
- 确保您的 asana 计划允许 API 访问
- 确认访问令牌和配置在
claude_desktop_config.json
中正确设置。
贡献
克隆此 repo 并开始破解。
使用 MCP Inspector 在本地进行测试
如果您想测试您的更改,您可以像这样使用 MCP 检查器:
这会将客户端公开到端口5173
并将服务器公开到端口3000
。
如果这些端口已被其他程序使用,则可以使用:
执照
此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。
This server cannot be installed
该服务器实现允许 AI 助手与 Asana 的 API 进行交互,使用户能够通过自然语言请求管理任务、项目、工作区和评论。