使用说明
用于Warp的Asana MCP服务器(Hello World示例)
这个项目是一个MCP(模型上下文协议)服务器的“Hello World”示例,旨在与Asana交互。它是专门用来作为Warp终端的AI功能的“CLI服务器(命令)”的。
服务器公开了一个工具:
get_my_tasks_due_today:从配置的工作区中检索今天到期的Asana任务。
先决条件
- Node.js (v18+推荐,具有全局
Workspace如开发期间使用的v22.x.x是理想的) - npm (附带Node.js)
- 一 姿势 账户
- Asana个人访问令牌(PAT)
- Asana工作区的GID(全局ID)
项目设置
-
克隆存储库(或设置文件): 如果这是一个Git仓库:
git clone <your-repo-url> cd my-asana-mcp-server否则,请确保您拥有
package.json,tsconfig.json,以及src/server.ts文件。 -
安装依赖项:
npm install这将安装
axios,zod,以及MCP SDK(@modelcontextprotocol/sdk).它还将安装开发依赖项,如typescript,ts-node-dev,以及prettier. -
为本地开发配置环境变量(可选): 虽然Warp在运行服务器时会传递环境变量,但对于本地测试或直接执行,您可能需要
.env文件(确保它在你的.gitignore和 未承诺). 创建一个.env项目根目录中的文件:ASANA_PERSONAL_ACCESS_TOKEN=your_asana_personal_access_token_here ASANA_WORKSPACE_GID=your_asana_workspace_gid_here # PORT=8002 # The SDK uses stdio, so PORT for HTTP is not directly used by Warp CLI mode- 体式_个人_访问_令牌:你的Asana PAT。
- ASANA_WORKSPACE_GID:您要从中获取任务的Asana工作区的GID。
-
构建TypeScript代码:
npm run build这将编译以下TypeScript代码
src/JavaScript在dist/.
配置曲速
此服务器设计为由Warp作为“CLI服务器(命令)”运行。
-
打开曲速。
-
首选
Settings > Warp AI > MCP Servers(确切的路径可能因Warp版本而异-请参阅Warp文档或之前的屏幕截图)。 -
点击 “+添加” 添加新的MCP服务器。
-
选择 “CLI服务器(命令)” 作为“运输类型”。
-
填写详细信息:
-
姓名: 描述性名称。,
My Asana Task Server -
运行命令: 这是Warp将执行的启动服务器的命令。用途:
npm run start(此脚本在
package.json跑node ./dist/server.js). 或者,对于具有自动重新加载功能的开发(如果Warp的环境很好地支持它):npm run dev -
CWD参数(可选但推荐): 这 绝对路径 转到此项目的根目录(
my-asana-mcp-server).例如:/Users/yourusername/path/to/my-asana-mcp-server -
从Warp启动开始: 如果您希望服务器使用Warp自动启动,请选中此项。
-
环境变量: 在此处添加以下变量:
ASANA_PERSONAL_ACCESS_TOKEN:your_asana_personal_access_token_hereASANA_WORKSPACE_GID:your_asana_workspace_gid_hereNODE_ENV:production(建议通过以下方式运行npm run start)
-
-
保存 Warp中的配置。
在Warp AI中使用该工具
一旦配置并运行了MCP服务器(由Warp启动或手动启动,如果“启动Warp启动”关闭并且您正在测试),您应该能够通过Warp AI调用该工具。
尝试以下查询:
- “Warp,我今天要完成的Asana任务是什么?”
- “使用Asana工具获取今天的任务。”
然后,Warp AI应该与您的MCP服务器通信,MCP服务器将执行 get_my_tasks_due_today 工具并返回结果。
运作原理
此服务器使用 @modelcontextprotocol/sdk 以实施MCP。
- 它初始化一个
McpServer例子 - 它定义了一个名为
get_my_tasks_due_today使用server.tool().- Zod模式(
GetMyAsanaTasksDueTodayInputSchema和GetMyAsanaTasksDueTodayLogicOutputSchema)用于定义工具处理程序的预期输入和逻辑输出。
- Zod模式(
- 工具的处理函数(
WorkspaceAsanaTasksDueToday)包含以下逻辑:- 获取当前日期。
- 从Asana获取已配置用户和工作区的用户任务列表GID。
- 通过Asana API从用户任务列表中获取今天到期的任务。
- 返回匹配的结构化结果
GetMyAsanaTasksDueTodayLogicOutputSchema.
- 服务器使用以下方式连接
StdioServerTransport,这意味着当作为CLI命令运行时,它通过标准输入/输出与客户端(Warp)通信。 - Warp的MCP客户端发送
initialize请求(由SDK内部处理,可能使用注册的工具来描述功能)。 - 当Warp AI调用工具时,Warp会发送
CallTool请求。SDK将此分派给适当的处理程序,根据Zod模式验证输入/输出,并管理JSON-RPC通信。
故障排除
ERR_REQUIRE_ESM或exports is not defined: 确保您的package.json有"type": "module"和你的tsconfig.json配置用于ES模块输出(例如。,"module": "NodeNext").- 扭曲错误(
Serialization,RequestCancelled):- 检查Node.js服务器的日志(它们将转到
stderr并且应该在Warp的MCP服务器日志中可见,或者如果您手动运行该命令)。 - 确保
CWD parameter将Warp的MCP服务器配置目标添加到正确的项目根目录。 - 确认
ASANA_PERSONAL_ACCESS_TOKEN和ASANA_WORKSPACE_GID在Warp的服务器配置中正确设置了环境变量。 - 最常见的原因是
Serialization错误之后initialize是的结构tools(尤其是他们input_schema和output_schema)提供给SDK的数据与客户端(Warp)的期望不完全匹配。请参阅MCP SDK文档和示例,如gdrive为了获得精确的模式结构。
- 检查Node.js服务器的日志(它们将转到
- Asana API错误: 检查
stderr从服务器记录前缀为的消息[ASANA MCP SERVER]这些将表明Asana API存在问题(例如,无效的PAT、不正确的工作区GID、网络问题)。