@taazkareem/clickup-mcp-server 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,13 +1,18 @@
1
1
  <img src="https://clickup.com/assets/brand/logo-v3-clickup-dark.svg" alt="ClickUp" height="40" style="vertical-align: middle; margin-top: -4px;">
2
2
 
3
3
  # MCP Server
4
+
5
+ [![GitHub Stars](https://img.shields.io/github/stars/TaazKareem/clickup-mcp-server?style=flat&logo=github)](https://github.com/TaazKareem/clickup-mcp-server/stargazers)
6
+ [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/TaazKareem/clickup-mcp-server/graphs/commit-activity)
7
+
4
8
  A Model Context Protocol (MCP) server for integrating ClickUp tasks with AI applications. This server allows AI agents to interact with ClickUp tasks, spaces, lists, and folders through a standardized protocol.
5
9
 
6
- > 🚧 **Status Update:** -Added attach_task_file tool with support for local files, URLs, and base64 data, and create_task_comment tool
7
10
 
8
- <a href="https://glama.ai/mcp/servers/iwjvs2zy63">
9
- <img width="380" height="200" src="https://glama.ai/mcp/servers/iwjvs2zy63/badge" alt="ClickUp Server MCP server" />
10
- </a>
11
+ > 🚧 **Status Update:** -v0.5.1 beta release with new Attach Task Files tool, Create Task Comments tool, Get Task Comments tool, and Custom ID support across all tools.
12
+
13
+
14
+
15
+
11
16
 
12
17
  ## Setup
13
18
 
@@ -26,6 +31,10 @@ The server is hosted on Smithery. There, you can preview the available tools or
26
31
 
27
32
  ## NPX Installation
28
33
 
34
+ [![NPM Version](https://img.shields.io/npm/v/@taazkareem/clickup-mcp-server.svg?style=flat&logo=npm)](https://www.npmjs.com/package/@taazkareem/clickup-mcp-server)
35
+ [![Dependency Status](https://img.shields.io/librariesio/github/TaazKareem/clickup-mcp-server)](https://libraries.io/github/TaazKareem/clickup-mcp-server)
36
+ [![NPM Downloads](https://img.shields.io/npm/dm/@taazkareem/clickup-mcp-server.svg?style=flat&logo=npm)](https://npmcharts.com/compare/@taazkareem/clickup-mcp-server?minimal=true)
37
+
29
38
  Add this entry to your client's MCP settings JSON file:
30
39
 
31
40
  ```json
@@ -129,6 +138,10 @@ If you find this project useful, please consider supporting:
129
138
 
130
139
  [![Sponsor TaazKareem](https://img.shields.io/badge/Sponsor-TaazKareem-orange?logo=github)](https://github.com/sponsors/TaazKareem)
131
140
 
141
+ <a href="https://buymeacoffee.com/taazkareem">
142
+ <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" width="200" alt="Buy Me A Coffee">
143
+ </a>
144
+
132
145
  ## Acknowledgements
133
146
 
134
147
  Special thanks to [ClickUp](https://clickup.com) for their excellent API and services that make this integration possible.
@@ -139,6 +152,8 @@ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md)
139
152
 
140
153
  ## License
141
154
 
155
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
156
+
142
157
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
143
158
 
144
159
  ## Disclaimer
package/build/server.js CHANGED
@@ -15,7 +15,7 @@ const { workspace } = clickUpServices;
15
15
  */
16
16
  export const server = new Server({
17
17
  name: "clickup-mcp-server",
18
- version: "0.5.0",
18
+ version: "0.5.1",
19
19
  }, {
20
20
  capabilities: {
21
21
  tools: {},
@@ -6,14 +6,17 @@
6
6
  /**
7
7
  * Get a timestamp for a relative time
8
8
  *
9
+ * @param minutes Minutes from now
9
10
  * @param hours Hours from now
10
11
  * @param days Days from now
11
12
  * @param weeks Weeks from now
12
13
  * @param months Months from now
13
14
  * @returns Timestamp in milliseconds
14
15
  */
15
- export function getRelativeTimestamp(hours = 0, days = 0, weeks = 0, months = 0) {
16
+ export function getRelativeTimestamp(minutes = 0, hours = 0, days = 0, weeks = 0, months = 0) {
16
17
  const now = new Date();
18
+ if (minutes)
19
+ now.setMinutes(now.getMinutes() + minutes);
17
20
  if (hours)
18
21
  now.setHours(now.getHours() + hours);
19
22
  if (days)
@@ -44,7 +47,7 @@ export function parseDueDate(dateString) {
44
47
  return today.getTime();
45
48
  }
46
49
  // Handle relative dates with specific times
47
- const relativeTimeRegex = /(?:(\d+)\s*(days?|weeks?|months?)\s*from\s*now|tomorrow|next\s+(?:week|month))\s*(?:at\s+(\d+)(?::(\d+))?\s*(am|pm)?)?/i;
50
+ const relativeTimeRegex = /(?:(\d+)\s*(minutes?|days?|weeks?|months?)\s*from\s*now|tomorrow|next\s+(?:week|month))\s*(?:at\s+(\d+)(?::(\d+))?\s*(am|pm)?)?/i;
48
51
  const match = lowerDate.match(relativeTimeRegex);
49
52
  if (match) {
50
53
  const date = new Date();
@@ -52,7 +55,10 @@ export function parseDueDate(dateString) {
52
55
  // Calculate the future date
53
56
  if (amount && unit) {
54
57
  const value = parseInt(amount);
55
- if (unit.startsWith('day')) {
58
+ if (unit.startsWith('minute')) {
59
+ date.setMinutes(date.getMinutes() + value);
60
+ }
61
+ else if (unit.startsWith('day')) {
56
62
  date.setDate(date.getDate() + value);
57
63
  }
58
64
  else if (unit.startsWith('week')) {
@@ -89,25 +95,30 @@ export function parseDueDate(dateString) {
89
95
  return date.getTime();
90
96
  }
91
97
  // Handle hours from now
98
+ const minutesRegex = /(\d+)\s*minutes?\s*from\s*now/i;
92
99
  const hoursRegex = /(\d+)\s*hours?\s*from\s*now/i;
93
100
  const daysRegex = /(\d+)\s*days?\s*from\s*now/i;
94
101
  const weeksRegex = /(\d+)\s*weeks?\s*from\s*now/i;
95
102
  const monthsRegex = /(\d+)\s*months?\s*from\s*now/i;
103
+ if (minutesRegex.test(lowerDate)) {
104
+ const minutes = parseInt(lowerDate.match(minutesRegex)[1]);
105
+ return getRelativeTimestamp(minutes);
106
+ }
96
107
  if (hoursRegex.test(lowerDate)) {
97
108
  const hours = parseInt(lowerDate.match(hoursRegex)[1]);
98
- return getRelativeTimestamp(hours);
109
+ return getRelativeTimestamp(0, hours);
99
110
  }
100
111
  if (daysRegex.test(lowerDate)) {
101
112
  const days = parseInt(lowerDate.match(daysRegex)[1]);
102
- return getRelativeTimestamp(0, days);
113
+ return getRelativeTimestamp(0, 0, days);
103
114
  }
104
115
  if (weeksRegex.test(lowerDate)) {
105
116
  const weeks = parseInt(lowerDate.match(weeksRegex)[1]);
106
- return getRelativeTimestamp(0, 0, weeks);
117
+ return getRelativeTimestamp(0, 0, 0, weeks);
107
118
  }
108
119
  if (monthsRegex.test(lowerDate)) {
109
120
  const months = parseInt(lowerDate.match(monthsRegex)[1]);
110
- return getRelativeTimestamp(0, 0, 0, months);
121
+ return getRelativeTimestamp(0, 0, 0, 0, months);
111
122
  }
112
123
  // Try to parse as a date string
113
124
  const date = new Date(dateString);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taazkareem/clickup-mcp-server",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "ClickUp MCP Server - Integrate ClickUp tasks with AI through Model Context Protocol",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
@@ -55,9 +55,9 @@
55
55
  },
56
56
  "homepage": "https://github.com/taazkareem/clickup-mcp-server#readme",
57
57
  "dependencies": {
58
- "@modelcontextprotocol/sdk": "0.6.0",
59
- "axios": "1.6.7",
60
- "dotenv": "16.4.1"
58
+ "@modelcontextprotocol/sdk": "^0.6.0",
59
+ "axios": "^1.6.7",
60
+ "dotenv": "^16.4.1"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/node": "^20.11.16",