Integrations
Allows interaction with Asana API to manage tasks, projects, workspaces, and comments. Features include listing workspaces, searching projects and tasks, creating and updating tasks, managing subtasks, adding dependencies, creating project statuses, and more.
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 项目中有多少未完成的体式任务?
另一个例子:
工具
asana_list_workspaces
- 列出 Asana 中所有可用的工作区
- 可选输入:
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:工作区列表
asana_search_projects
- 使用名称模式匹配在 Asana 中搜索项目
- 必需输入:
- 工作区(字符串):要搜索的工作区
- name_pattern(字符串):用于匹配项目名称的正则表达式模式
- 可选输入:
- 已存档(布尔值):仅返回已存档的项目(默认值:false)
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:匹配项目列表
asana_search_tasks
- 使用高级过滤选项在工作区中搜索任务
- 必需输入:
- 工作区(字符串):要搜索的工作区
- 可选输入:
- 文本(字符串):在任务名称和描述中搜索的文本
- 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_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(字符串):工作区或组织的全局唯一标识符
- 可选输入:
- limit(整数):每页结果数。每页返回的对象数。该值必须介于 1 到 100 之间。
- offset (字符串):偏移量标记。API 返回的下一页的偏移量。
- opt_fields(字符串):要包含的可选字段的逗号分隔列表
- 返回:工作区中的标签列表
提示
task-summary
- 根据任务的注释、自定义字段和评论获取任务的摘要和状态更新
- 必需输入:
- task_id(字符串):要获取摘要的任务 ID
- 返回:包含生成任务摘要说明的详细提示
task-completeness
- 分析任务描述是否包含完成任务所需的所有必要细节
- 必需输入:
- task_id(字符串):要分析的任务 ID 或 URL
- 返回:带有分析任务完成度说明的详细提示
create-task
- 创建具有指定详细信息的新任务
- 必需输入:
- project_name(字符串):应创建任务的 Asana 项目的名称
- title(字符串):任务的标题
- 可选输入:
- notes(字符串):任务的注释或描述
- due_date(字符串):任务的截止日期(YYYY-MM-DD 格式)
- 返回:详细的提示,其中包含有关创建综合任务的说明
资源
- 工作区 -
asana://workspace/{workspace_gid}
- Asana 工作区作为资源的表示
- 每个工作区都作为单独的资源公开
- URI 格式:
asana://workspace/{workspace_gid}
- 返回:带有工作区详细信息的 JSON 对象,包括:
name
:工作区名称(字符串)id
:工作区全局 ID(字符串)type
:资源类型(字符串)is_organization
:工作区是否为组织(布尔值)email_domains
:与工作区关联的电子邮件域列表(string[])
- Mime 类型:
application/json
- 项目 -
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
设置
- 创建 Asana 帐户:
- 访问Asana 。
- 点击“注册”。
- 检索 Asana 访问令牌:
- 您可以从 Asana 开发者控制台生成个人访问令牌。
- 更多详细信息请访问: https://developers.asana.com/docs/personal-access-token
- 配置 Claude Desktop :将以下内容添加到您的
claude_desktop_config.json
中:Copy
如果要安装测试版(尚未发布),可以使用:
@roychri/mcp-server-asana@beta
您可以通过以下方式找到当前的测试版本(如果有):
- https://www.npmjs.com/package/@roychri/mcp-server-asana?activeTab=versions
npm dist-tag ls @roychri/mcp-server-asana
故障排除
如果遇到权限错误:
- 确保您的 asana 计划允许 API 访问
- 确认访问令牌和配置在
claude_desktop_config.json
中正确设置。
贡献
克隆此 repo 并开始破解。
使用 MCP Inspector 在本地进行测试
如果您想测试您的更改,您可以像这样使用 MCP 检查器:
这会将客户端公开到端口5173
并将服务器公开到端口3000
。
如果这些端口已被其他程序使用,则可以使用:
执照
此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。
You must be authenticated.
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.
Tools
从 MCP 客户端(例如 Anthropic 的 Claude 桌面应用程序)执行 Asana 操作等等。
Related Resources
Related MCP Servers
- -securityAlicense-qualityA simple MCP server for interacting with OpenAI assistants. This server allows other tools (like Claude Desktop) to create and interact with OpenAI assistants through the Model Context Protocol.Last updated -18PythonMIT License
- AsecurityAlicenseAqualityA tool that helps manage and synchronize MCP server configurations across different AI assistant clients (Cline, Roo Code, WindSurf, Claude), automating the process of retrieving, listing, adding, and removing server configurations from client configuration files.Last updated -661JavaScriptMIT License
- -securityAlicense-qualityAn MCP server that enables Claude to interact with Port.io's AI agent, allowing users to trigger the agent with prompts and receive structured responses including status, output, and action items.Last updated -3PythonMIT License
- -securityAlicense-qualityThis server implementation allows AI assistants to interact with Asana's API, enabling users to manage tasks, projects, workspaces, and comments through natural language requests.Last updated -65TypeScriptMIT License