Skip to main content
Glama

ClickUp MCP 服务器

由 eBrook Group 开发
版权所有 © 2026 eBrook Group (https://www.ebrook.com.tw)


概述

ClickUp MCP 服务器是一个模型上下文协议(MCP)服务器,提供与 ClickUp 任务管理 API 的无缝集成。它使 AI 助手和自动化工具能够通过标准化接口与 ClickUp 任务交互、分析工作流并管理项目数据。

核心功能

  • 任务管理:检索详细的任务信息、更新状态和添加评论

  • 工作流分析:分析任务进度、依赖关系、时间跟踪和风险因素

  • 自定义字段:更新自定义字段,如 GitHub 分支名称

  • 速率限制:内置速率限制以遵守 ClickUp API 约束(100 次请求/分钟)

  • 类型安全:完整的 TypeScript 实现,具有严格的类型检查

  • 错误处理:全面的错误处理和日志记录

  • 自定义任务 ID:支持数字和自定义任务 ID(例如 ST2IN1-123)


目录


安装

系统要求

  • Node.js:18.0.0 或更高版本

  • TypeScript:5.6.0 或更高版本

  • ClickUp API 令牌:个人 API 令牌(以 pk_ 开头)

安装依赖

npm install

构建项目

npm run build

配置

环境变量

创建 .env 文件或设置以下环境变量:

变量

必需

描述

示例

CLICKUP_TOKEN

ClickUp 个人 API 令牌(格式:pk_xxxxx

pk_12345678_ABCDEFGHIJKLMNOPQRSTUVWXYZ

CLICKUP_TEAM_ID

推荐

团队/工作空间 ID(自定义任务 ID 必需)

123456789

获取 ClickUp API 令牌

  1. 登录 ClickUp

  2. 进入设置应用

  3. API 令牌下点击生成

  4. 复制令牌(以 pk_ 开头)

获取团队 ID

  1. 进入你的 ClickUp 工作空间

  2. 点击设置工作空间

  3. 你的团队 ID 在工作空间设置 URL 或 API 响应中可见

MCP 客户端配置

Claude Desktop 配置

添加到 Claude Desktop 配置文件:

macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "clickup": {
      "command": "node",
      "args": ["/path/to/clickup-mcp/dist/index.js"],
      "env": {
        "CLICKUP_TOKEN": "pk_your_token_here",
        "CLICKUP_TEAM_ID": "your_team_id_here"
      }
    }
  }
}

Cursor 配置

添加到 Cursor MCP 配置:

{
  "mcpServers": {
    "clickup": {
      "command": "node",
      "args": ["/path/to/clickup-mcp/dist/index.js"],
      "env": {
        "CLICKUP_TOKEN": "pk_your_token_here",
        "CLICKUP_TEAM_ID": "your_team_id_here"
      }
    }
  }
}

使用

启动服务器

生产模式

npm run build
npm start

开发模式

npm run dev

基本示例

配置好 MCP 客户端后,你可以使用自然语言与 ClickUp 交互:

  • "获取任务 ST2IN1-123 的详细信息"

  • "分析任务 8675309 的工作流"

  • "将任务 ST2IN1-456 的状态更新为'进行中'"

  • "将任务 123 的 GitHub 分支设置为 'feature/new-feature'"

  • "向任务 ST2IN1-789 添加评论'审核完成'"


可用工具

1. get_task_details(获取任务详情)

获取 ClickUp 任务的全面信息。

参数:

  • task_id(字符串,必需):ClickUp 任务 ID(数字或自定义格式,如 ST2IN1-123

返回:

  • 任务 ID、名称、状态

  • 描述和 URL

  • 创建者和指派人

  • 标签和优先级

  • 截止日期

  • 预估时间和已用时间

  • 自定义字段

  • 依赖项数量

  • 列表、文件夹和空间信息

示例:

{
  "task_id": "ST2IN1-123"
}

2. analyze_workflow(分析工作流)

分析任务的工作流,提供见解和建议。

参数:

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

返回:

  • 进度分析:当前状态和预估进度百分比

  • 时间分析

    • 创建后天数和最后更新天数

    • 预估时间与已用时间

    • 剩余小时数

  • 团队分析:创建者、指派人、关注者

  • 依赖项分析:被阻塞、阻塞中、依赖于

  • 风险因素:逾期、过时、未分配、超预算

  • 建议:可操作的改进建议

示例:

{
  "task_id": "8675309"
}

3. update_status(更新状态)

更新任务的状态。

参数:

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

  • status(字符串,必需):新状态值(例如,"进行中"、"完成"、"已阻塞")

验证:

  • 状态必须是字母数字字符,包含下划线和空格

  • 最多 100 个字符

示例:

{
  "task_id": "ST2IN1-123",
  "status": "in progress"
}

4. update_github_branch(更新 GitHub 分支)

更新任务的 GitHub 分支自定义字段。

参数:

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

  • branch_name(字符串,必需):GitHub 分支名称

验证:

  • 分支名称只能包含字母数字字符、斜杠、连字符和下划线

  • 最多 255 个字符

示例:

{
  "task_id": "ST2IN1-123",
  "branch_name": "feature/add-login-page"
}

**注意:**此工具需要在 ClickUp 工作空间中存在名为"GitHub Branch"的自定义字段。


5. add_comment(添加评论)

向 ClickUp 任务添加评论。

参数:

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

  • comment_text(字符串,必需):评论内容

验证:

  • 评论文本不能为空

  • 最多 10,000 个字符

示例:

{
  "task_id": "ST2IN1-123",
  "comment_text": "已审核并批准。准备部署。"
}

开发

项目结构

clickup-mcp/
├── src/
│   ├── config/
│   │   └── env.ts              # 环境配置
│   ├── services/
│   │   └── clickup.ts          # ClickUp API 服务
│   ├── tools/
│   │   ├── get-task-details.ts # 获取任务详情工具
│   │   ├── analyze-workflow.ts # 工作流分析工具
│   │   ├── update-status.ts    # 更新状态工具
│   │   ├── update-github-branch.ts # 更新分支字段工具
│   │   └── add-comment.ts      # 添加评论工具
│   ├── types/
│   │   └── index.ts            # TypeScript 类型定义
│   ├── utils/
│   │   ├── logger.ts           # 日志工具
│   │   ├── rate-limiter.ts     # 速率限制
│   │   ├── error-sanitizer.ts  # 错误清理
│   │   └── slugify.ts          # 字符串工具
│   ├── server.ts               # MCP 服务器设置
│   └── index.ts                # 入口点
├── dist/                       # 编译后的 JavaScript(自动生成)
├── package.json
├── tsconfig.json
└── README.md

可用脚本

脚本

描述

npm run build

编译 TypeScript 到 JavaScript

npm start

启动服务器(生产模式)

npm run dev

启动服务器并热重载(开发模式)

npm run type-check

运行 TypeScript 类型检查,不生成文件

npm run lint

运行 TypeScript 编译器检查

npm run clean

删除编译文件

代码风格和约定

  • TypeScript:启用严格模式,进行全面的类型检查

  • 模块系统:ES 模块(NodeNext)

  • 编译目标:ES2022

  • 格式化:遵循 TypeScript 最佳实践

  • 错误处理:所有错误都被捕获并正确清理

  • 日志记录:使用提供的日志工具(debuginfoerror

添加新工具

  1. src/tools/ 中创建新文件(例如 my-tool.ts

  2. 实现工具处理函数

  3. src/server.ts 中使用 server.tool() 注册工具

  4. 使用 Zod 定义参数模式

  5. 如需要,在 src/types/index.ts 中更新 TypeScript 类型

示例:

// src/tools/my-tool.ts
import type { ClickUpService } from "../services/clickup.js";
import type { AppConfig } from "../config/env.js";

export async function handleMyTool(
  taskId: string,
  config: AppConfig,
  clickUpService: ClickUpService
) {
  // 实现逻辑
}
// src/server.ts
import { handleMyTool } from "./tools/my-tool.js";

server.tool(
  "my_tool",
  "我的工具描述",
  {
    task_id: z.string().min(1).max(100).describe("任务 ID"),
  },
  async (args) => {
    return await handleMyTool(args.task_id, config, clickUpService);
  }
);

API 参考

ClickUpService 类

与 ClickUp API 交互的主要服务类。

方法

getTask(taskId: string): Promise<ClickUpApiResponse>

通过 ID 获取任务。

updateStatus(taskId: string, status: string): Promise<ClickUpApiResponse>

更新任务的状态。

updateCustomField(taskId: string, fieldId: string, value: string): Promise<ClickUpApiResponse>

更新自定义字段值。

addComment(taskId: string, commentText: string): Promise<ClickUpApiResponse>

向任务添加评论。

findCustomFieldId(taskBody: unknown, fieldName: string): string | null

通过名称查找自定义字段 ID。

formatTaskDetails(task: ClickUpTaskResponse): TaskDetailsSummary

将任务数据格式化为可读摘要。

analyzeTaskWorkflow(task: ClickUpTaskResponse): TaskWorkflowAnalysis

分析任务工作流并提供见解。

速率限制

该服务实现速率限制以遵守 ClickUp 的 API 约束:

  • 限制:每分钟 100 次请求

  • 实现:令牌桶算法

  • 错误代码:超出限制时返回 RATE_LIMIT_001


故障排除

常见问题

1. "CLICKUP_TOKEN 未配置"

解决方案:确保在环境配置中正确设置了 ClickUp API 令牌。

# 检查令牌格式(应以 pk_ 开头)
echo $CLICKUP_TOKEN

2. "自定义任务 ID 需要团队 ID"

解决方案:使用自定义任务 ID(例如 ST2IN1-123)时,设置 CLICKUP_TEAM_ID 环境变量。

3. 找不到任务(404 错误)

可能原因

  • 任务 ID 不正确

  • 任务已归档或删除

  • 自定义任务 ID 缺少团队 ID

  • 权限不足

解决方案

  • 验证任务 ID 是否正确

  • 检查 API 令牌是否有权访问该任务

  • 确保为自定义 ID 设置了 CLICKUP_TEAM_ID

4. 超出速率限制(429 错误)

解决方案:服务器实现了自动速率限制。稍等片刻再试。限制每分钟重置一次。

5. 找不到"GitHub Branch"字段

解决方案:在 ClickUp 工作空间中创建名为"GitHub Branch"的自定义字段:

  1. 进入列表/文件夹/空间设置

  2. 点击自定义字段添加字段

  3. 创建一个名为"GitHub Branch"的文本字段

调试日志

调试消息记录到 stderr。查看详细日志:

# 在开发模式下查看日志
npm run dev 2>&1 | tee debug.log

# 过滤特定的调试消息
npm run dev 2>&1 | grep "\[DEBUG\]"

技术细节

依赖项

  • @modelcontextprotocol/sdk:MCP 协议实现

  • zod:模式验证和类型安全

  • TypeScript:类型安全开发

  • Node.js Fetch API:HTTP 请求(内置)

TypeScript 配置

  • 目标:ES2022

  • 模块:NodeNext(ES 模块)

  • 严格模式:启用所有严格检查

  • 源映射:启用调试

  • 声明文件:为库使用生成

安全考虑

  • API 令牌永远不会记录或在错误消息中暴露

  • 所有用户输入都使用 Zod 模式验证

  • 错误消息经过清理以防止信息泄漏

  • 速率限制防止 API 滥用


贡献

开发工作流

  1. Fork 仓库

  2. 创建功能分支(git checkout -b feature/my-feature

  3. 进行更改

  4. 运行类型检查:npm run type-check

  5. 构建项目:npm run build

  6. 测试更改

  7. 使用描述性消息提交

  8. 推送到你的 fork

  9. 打开 Pull Request

提交信息格式

遵循格式:ST2IN1-[票号] 简短描述

示例:ST2IN1-12345 添加任务模板支持


许可证

MIT License

版权所有 © 2026 eBrook Group (https://www.ebrook.com.tw)


支持

如有问题、疑问或功能请求,请联系:

eBrook Group
网站:https://www.ebrook.com.tw


更新日志

版本 3.1.0

  • 首次公开发布

  • 5 个核心工具:get_task_details、analyze_workflow、update_status、update_github_branch、add_comment

  • 速率限制实现

  • 自定义任务 ID 支持

  • 全面的错误处理和日志记录

  • 完整的 TypeScript 实现,具有严格的类型检查

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tangbodie/clickup-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server