Asana 的 MCP 服务器
Asana 的这个模型上下文协议服务器实现允许您从 MCP 客户端(例如 Anthropic 的 Claude 桌面应用程序等)与 Asana API 对话。
有关 MCP 的更多详细信息,请参见:
用法
在您选择的AI工具(例如:Claude Desktop)中,询问有关asana任务、项目、工作区和/或评论的问题。提及“asana”一词将增加LLM选择正确工具的几率。
例子:
我们的 Sprint 30 项目中有多少未完成的体式任务?
另一个例子:

Related MCP server: WordPress MCP Server
使用自定义字段
使用自定义字段更新或创建任务时,请使用以下格式:
值格式因字段类型而异:
枚举字段:使用选项的
enum_option.gid(而不是显示名称)文本字段:使用字符串
数字字段:使用数字
日期字段:使用 YYYY-MM-DD 格式的字符串
多枚举字段:使用枚举选项 GID 数组
查找自定义字段 GID
要查找自定义字段的 GID 及其枚举选项:
使用
asana_get_task并设置opt_fields参数来包含自定义字段:asana_get_task({ task_id: "TASK_ID", opt_fields: "custom_fields,custom_fields.enum_options" })在响应中,查找
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中:{ "mcpServers": { "asana": { "command": "npx", "args": ["-y", "@cristip73/mcp-server-asana"], "env": { "ASANA_ACCESS_TOKEN": "your-asana-access-token", "DEFAULT_WORKSPACE_ID": "your-default-workspace-id" } } } }
故障排除
如果遇到权限错误:
确保您的 asana 计划允许 API 访问
确认访问令牌和配置在
claude_desktop_config.json中正确设置。
贡献
克隆此 repo 并开始破解。
使用 MCP Inspector 在本地进行测试
如果您想测试您的更改,您可以像这样使用 MCP 检查器:
这会将客户端公开到端口5173并将服务器公开到端口3000 。
如果这些端口已被其他程序使用,则可以使用:
执照
此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。