mcp-server-asana

mcp-server-asana

从 MCP 客户端(例如 Anthropic 的 Claude 桌面应用程序)以及更多其他客户端执行 Asana 操作。

通信
TypeScript
访问服务器

Tools

asana_create_task

Create a new task in a project

asana_get_task_stories

Get comments and stories for a specific task

asana_update_task

Update an existing task's details

asana_get_project

Get detailed information about a specific project

asana_get_project_task_counts

Get the number of tasks in a project

asana_get_project_sections

Get sections in a project

asana_create_task_story

Create a comment or story on a task

asana_add_task_dependencies

Set dependencies for a task

asana_add_task_dependents

Set dependents for a task (tasks that depend on this task)

asana_create_subtask

Create a new subtask for an existing task

asana_get_multiple_tasks_by_gid

Get detailed information about multiple tasks by their GIDs (maximum 25 tasks)

asana_get_project_status

Get a project status update

asana_get_project_statuses

Get all status updates for a project

asana_create_project_status

Create a new status update for a project

asana_delete_project_status

Delete a project status update

asana_set_parent_for_task

Set the parent of a task and position the subtask within the other subtasks of that parent

asana_get_tasks_for_tag

Get tasks for a specific tag

asana_get_tags_for_workspace

Get tags in a workspace

asana_list_workspaces

List all available workspaces in Asana

asana_search_projects

Search for projects in Asana using name pattern matching

asana_search_tasks

Search tasks in a workspace with advanced filtering options

asana_get_task

Get detailed information about a specific task

README

Asana 的 MCP 服务器

npm version

这个 Asana 的模型上下文协议服务器实现允许你从 MCP 客户端(例如 Anthropic 的 Claude 桌面应用程序)以及更多应用与 Asana API 进行交互。

更多关于 MCP 的细节请参考:

  • https://www.anthropic.com/news/model-context-protocol
  • https://modelcontextprotocol.io/introduction
  • https://github.com/modelcontextprotocol

<a href="https://glama.ai/mcp/servers/ln1qzdhwmc"><img width="380" height="200" src="https://glama.ai/mcp/servers/ln1qzdhwmc/badge" alt="mcp-server-asana MCP server" /></a>

用法

在你选择的 AI 工具中(例如:Claude 桌面),询问关于 Asana 任务、项目、工作区和/或评论的问题。提及 "asana" 这个词会增加 LLM 选择正确工具的机会。

示例:

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

另一个例子:

Claude 桌面示例

工具

  1. asana_list_workspaces
    • 列出 Asana 中所有可用的工作区
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:工作区列表
  2. asana_search_projects
    • 使用名称模式匹配在 Asana 中搜索项目
    • 必需输入:
      • workspace (string): 要搜索的工作区
      • name_pattern (string): 用于匹配项目名称的正则表达式模式
    • 可选输入:
      • archived (boolean): 仅返回已归档的项目(默认:false)
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:匹配的项目列表
  3. asana_search_tasks
    • 在工作区中搜索任务,具有高级过滤选项
    • 必需输入:
      • workspace (string): 要搜索的工作区
    • 可选输入:
      • text (string): 要在任务名称和描述中搜索的文本
      • resource_subtype (string): 按任务子类型过滤(例如,里程碑)
      • completed (boolean): 过滤已完成的任务
      • is_subtask (boolean): 过滤子任务
      • has_attachment (boolean): 过滤带有附件的任务
      • is_blocked (boolean): 过滤具有未完成依赖项的任务
      • is_blocking (boolean): 过滤具有依赖项的未完成任务
      • assignee, projects, sections, tags, teams 以及许多其他高级过滤器
      • sort_by (string): 按 due_date, created_at, completed_at, likes, modified_at 排序(默认:modified_at)
      • sort_ascending (boolean): 按升序排序(默认:false)
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
      • custom_fields (object): 包含自定义字段过滤器的对象
    • 返回:匹配的任务列表
  4. asana_get_task
    • 获取有关特定任务的详细信息
    • 必需输入:
      • task_id (string): 要检索的任务 ID
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:详细的任务信息
  5. asana_create_task
    • 在项目中创建一个新任务
    • 必需输入:
      • project_id (string): 要在其中创建任务的项目
      • name (string): 任务的名称
    • 可选输入:
      • notes (string): 任务的描述
      • html_notes (string): HTML 格式的任务描述
      • due_on (string): 截止日期,格式为 YYYY-MM-DD
      • assignee (string): 受让人(可以是 'me' 或用户 ID)
      • followers (array of strings): 要添加为关注者的用户 ID 数组
      • parent (string): 要将此任务设置在其下的父任务 ID
      • projects (array of strings): 要将此任务添加到的项目 ID 数组
      • resource_subtype (string): 任务的类型(default_task 或 milestone)
      • custom_fields (object): 将自定义字段 GID 字符串映射到其值的对象
    • 返回:已创建的任务信息
  6. asana_get_task_stories
    • 获取特定任务的评论和故事
    • 必需输入:
      • task_id (string): 要获取故事的任务 ID
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:任务故事/评论列表
  7. asana_update_task
    • 更新现有任务的详细信息
    • 必需输入:
      • task_id (string): 要更新的任务 ID
    • 可选输入:
      • name (string): 任务的新名称
      • notes (string): 任务的新描述
      • due_on (string): 新的截止日期,格式为 YYYY-MM-DD
      • assignee (string): 新的受让人(可以是 'me' 或用户 ID)
      • completed (boolean): 将任务标记为已完成或未完成
      • resource_subtype (string): 任务的类型(default_task 或 milestone)
      • custom_fields (object): 将自定义字段 GID 字符串映射到其值的对象
    • 返回:已更新的任务信息
  8. asana_get_project
    • 获取有关特定项目的详细信息
    • 必需输入:
      • project_id (string): 要检索的项目 ID
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:详细的项目信息
  9. asana_get_project_task_counts
    • 获取项目中任务的数量
    • 必需输入:
      • project_id (string): 要获取任务计数的项目 ID
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:任务计数信息
  10. asana_get_project_sections
    • 获取项目中的版块
    • 必需输入:
      • project_id (string): 要获取版块的项目 ID
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:项目版块列表
  11. asana_create_task_story
    • 在任务上创建评论或故事
    • 必需输入:
      • task_id (string): 要将故事添加到的任务 ID
      • text (string): 故事/评论的文本内容
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:已创建的故事信息
  12. asana_add_task_dependencies
    • 设置任务的依赖关系
    • 必需输入:
      • task_id (string): 要添加依赖关系的任务 ID
      • dependencies (array of strings): 此任务依赖的任务 ID 数组
    • 返回:已更新的任务依赖关系
  13. asana_add_task_dependents
    • 设置任务的依赖者(依赖于此任务的任务)
    • 必需输入:
      • task_id (string): 要添加依赖者的任务 ID
      • dependents (array of strings): 依赖于此任务的任务 ID 数组
    • 返回:已更新的任务依赖者
  14. asana_create_subtask
    • 为现有任务创建一个新的子任务
    • 必需输入:
      • parent_task_id (string): 要在其下创建子任务的父任务 ID
      • name (string): 子任务的名称
    • 可选输入:
      • notes (string): 子任务的描述
      • due_on (string): 截止日期,格式为 YYYY-MM-DD
      • assignee (string): 受让人(可以是 'me' 或用户 ID)
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:已创建的子任务信息
  15. asana_get_multiple_tasks_by_gid
    • 通过 GID 获取有关多个任务的详细信息(最多 25 个任务)
    • 必需输入:
      • task_ids (array of strings or comma-separated string): 要检索的任务 GID(最多 25 个)
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:详细的任务信息列表
  16. asana_get_project_status
    • 获取项目状态更新
    • 必需输入:
      • project_status_gid (string): 要检索的项目状态 GID
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:项目状态信息
  17. asana_get_project_statuses
    • 获取项目的所有状态更新
    • 必需输入:
      • project_gid (string): 要获取状态的项目 GID
    • 可选输入:
      • limit (number): 每页结果数 (1-100)
      • offset (string): 分页偏移令牌
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:项目状态更新列表
  18. asana_create_project_status
    • 为项目创建一个新的状态更新
    • 必需输入:
      • project_gid (string): 要创建状态的项目 GID
      • text (string): 状态更新的文本内容
    • 可选输入:
      • color (string): 状态的颜色(green, yellow, red)
      • title (string): 状态更新的标题
      • html_text (string): 状态更新的 HTML 格式文本
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:已创建的项目状态信息
  19. asana_delete_project_status
    • 删除项目状态更新
    • 必需输入:
      • project_status_gid (string): 要删除的项目状态 GID
    • 返回:删除确认
  20. asana_set_parent_for_task
    • 设置任务的父任务,并将子任务放置在该父任务的其他子任务中
    • 必需输入:
      • task_id (string): 要操作的任务 ID
      • data (object):
        • parent (string): 任务的新父任务,如果无父任务则为 null
    • 可选输入:
      • insert_after (string): 父任务的一个子任务,用于将任务插入到其后,如果插入到列表的开头则为 null
      • insert_before (string): 父任务的一个子任务,用于将任务插入到其前,如果插入到列表的末尾则为 null
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:已更新的任务信息
  21. asana_get_tasks_for_tag
    • 获取特定标签的任务
    • 必需输入:
      • tag_gid (string): 要检索任务的标签 GID
    • 可选输入:
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
      • opt_pretty (boolean): 以“漂亮”格式提供响应
      • limit (integer): 每页返回的对象数。该值必须介于 1 和 100 之间。
      • offset (string): API 返回的下一页的偏移量。
    • 返回:指定标签的任务列表
  22. asana_get_tags_for_workspace
    • 获取工作区中的标签
    • 必需输入:
      • workspace_gid (string): 工作区或组织的全局唯一标识符
    • 可选输入:
      • limit (integer): 每页结果数。每页返回的对象数。该值必须介于 1 和 100 之间。
      • offset (string): 偏移令牌。API 返回的下一页的偏移量。
      • opt_fields (string): 逗号分隔的可选字段列表,用于包含在返回结果中
    • 返回:工作区中的标签列表

Prompts

  1. task-summary

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

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

    • 创建具有指定细节的新任务
    • 必需输入:
      • project_name (string): 应该在其中创建任务的 Asana 项目的名称
      • title (string): 任务的标题
    • 可选输入:
      • notes (string): 任务的备注或描述
      • due_date (string): 任务的截止日期(YYYY-MM-DD 格式)
    • 返回:包含创建全面任务的详细说明的提示

资源

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

    • Asana 工作区作为资源的表示
    • 每个工作区都作为单独的资源公开
    • URI 格式:asana://workspace/{workspace_gid}
    • 返回:包含工作区详细信息的 JSON 对象,包括:
      • name: 工作区名称 (string)
      • id: 工作区全局 ID (string)
      • type: 资源类型 (string)
      • is_organization: 工作区是否为组织 (boolean)
      • email_domains: 与工作区关联的电子邮件域列表 (string[])
    • Mime Type: application/json
  2. 项目 - asana://project/{project_gid}

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

设置

  1. 创建一个 Asana 账户:

    • 访问 Asana.
    • 点击 "Sign up"。
  2. 检索 Asana 访问令牌:

    • 你可以从 Asana 开发者控制台生成个人访问令牌。
      • https://app.asana.com/0/my-apps
    • 更多细节请参考:https://developers.asana.com/docs/personal-access-token
  3. 配置 Claude 桌面: 将以下内容添加到你的 claude_desktop_config.json

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

如果你想安装 beta 版本(尚未发布),你可以使用:

  • @roychri/mcp-server-asana@beta

你可以通过以下方式找到当前的 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 中正确设置。

贡献

克隆此仓库并开始 hacking。

使用 MCP Inspector 在本地进行测试

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

npm run inspector

这会将客户端暴露到端口 5173,并将服务器暴露到端口 3000

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

CLIENT_PORT=5009 SERVER_PORT=3009 npm run inspector

许可证

此 MCP 服务器在 MIT 许可证下获得许可。 这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。 有关更多详细信息,请参阅项目存储库中的 LICENSE 文件。

推荐服务器

Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Playwright MCP Server

Playwright MCP Server

提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。

精选
本地
TypeScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
contentful-mcp

contentful-mcp

在你的 Contentful Space 中更新、创建、删除内容、内容模型和资源。

精选
TypeScript
serper-search-scrape-mcp-server

serper-search-scrape-mcp-server

这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置。

精选
TypeScript
The Verge News MCP Server

The Verge News MCP Server

提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。

精选
TypeScript
MCP Server Trello

MCP Server Trello

通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。

精选
TypeScript
@kazuph/mcp-gmail-gas

@kazuph/mcp-gmail-gas

用于 Gmail 集成的模型上下文协议 (Model Context Protocol, MCP) 服务器。它允许 Claude Desktop(或任何 MCP 客户端)通过 Google Apps Script 与您的 Gmail 帐户进行交互。

精选
JavaScript
MCP DuckDB Knowledge Graph Memory Server

MCP DuckDB Knowledge Graph Memory Server

一个为 Claude 设计的记忆服务器,它使用 DuckDB 存储和检索知识图谱数据,从而增强了对话的性能和查询能力,并能持久保存用户信息。

精选
TypeScript