ClickUp任务管理服务

一个基于MCP协议的ClickUp API集成服务,提供任务管理功能,允许客户端通过标准化工具与ClickUp任务和列表进行交互。

  • by rubenaguir
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 rubenaguir/clickup-mcp-server

使用说明

点击MCP服务器

模型上下文协议(MCP)服务器,提供与ClickUp API的集成,允许客户端通过标准化的MCP工具与ClickUp任务和列表进行交互。

概述

此服务器实现了MCP协议,将ClickUp功能作为MCP兼容客户端可以调用的工具公开。它支持在ClickUp列表中检索、创建、更新和获取任务的详细信息。

起源

这种MCP服务器实现源于将KiloCode与ClickUp连接的需要,实现了AI驱动的代码助手与ClickUp的任务管理平台之间的无缝集成。

特性

  • 任务管理:获取、创建和更新ClickUp任务
  • 列表集成:使用特定的ClickUp列表
  • 符合MCP标准:使用官方SDK实现完整的MCP协议
  • TypeScript:用TypeScript编写用于类型安全

安装

  1. 克隆或下载此存储库
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    

配置

环境变量

在运行服务器之前设置以下环境变量:

  • CLICKUP_ACCESS_TOKEN:您的ClickUp API访问令牌。您可以通过“应用程序”>“API令牌”下的ClickUp帐户设置生成此内容。

例子:

export CLICKUP_ACCESS_TOKEN=your_clickup_token_here

用法

运行服务器

构建后,运行服务器:

node build/index.js

服务器通过stdio(标准输入/输出)进行通信,使其适合与MCP客户端集成。

客户端集成

MCP客户端连接到此服务器,可以调用可用的工具。服务器使用JSON-RPC 2.0协议进行通信。

客户端配置

要将MCP客户端连接到此服务器,请使用服务器的命令和环境变量配置客户端。

例如,在Claude Desktop中,将以下内容添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "clickup": {
      "command": "node",
      "args": ["path/to/clickup-mcp-server/build/index.js"],
      "env": {
        "CLICKUP_ACCESS_TOKEN": "your_clickup_token_here"
      }
    }
  }
}

替换 path/to/clickup-mcp-server 带有此项目目录的实际路径。

工具: get_tasks

从ClickUp列表中检索任务列表。

参数:

  • list_id (字符串,必填):点击列表ID
  • limit (number,可选):要检索的任务数(最大100,默认50)

请求示例:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_tasks",
    "arguments": {
      "list_id": "987654321",
      "limit": 25
    }
  }
}

示例响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "[{\"id\": \"abc123\", \"name\": \"Sample Task\", \"status\": \"open\", \"assignees\": [], \"due_date\": null}, ...]"
      }
    ]
  }
}

工具: create_task

在ClickUp列表中创建新任务。

参数:

  • list_id (字符串,必填):点击列表ID
  • name (字符串,必填):任务名称
  • description (字符串,可选):任务描述
  • assignees (数字数组,可选):受让人用户ID数组
  • due_date (字符串,可选):到期日期为Unix时间戳,单位为毫秒

请求示例:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_task",
    "arguments": {
      "list_id": "987654321",
      "name": "New Task",
      "description": "Task description",
      "due_date": "1640995200000"
    }
  }
}

工具: update_task

更新现有的ClickUp任务。

参数:

  • task_id (字符串,必填):ClickUp任务ID
  • name (字符串,可选):新任务名称
  • description (字符串,可选):新任务描述
  • status (字符串,可选):新状态
  • assignees (数字数组,可选):新的受让人用户ID数组
  • due_date (字符串,可选):新的到期日期为Unix时间戳,单位为毫秒

请求示例:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "update_task",
    "arguments": {
      "task_id": "abc123",
      "status": "in progress"
    }
  }
}

工具: get_task

检索特定ClickUp任务的详细信息。

参数:

  • task_id (字符串,必填):ClickUp任务ID

请求示例:

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "get_task",
    "arguments": {
      "task_id": "abc123"
    }
  }
}

查找ClickUp ID

  • 列表ID:在ClickUp中,导航到您的列表。URL将类似于 https://app.clickup.com/1234567/v/li/987654321.后面的数字 /li/ 是列表ID。
  • 任务ID:任务URL包含任务ID,也可以从API响应中获取任务ID。
  • 组成员的用户号:使用ClickUp的API或界面查找受让人的用户ID。

错误处理

如果API调用失败,响应将包括 isError: true 带有错误消息的字段:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "ClickUp API error: Invalid list ID"
      }
    ],
    "isError": true
  }
}

测试

提供了一个测试脚本来验证MCP服务器是否正常工作。

  1. 设置您的ClickUp访问令牌:

    export CLICKUP_ACCESS_TOKEN=your_clickup_token_here
    
  2. 使用有效的列表ID运行测试:

    node test-mcp.js <list_id>
    

    替换 <list_id> 具有有效的ClickUp列表ID(例如。, 901110500007).

测试将:

  • 验证服务器是否正确初始化
  • 检查所有工具是否可用
  • 测试 get_tasks 具有提供的列表ID的工具

要对其他工具进行更全面的测试,您可以修改 test-mcp.js 包括致电 create_task, update_task,以及 get_task请注意 create_task 将在ClickUp中创建实际任务,因此请谨慎使用。

发展

在TypeScript的开发模式下运行:

npm run dev

依赖项

  • @modelcontextprotocol/sdk:MCP协议实施
  • axios:用于ClickUp API的HTTP客户端
  • zod:架构验证
  • typescript:TypeScript编译器

许可证

这个项目是开源的。请检查许可证文件以了解详细信息。