@taazkareem/clickup-mcp-server 0.12.5 → 0.12.7
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 +156 -267
- package/build/config.js +1 -1
- package/build/index.js +1 -1
- package/build/license.js +1 -1
- package/build/logger.js +1 -1
- package/build/middleware/security.js +1 -1
- package/build/server.js +1 -1
- package/build/services/clickup/base.js +1 -1
- package/build/services/clickup/bulk.js +1 -1
- package/build/services/clickup/chat.js +1 -1
- package/build/services/clickup/document.js +1 -1
- package/build/services/clickup/folder.js +1 -1
- package/build/services/clickup/index.js +1 -1
- package/build/services/clickup/list.js +1 -1
- package/build/services/clickup/tag.js +1 -1
- package/build/services/clickup/task/index.js +1 -1
- package/build/services/clickup/task/task-attachments.js +1 -1
- package/build/services/clickup/task/task-comments.js +1 -1
- package/build/services/clickup/task/task-core.js +1 -1
- package/build/services/clickup/task/task-custom-fields.js +1 -1
- package/build/services/clickup/task/task-relationships.js +1 -1
- package/build/services/clickup/task/task-search.js +1 -1
- package/build/services/clickup/task/task-service.js +1 -1
- package/build/services/clickup/task/task-tags.js +1 -1
- package/build/services/clickup/time.js +1 -1
- package/build/services/clickup/types.js +1 -1
- package/build/services/clickup/workspace.js +1 -1
- package/build/services/shared.js +1 -1
- package/build/sse_server.js +1 -1
- package/build/tools/chat/handlers.js +1 -1
- package/build/tools/chat/index.js +1 -1
- package/build/tools/chat/utils.js +1 -1
- package/build/tools/documents.js +1 -1
- package/build/tools/feedback.js +1 -0
- package/build/tools/folder.js +1 -1
- package/build/tools/index.js +1 -1
- package/build/tools/list.js +1 -1
- package/build/tools/member.js +1 -1
- package/build/tools/tag.js +1 -1
- package/build/tools/task/attachments.js +1 -1
- package/build/tools/task/bulk-operations.js +1 -1
- package/build/tools/task/handlers.js +1 -1
- package/build/tools/task/index.js +1 -1
- package/build/tools/task/main.js +1 -1
- package/build/tools/task/relationships.js +1 -1
- package/build/tools/task/single-operations.js +1 -1
- package/build/tools/task/time-tracking.js +1 -1
- package/build/tools/task/utilities.js +1 -1
- package/build/tools/task/workspace-operations.js +1 -1
- package/build/tools/utils.js +1 -1
- package/build/tools/workspace.js +1 -1
- package/build/utils/color-processor.js +1 -1
- package/build/utils/concurrency-utils.js +1 -1
- package/build/utils/date-utils.js +1 -1
- package/build/utils/resolver-utils.js +1 -1
- package/build/utils/sponsor-service.js +1 -1
- package/build/utils/token-utils.js +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,28 +1,45 @@
|
|
|
1
|
-
<img src="https://github.com/taazkareem/clickup-mcp-server/blob/b2d0c447be1e7cac474019da68005b87b4f929f9/assets/images/Gemini_Generated_Image_zii3a3zii3a3zii3.png" alt="ClickUp MCP Server" width="100%">
|
|
2
|
-
|
|
3
1
|
# ClickUp MCP Server
|
|
4
|
-
|
|
5
|
-
**A Model Context Protocol (MCP) server for integrating ClickUp with AI applications like Claude Desktop, Gemini CLI, n8n, Cursor IDE, and custom AI agents.** This server enables seamless interaction with ClickUp tasks, spaces, lists, documents, files, folders, and chat channels through a standardized protocol, using natural language.
|
|
6
|
-
|
|
7
|
-
> **🔒 Premium Version** - Choice of [Subscription](https://buy.polar.sh/polar_cl_3xQojQLgzQXKCLzsxc49YfL6z8hzSBBqh9ivy1qZdwW) or [Lifetime](https://buy.polar.sh/polar_cl_whcMn4lbBFwZUoWU5p2qDSn0fs23ACC6IwK3e15hXV5) Access
|
|
2
|
+

|
|
8
3
|
|
|
9
4
|
[](https://www.npmjs.com/package/@taazkareem/clickup-mcp-server)
|
|
10
5
|
[](https://www.npmjs.com/package/@taazkareem/clickup-mcp-server)
|
|
11
6
|
[](LICENSE)
|
|
12
7
|
[](https://github.com/TaazKareem/clickup-mcp-server/graphs/commit-activity)
|
|
13
8
|
|
|
9
|
+
**Connect ClickUp to AI Agents including Claude Desktop, Cursor IDE, n8n, and Gemini CLI.**
|
|
10
|
+
*A high-performance Model Context Protocol (MCP) server for managing tasks, tags, lists, folders, files, docs, time, and chat using natural language.*
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
> **Status Update:** v0.12.7: Fixed a license validation race condition which resolved issues for CLI-based one-shot integrations (mcporter, etc.)
|
|
13
|
+
|
|
14
|
+
⭐️ **Proven Performance:** 460+ Stars (from previous public repo) & thousands of weekly NPM downloads. The industry-standard ClickUp integration for AI.
|
|
15
|
+
<hr>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<a name="premium-access"></a>
|
|
19
|
+
## 💎 Premium Access
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
**Stop building ClickUp integrations from scratch.** This high-performance MCP server is maintained daily to ensure compatibility with the latest AI agents and ClickUp API changes. A license grants **full access to all 50+ tools, priority bug fixes, and enterprise-grade feature development.**
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
| [**Monthly Subscription ($9)**](https://buy.polar.sh/polar_cl_3xQojQLgzQXKCLzsxc49YfL6z8hzSBBqh9ivy1qZdwW) | [**Lifetime Access ($59)**](https://buy.polar.sh/polar_cl_whcMn4lbBFwZUoWU5p2qDSn0fs23ACC6IwK3e15hXV5) |
|
|
24
|
+
| :--- | :--- |
|
|
25
|
+
| • Perfect for ongoing projects<br>• Cancel anytime | • One-time payment<br>• Best value for agencies |
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
**⚡️ Instant Delivery:** Your license key is delivered immediately via **Polar.sh**. Total setup time is under 2 minutes.
|
|
24
28
|
|
|
25
|
-
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
<a name="quick-start"></a>
|
|
34
|
+
## 🚀 Quick Start
|
|
35
|
+
|
|
36
|
+
### 1. Prerequisites
|
|
37
|
+
* **Node.js v18.0.0+**
|
|
38
|
+
* **ClickUp Credentials:** API Key & Team ID
|
|
39
|
+
* **License Key:** [Purchase here](https://buy.polar.sh/polar_cl_whcMn4lbBFwZUoWU5p2qDSn0fs23ACC6IwK3e15hXV5)
|
|
40
|
+
|
|
41
|
+
### 2. Local Configuration
|
|
42
|
+
Add the following to your `claude_desktop_config.json` or similar MCP settings file to run locally via `npx`:
|
|
26
43
|
|
|
27
44
|
```json
|
|
28
45
|
{
|
|
@@ -31,298 +48,170 @@ Purchase a license at:
|
|
|
31
48
|
"command": "npx",
|
|
32
49
|
"args": [
|
|
33
50
|
"-y",
|
|
34
|
-
"@taazkareem/clickup-mcp-server@latest"
|
|
51
|
+
"--package", "@taazkareem/clickup-mcp-server@latest",
|
|
52
|
+
"clickup-mcp-server"
|
|
35
53
|
],
|
|
36
54
|
"env": {
|
|
37
|
-
"CLICKUP_MCP_LICENSE_KEY": "your-license-key-here",
|
|
38
55
|
"CLICKUP_API_KEY": "your-clickup-api-key",
|
|
39
56
|
"CLICKUP_TEAM_ID": "your-team-id",
|
|
40
|
-
"
|
|
57
|
+
"CLICKUP_MCP_LICENSE_KEY": "your-license-key-here"
|
|
41
58
|
}
|
|
42
59
|
}
|
|
43
60
|
}
|
|
44
61
|
}
|
|
45
62
|
```
|
|
46
63
|
|
|
47
|
-
### 3.
|
|
48
|
-
|
|
49
|
-
That's it! The server will validate your license key and start automatically.
|
|
64
|
+
### 3. Hosted / Remote Usage
|
|
65
|
+
-or- For zero-setup usage without local Node.js requirements, use the hosted version:
|
|
50
66
|
|
|
51
|
-
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"mcpServers": {
|
|
70
|
+
"ClickUp": {
|
|
71
|
+
"serverUrl": "https://clickup-mcp.taazkareem.com/mcp",
|
|
72
|
+
"headers": {
|
|
73
|
+
"X-ClickUp-Key": "your-clickup-api-key",
|
|
74
|
+
"X-ClickUp-Team-Id": "your-team-id",
|
|
75
|
+
"X-License-Key": "your-license-key-here"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
52
81
|
|
|
53
|
-
|
|
82
|
+
### 4. Restart
|
|
83
|
+
Restart your MCP Host (e.g., Cursor IDE). The server will validate your license and start automatically.
|
|
54
84
|
|
|
55
|
-
|
|
56
|
-
- Valid license key from [Polar.sh](https://buy.polar.sh/polar_cl_3xQojQLgzQXKCLzsxc49YfL6z8hzSBBqh9ivy1qZdwW)
|
|
57
|
-
- ClickUp API key and Team ID
|
|
85
|
+
---
|
|
58
86
|
|
|
59
|
-
##
|
|
87
|
+
## ✨ Features
|
|
60
88
|
|
|
61
|
-
|
|
89
|
+
Integrate ClickUp seamlessly with Natural Language for customized workflows
|
|
62
90
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
91
|
+
* **📝 Task Management:** Create, update, move, duplicate, and link tasks. Supports bulk operations and natural language dates.
|
|
92
|
+
* **⏱️ Time Tracking:** Start/stop timers, view entries, and manage billable time.
|
|
93
|
+
* **📄 Docs & Knowledge:** Create, read, and append to ClickUp Documents. Full workspace hierarchy traversal.
|
|
94
|
+
* **💬 Chat & Collaboration:** Send messages to channels, read history, and manage comments with Markdown support.
|
|
95
|
+
* **🌳 Workspace Control:** Navigate spaces, folders, and lists. Manage tags and member assignments.
|
|
66
96
|
|
|
67
|
-
|
|
68
|
-
- This is the **first UUID** in your ClickUp workspace URL when viewing it in your browser
|
|
69
|
-
- **Example**: In `https://app.clickup.com/[TEAM_ID]/v/l/[PROJECT_ID]`, use the `[TEAM_ID]` portion
|
|
70
|
-
- **Note**: ClickUp's API documentation refers to this as `team_id`, but it actually represents your Workspace ID (this naming is due to legacy API design)
|
|
71
|
-
- For reference: In ClickUp's API, `team_id` = Workspace ID, and `group_id` = Team (group of users)
|
|
97
|
+
---
|
|
72
98
|
|
|
99
|
+
## ⚙️ Configuration
|
|
73
100
|
|
|
74
|
-
###
|
|
101
|
+
### Finding Your Credentials
|
|
75
102
|
|
|
76
|
-
|
|
103
|
+
1. **ClickUp API Key:**
|
|
104
|
+
* Navigate to [ClickUp Settings → Apps](https://app.clickup.com/settings/apps).
|
|
105
|
+
* Generate a token under "API Token".
|
|
106
|
+
2. **ClickUp Team ID:**
|
|
107
|
+
* Open ClickUp in your browser.
|
|
108
|
+
* Look at the URL: `https://app.clickup.com/[TEAM_ID]/v/...`
|
|
109
|
+
* The first number is your Team ID.
|
|
110
|
+
* *Note: ClickUp API calls this `team_id`, but it actually represents your Workspace ID.*
|
|
77
111
|
|
|
78
|
-
|
|
79
|
-
- If `ENABLED_TOOLS` is specified, only those tools will be available (takes precedence over `DISABLED_TOOLS`)
|
|
80
|
-
- If only `DISABLED_TOOLS` is specified, all tools except those listed will be available
|
|
81
|
-
- If neither is specified, all tools are available (default behavior)
|
|
112
|
+
### Advanced Configuration
|
|
82
113
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
--env CLICKUP_MCP_LICENSE_KEY=your-license-key-here \
|
|
88
|
-
--env CLICKUP_API_KEY=your-api-key \
|
|
89
|
-
--env CLICKUP_TEAM_ID=your-team-id \
|
|
90
|
-
--env ENABLED_TOOLS=create_task,get_task,get_workspace_hierarchy
|
|
114
|
+
#### Filter Available Tools
|
|
115
|
+
Reduce context noise by limiting available tools in your `env`:
|
|
116
|
+
```json
|
|
117
|
+
"ENABLED_TOOLS": "create_task,get_task,update_task,get_workspace_hierarchy"
|
|
91
118
|
```
|
|
92
119
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
120
|
+
#### Enable Document Support (Beta)
|
|
121
|
+
Enable creation and management of ClickUp Docs:
|
|
122
|
+
```json
|
|
123
|
+
"DOCUMENT_SUPPORT": "true"
|
|
124
|
+
```
|
|
98
125
|
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
<a name="available-tools"></a>
|
|
129
|
+
## 🛠️ Available Tools
|
|
130
|
+
|
|
131
|
+
<details>
|
|
132
|
+
<summary><strong>👇 Click to view all 50+ available tools</strong></summary>
|
|
133
|
+
|
|
134
|
+
| Category | Tool | Description |
|
|
135
|
+
| :--- | :--- | :--- |
|
|
136
|
+
| **Workspace** | `get_workspace_hierarchy` | Get workspace structure |
|
|
137
|
+
| | `get_workspace_members` | Get all workspace members |
|
|
138
|
+
| | `find_member_by_name` | Find member by name or email |
|
|
139
|
+
| **Tasks** | `create_task` | Create a task |
|
|
140
|
+
| | `create_bulk_tasks` | Create multiple tasks |
|
|
141
|
+
| | `update_task` | Modify task |
|
|
142
|
+
| | `update_bulk_tasks` | Update multiple tasks |
|
|
143
|
+
| | `get_tasks` | Get tasks from list |
|
|
144
|
+
| | `get_task` | Get single task details |
|
|
145
|
+
| | `get_workspace_tasks` | Get tasks with filtering |
|
|
146
|
+
| | `delete_task` | Remove task |
|
|
147
|
+
| | `move_task` | Move task to new list |
|
|
148
|
+
| | `duplicate_task` | Copy task |
|
|
149
|
+
| | `add_task_link` | Link two tasks together |
|
|
150
|
+
| **Comments** | `get_task_comments` | Get comments on a task |
|
|
151
|
+
| | `create_task_comment` | Add a comment to a task |
|
|
152
|
+
| | `attach_task_file` | Attach file to a task |
|
|
153
|
+
| **Lists/Folders** | `create_list` | Create list in space/folder |
|
|
154
|
+
| | `create_folder` | Create folder |
|
|
155
|
+
| | `get_folder` | Get folder details |
|
|
156
|
+
| | `update_folder` | Update folder properties |
|
|
157
|
+
| **Tags** | `get_space_tags` | Get space tags |
|
|
158
|
+
| | `create_space_tag` | Create tag |
|
|
159
|
+
| | `add_tag_to_task` | Add tag to task |
|
|
160
|
+
| **Time** | `start_time_tracking` | Start time tracking |
|
|
161
|
+
| | `stop_time_tracking` | Stop current time tracking |
|
|
162
|
+
| | `get_task_time_entries` | Get time entries for a task |
|
|
163
|
+
| **Docs** | `create_document` | Create a document |
|
|
164
|
+
| | `get_document` | Get a document |
|
|
165
|
+
| | `list_documents` | List documents |
|
|
166
|
+
| **Chat** | `create_chat_channel` | Create a chat channel |
|
|
167
|
+
| | `create_chat_message` | Send a message to a channel |
|
|
168
|
+
| | `get_chat_messages` | Get message history |
|
|
169
|
+
|
|
170
|
+
*See [full documentation](docs/user-guide.md) for parameters and advanced usage.*
|
|
171
|
+
</details>
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 🔌 Compatibility
|
|
176
|
+
|
|
177
|
+
This server supports **STDIO, HTTP Streamable, and SSE (Server-Sent Events)** for legacy integrations.
|
|
178
|
+
|
|
179
|
+
**Configuration:**
|
|
99
180
|
```json
|
|
100
181
|
{
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
"args": [
|
|
105
|
-
"-y",
|
|
106
|
-
"@taazkareem/clickup-mcp-server@latest"
|
|
107
|
-
],
|
|
108
|
-
"env": {
|
|
109
|
-
"CLICKUP_MCP_LICENSE_KEY": "your-license-key-here",
|
|
110
|
-
"CLICKUP_API_KEY": "your-api-key",
|
|
111
|
-
"CLICKUP_TEAM_ID": "your-team-id",
|
|
112
|
-
"ENABLE_SSE": "true",
|
|
113
|
-
"PORT": "3231"
|
|
114
|
-
}
|
|
115
|
-
}
|
|
182
|
+
"env": {
|
|
183
|
+
"ENABLE_SSE": "true",
|
|
184
|
+
"PORT": "3231"
|
|
116
185
|
}
|
|
117
186
|
}
|
|
118
187
|
```
|
|
119
188
|
|
|
120
|
-
**
|
|
121
|
-
|
|
122
|
-
|
|
189
|
+
**n8n Setup:**
|
|
190
|
+
1. Set `ENABLE_SSE` to "true" and run the server.
|
|
191
|
+
2. In n8n, add an **"MCP AI Tool"** node.
|
|
192
|
+
3. Set Transport to `SSE` and URL to `http://localhost:3231/sse`.
|
|
123
193
|
|
|
124
|
-
|
|
194
|
+
---
|
|
125
195
|
|
|
126
|
-
|
|
127
|
-
npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_MCP_LICENSE_KEY=your-license-key-here --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id --env ENABLE_SSE=true --env PORT=3231 --env HOST=0.0.0.0
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Available configuration options:
|
|
131
|
-
|
|
132
|
-
| Option | Description | Default |
|
|
133
|
-
| ------ | ----------- | ------- |
|
|
134
|
-
|
|
135
|
-
| `ENABLED_TOOLS` | Comma-separated list of tools to enable (takes precedence) | All tools |
|
|
136
|
-
| `DISABLED_TOOLS` | Comma-separated list of tools to disable | None |
|
|
137
|
-
| `ENABLE_SSE` | Enable the HTTP/SSE transport | `false` |
|
|
138
|
-
| `PORT` | Port for the HTTP server | `3231` |
|
|
139
|
-
| `HOST` | Binding address (use 0.0.0.0 for Docker/external) | `127.0.0.1` |
|
|
140
|
-
| `ENABLE_STDIO` | Enable the STDIO transport | `true` |
|
|
141
|
-
| `ENABLE_SECURITY_FEATURES` | Enable security headers and logging | `false` |
|
|
142
|
-
| `ENABLE_HTTPS` | Enable HTTPS/TLS encryption | `false` |
|
|
143
|
-
| `ENABLE_ORIGIN_VALIDATION` | Validate Origin header against whitelist | `false` |
|
|
144
|
-
| `ENABLE_RATE_LIMIT` | Enable rate limiting protection | `false` |
|
|
145
|
-
|
|
146
|
-
### 🔒 Security Features
|
|
147
|
-
|
|
148
|
-
The server includes optional security enhancements for production deployments. All security features are **opt-in** and **disabled by default** to maintain backwards compatibility.
|
|
149
|
-
|
|
150
|
-
**Quick security setup:**
|
|
151
|
-
```bash
|
|
152
|
-
# Generate SSL certificates for HTTPS
|
|
153
|
-
./scripts/generate-ssl-cert.sh
|
|
154
|
-
|
|
155
|
-
# Start with full security
|
|
156
|
-
ENABLE_SECURITY_FEATURES=true \
|
|
157
|
-
ENABLE_HTTPS=true \
|
|
158
|
-
ENABLE_ORIGIN_VALIDATION=true \
|
|
159
|
-
ENABLE_RATE_LIMIT=true \
|
|
160
|
-
SSL_KEY_PATH=./ssl/server.key \
|
|
161
|
-
SSL_CERT_PATH=./ssl/server.crt \
|
|
162
|
-
npx @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-key --env CLICKUP_TEAM_ID=your-team --env ENABLE_SSE=true
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
**HTTPS Endpoints:**
|
|
166
|
-
- **Primary**: `https://127.0.0.1:3443/mcp` (Streamable HTTPS)
|
|
167
|
-
- **Legacy**: `https://127.0.0.1:3443/sse` (SSE HTTPS for backwards compatibility)
|
|
168
|
-
- **Health**: `https://127.0.0.1:3443/health` (Health check)
|
|
169
|
-
|
|
170
|
-
For detailed security configuration, see [Security Features Documentation](docs/security-features.md).
|
|
171
|
-
|
|
172
|
-
#### n8n Integration
|
|
196
|
+
## ❓ FAQ
|
|
173
197
|
|
|
174
|
-
|
|
198
|
+
**Why isn't this free anymore?**
|
|
199
|
+
Building reliable MCP integrations requires significant maintenance. Moving to a paid model allows us to support this as a product rather than a hobby, ensuring compatibility with API changes.
|
|
175
200
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
3. Configure the node with:
|
|
179
|
-
- Transport: SSE
|
|
180
|
-
- Server URL: `http://localhost:3231` (or your server address)
|
|
181
|
-
- Tools: Select the ClickUp tools you want to use
|
|
201
|
+
**I have an old version. Will it stop working?**
|
|
202
|
+
Existing local clones will continue to work, but you will not receive updates, bug fixes, or support without a license.
|
|
182
203
|
|
|
183
|
-
|
|
204
|
+
**How do I get support?**
|
|
205
|
+
Premium users get priority support. Please [open an issue](https://github.com/TaazKareem/clickup-mcp-server/issues) in this repository.
|
|
184
206
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
# Start the server with SSE enabled
|
|
189
|
-
ENABLE_SSE=true PORT=3231 npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id
|
|
190
|
-
|
|
191
|
-
# In another terminal, run the example client
|
|
192
|
-
cd examples
|
|
193
|
-
npm install
|
|
194
|
-
npm run sse-client
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
## Features
|
|
198
|
-
|
|
199
|
-
| 📝 Task Management | 🏷️ Tag Management |
|
|
200
|
-
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
201
|
-
| • Create, update, and delete tasks<br>• Move and duplicate tasks anywhere<br>• Support for single and bulk operations<br>• Set start/due dates with natural language<br>• Create and manage subtasks<br>• Add comments and attachments<br>• Link tasks and manage dependencies | • Create, update, and delete space tags<br>• Add and remove tags from tasks<br>• Use natural language color commands<br>• Automatic contrasting foreground colors<br>• View all space tags<br>• Tag-based task organization across workspace |
|
|
202
|
-
| ⏱️ **Time Tracking** | 🌳 **Workspace Organization** |
|
|
203
|
-
| • View time entries for tasks<br>• Start/stop time tracking on tasks<br>• Add manual time entries<br>• Delete time entries<br>• View currently running timer<br>• Track billable and non-billable time | • Navigate spaces, folders, and lists<br>• Create and manage folders<br>• Organize lists within spaces<br>• Create lists in folders<br>• View workspace hierarchy<br>• Efficient path navigation |
|
|
204
|
-
| 📄 **Document Management** | 👥 **Member Management** |
|
|
205
|
-
| • Document Listing through all workspace<br>• Document Page listing<br>• Document Page Details<br>• Document Creation<br>• Document page update (append & prepend) | • Find workspace members by name or email<br>• Resolve assignees for tasks<br>• View member details and permissions<br>• Assign tasks to users during creation and updates<br>• Support for user IDs, emails, or usernames<br>• Team-wide user management |
|
|
206
|
-
| 💬 **Chat Management** | ⚡ **Integration Features** |
|
|
207
|
-
| • Create and manage chat channels<br>• Send messages with markdown support<br>• Retrieve message history<br>• Smart channel name resolution<br>• Cross-workspace communication support | • Global name or ID-based lookups<br>• Case-insensitive matching<br>• Markdown formatting support<br>• Built-in rate limiting<br>• Error handling and validation<br>• Comprehensive API coverage |
|
|
208
|
-
| 🏗️ **Architecture & Performance** | |
|
|
209
|
-
| • **70% codebase reduction** for improved performance<br>• **Unified architecture** across all transport types<br>• **Zero code duplication**<br>• **HTTP Streamable transport** (MCP Inspector compatible)<br>• **Legacy SSE support** for backwards compatibility | |
|
|
210
|
-
|
|
211
|
-
## Available Tools (50 Total)
|
|
212
|
-
|
|
213
|
-
| Tool | Description | Required Parameters |
|
|
214
|
-
| ------------------------------------------------------------------ | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
215
|
-
| [get_workspace_hierarchy](docs/user-guide.md#workspace-navigation) | Get workspace structure | None |
|
|
216
|
-
| [create_task](docs/user-guide.md#task-management) | Create a task | `name`, (`listId`/`listName`) |
|
|
217
|
-
| [create_bulk_tasks](docs/user-guide.md#task-management) | Create multiple tasks | `tasks[]` |
|
|
218
|
-
| [update_task](docs/user-guide.md#task-management) | Modify task | `taskId`/`taskName` |
|
|
219
|
-
| [update_bulk_tasks](docs/user-guide.md#task-management) | Update multiple tasks | `tasks[]` with IDs or names |
|
|
220
|
-
| [get_tasks](docs/user-guide.md#task-management) | Get tasks from list | `listId`/`listName` |
|
|
221
|
-
| [get_task](docs/user-guide.md#task-management) | Get single task details | `taskId`/`taskName` (with smart disambiguation), `include_markdown_description` |
|
|
222
|
-
| [get_workspace_tasks](docs/user-guide.md#task-management) | Get tasks with filtering | At least one filter (tags, list_ids, space_ids, etc.) |
|
|
223
|
-
| [get_task_comments](docs/user-guide.md#task-management) | Get comments on a task | `taskId`/`taskName`, `include_replies` |
|
|
224
|
-
| [create_task_comment](docs/user-guide.md#task-management) | Add a comment to a task | `commentText`, (`taskId`/(`taskName`+`listName`)) |
|
|
225
|
-
| [attach_task_file](docs/user-guide.md#task-management) | Attach file to a task | `taskId`/`taskName`, (`file_data` or `file_url`) |
|
|
226
|
-
| [delete_task](docs/user-guide.md#task-management) | Remove task | `taskId`/`taskName` |
|
|
227
|
-
| [delete_bulk_tasks](docs/user-guide.md#task-management) | Remove multiple tasks | `tasks[]` with IDs or names |
|
|
228
|
-
| [move_task](docs/user-guide.md#task-management) | Move task | `taskId`/`taskName`, `listId`/`listName` |
|
|
229
|
-
| [move_bulk_tasks](docs/user-guide.md#task-management) | Move multiple tasks | `tasks[]` with IDs or names, target list |
|
|
230
|
-
| [duplicate_task](docs/user-guide.md#task-management) | Copy task | `taskId`/`taskName`, `listId`/`listName` |
|
|
231
|
-
| [add_task_link](docs/user-guide.md#task-management) | Link two tasks together | `taskId`/`taskName`, `targetTaskId`/`targetTaskName` |
|
|
232
|
-
| [get_task_links](docs/user-guide.md#task-management) | Get all links for a task | `taskId`/`taskName` |
|
|
233
|
-
| [delete_task_link](docs/user-guide.md#task-management) | Remove a task link | `taskId`/`taskName`, `linkId`/`targetTaskName` |
|
|
234
|
-
| [create_list](docs/user-guide.md#list-management) | Create list in space | `name`, `spaceId`/`spaceName` |
|
|
235
|
-
| [create_folder](docs/user-guide.md#folder-management) | Create folder | `name`, `spaceId`/`spaceName` |
|
|
236
|
-
| [create_list_in_folder](docs/user-guide.md#list-management) | Create list in folder | `name`, `folderId`/`folderName` |
|
|
237
|
-
| [get_folder](docs/user-guide.md#folder-management) | Get folder details | `folderId`/`folderName` |
|
|
238
|
-
| [update_folder](docs/user-guide.md#folder-management) | Update folder properties | `folderId`/`folderName` |
|
|
239
|
-
| [delete_folder](docs/user-guide.md#folder-management) | Delete folder | `folderId`/`folderName` |
|
|
240
|
-
| [get_list](docs/user-guide.md#list-management) | Get list details | `listId`/`listName` |
|
|
241
|
-
| [update_list](docs/user-guide.md#list-management) | Update list properties | `listId`/`listName` |
|
|
242
|
-
| [delete_list](docs/user-guide.md#list-management) | Delete list | `listId`/`listName` |
|
|
243
|
-
| [get_space_tags](docs/user-guide.md#tag-management) | Get space tags | `spaceId`/`spaceName` |
|
|
244
|
-
| [create_space_tag](docs/user-guide.md#tag-management) | Create tag | `tagName`, `spaceId`/`spaceName` |
|
|
245
|
-
| [update_space_tag](docs/user-guide.md#tag-management) | Update tag | `tagName`, `spaceId`/`spaceName` |
|
|
246
|
-
| [delete_space_tag](docs/user-guide.md#tag-management) | Delete tag | `tagName`, `spaceId`/`spaceName` |
|
|
247
|
-
| [add_tag_to_task](docs/user-guide.md#tag-management) | Add tag to task | `tagName`, `taskId`/(`taskName`+`listName`) |
|
|
248
|
-
| [remove_tag_from_task](docs/user-guide.md#tag-management) | Remove tag from task | `tagName`, `taskId`/(`taskName`+`listName`) |
|
|
249
|
-
| [get_task_time_entries](docs/user-guide.md#time-tracking) | Get time entries for a task | `taskId`/`taskName` |
|
|
250
|
-
| [start_time_tracking](docs/user-guide.md#time-tracking) | Start time tracking on a task | `taskId`/`taskName` |
|
|
251
|
-
| [stop_time_tracking](docs/user-guide.md#time-tracking) | Stop current time tracking | None |
|
|
252
|
-
| [add_time_entry](docs/user-guide.md#time-tracking) | Add manual time entry to a task | `taskId`/`taskName`, `start`, `duration` |
|
|
253
|
-
| [delete_time_entry](docs/user-guide.md#time-tracking) | Delete a time entry | `timeEntryId` |
|
|
254
|
-
| [get_current_time_entry](docs/user-guide.md#time-tracking) | Get currently running timer | None |
|
|
255
|
-
| [get_workspace_members](docs/user-guide.md#member-management) | Get all workspace members | None |
|
|
256
|
-
| [find_member_by_name](docs/user-guide.md#member-management) | Find member by name or email | `nameOrEmail` |
|
|
257
|
-
| [resolve_assignees](docs/user-guide.md#member-management) | Resolve member names to IDs | `assignees[]` |
|
|
258
|
-
| [create_document](docs/user-guide.md#document-management) | Create a document | `workspaceId`, `name`, `parentId`/`parentType`, `visibility`, `create_pages` |
|
|
259
|
-
| [get_document](docs/user-guide.md#document-management) | Get a document | `workspaceId`/`documentId`/`documentName` |
|
|
260
|
-
| [list_documents](docs/user-guide.md#document-management) | List documents | `workspaceId`, `documentId`/`creator`/`deleted`/`archived`/`parent_id`/`parent_type`/`limit`/`next_cursor` |
|
|
261
|
-
| [list_document_pages](docs/user-guide.md#document-management) | List document pages | `documentId`/`documentName` |
|
|
262
|
-
| [get_document_pages](docs/user-guide.md#document-management) | Get document pages | `documentId`/`documentName`, `pageIds` |
|
|
263
|
-
| [create_document_pages](docs/user-guide.md#document-management) | Create a document page | `workspaceId`/`documentId`/`documentName`, `parent_page_id`/`name`/`sub_title`,`content`/`content_format` |
|
|
264
|
-
| [update_document_page](docs/user-guide.md#document-management) | Update a document page | `workspaceId`/`documentId`/`documentName`, `name`/`sub_title`,`content`/`content_edit_mode`/`content_format` |
|
|
265
|
-
| [create_chat_channel](docs/user-guide.md#chat-management) | Create a chat channel | `name` |
|
|
266
|
-
| [get_chat_channels](docs/user-guide.md#chat-management) | List all chat channels | None |
|
|
267
|
-
| [create_chat_message](docs/user-guide.md#chat-management) | Send a message to a channel | `comment_text`, (`channel_id`/`channel_name`) |
|
|
268
|
-
| [get_chat_messages](docs/user-guide.md#chat-management) | Get message history | `channel_id`/`channel_name` |
|
|
269
|
-
|
|
270
|
-
See [full documentation](docs/user-guide.md) for optional parameters and advanced usage.
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
## Prompts
|
|
274
|
-
|
|
275
|
-
Not yet implemented and not supported by all client apps. Request a feature for a Prompt implementation that would be most beneficial for your workflow (without it being too specific). Examples:
|
|
276
|
-
|
|
277
|
-
| Prompt | Purpose | Features |
|
|
278
|
-
| -------------------------------------------------- | ------------------------- | ----------------------------------------- |
|
|
279
|
-
| [summarize_tasks](docs/user-guide.md#prompts) | Task overview | Status summary, priorities, relationships |
|
|
280
|
-
| [analyze_priorities](docs/user-guide.md#prompts) | Priority optimization | Distribution analysis, sequencing |
|
|
281
|
-
| [generate_description](docs/user-guide.md#prompts) | Task description creation | Objectives, criteria, dependencies |
|
|
282
|
-
|
|
283
|
-
## Error Handling
|
|
284
|
-
|
|
285
|
-
The server provides clear error messages for:
|
|
286
|
-
|
|
287
|
-
- Missing required parameters
|
|
288
|
-
- Invalid IDs or names
|
|
289
|
-
- Items not found
|
|
290
|
-
- Permission issues
|
|
291
|
-
- API errors
|
|
292
|
-
- Rate limiting
|
|
293
|
-
|
|
294
|
-
The `LOG_LEVEL` environment variable can be specified to control the verbosity of server logs. Valid values are `trace`, `debug`, `info`, `warn`, and `error` (default).
|
|
295
|
-
This can be also be specified on the command line as, e.g. `--env LOG_LEVEL=info`.
|
|
296
|
-
|
|
297
|
-
## Premium Support
|
|
298
|
-
|
|
299
|
-
As a premium user, you have access to:
|
|
300
|
-
|
|
301
|
-
- **Priority Support**: Open issues directly in this private repository
|
|
302
|
-
- **Feature Requests**: Request new features and capabilities
|
|
303
|
-
- **Automatic Updates**: Pull the latest features and bug fixes
|
|
304
|
-
- **Direct Communication**: Get help from the maintainer
|
|
305
|
-
|
|
306
|
-
To get support, [open an issue](https://github.com/TaazKareem/clickup-mcp-server/issues) in this repository.
|
|
307
|
-
|
|
308
|
-
## Acknowledgements
|
|
309
|
-
|
|
310
|
-
Special thanks to [ClickUp](https://clickup.com) for their excellent API and services that make this integration possible.
|
|
311
|
-
|
|
312
|
-
Thank you to all supporters who make continued development possible! 🙏
|
|
313
|
-
|
|
314
|
-
## License
|
|
315
|
-
|
|
316
|
-
[](LICENSE)
|
|
207
|
+
---
|
|
317
208
|
|
|
318
|
-
|
|
209
|
+
## ⚖️ Disclaimer
|
|
319
210
|
|
|
320
|
-
|
|
211
|
+
Originally developed as open source and refined during a consultancy with ClickUp, this project is now independently maintained.
|
|
321
212
|
|
|
322
|
-
|
|
213
|
+
This software makes use of third-party APIs and may reference trademarks or brands owned by third parties. The use of such APIs or references does not imply any affiliation with or endorsement by the respective companies. All trademarks and brand names are the property of their respective owners. This project is an independent work and is not officially associated with or sponsored by any third-party company mentioned.
|
|
323
214
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
brand names are the property of their respective owners. This project is an independent
|
|
328
|
-
work and is not officially associated with or sponsored by any third-party company mentioned.
|
|
215
|
+
<div align="center">
|
|
216
|
+
<sub>Created by <a href="https://github.com/taazkareem">taazkareem</a></sub>
|
|
217
|
+
</div>
|
package/build/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function a0_0xca6e(){const _0x299e28=['mtq5mdu4m0XQtuDQCa','CxvPCMu','CePUveC','zw5HyMW','ruXWC0C','v0fstG','vf9tsvO','rv9trum','rurFt1i','vvjjvfK','r0Lox1y','Fdr8mG','zMfSC2u','qu1Fsuq','lY9SB2m','x1DjtKq','mZa2ow1oBxjwrW','t0Xt','zvntrq','zvn0zgK','veLptG','qv9qqvq','tevex0m','Ag9ZDa','Bg9Ntgu','ywXOB3m','se9tva','ls1LBNy','vvbFveu','vvbqt1i','u1nmx0S','mZG0z1HprNzj','DhjPBq','ChbVCNq','twLZC2K','uKfurv8','AM9PBG','rv9ivfq','zxjdyxm','vvbFqva','t01nqu4','ndK3mtC4ouLAv0DkCq','Ahr0Chm','DdOZmJm','B2XZ','u1nmx0m','BuLK','Dg9vCha','ru5bqKW','zw52','revcvuC','q0Xjq0S','y2fSAg8','mhWXFdm','zMLSDgu','t1ju','Dg9mB3C','C3q6mZq','mZy0muHov2THva','oI8Vmti','reLtqui','AuDyAxq','lJe6mZq','mZiZmq','ru5ux00','rv9dt1i','su5gtW','BwfW','rvzfta','Dxbuzwe','AxjVBM0','Cg9YDa','oePeuNnJDW','vvjfuW','rv9tu0u','BgvUz3q','t1DFtvm','teLnsvq','zwruB28','x1bpuLq','mZq0mW','DxbbCgK','tevex1q','rurFve8','x01bwa','rvjux1a','mtq3otC2ohHbsuniDW','ntaXntK2oxbfy2zhra','sfruufm','zgLZywi','zg9JDw0','t09muW','vfjbq0u','rvLFuee','BgvKvg8','ru5ux1m','y2XPy2S','otbjzNLxv3u','wMTcsNe','C2XPy2u','rvfvrvm','BgvZoIa','lY8XmJC','quXmt1C','qMf6vui','re9dvu0','t0rvteu','oI8VBg8','vNHuze0','rv9tveq','yxjNDG','BMCGCMu','lJaUmq','mZeZmhLQsMfyBG','mtbTyG','tufyx1i','sv9lrvK','C3bSAxq','rv9sqvq','lJaUmc4','mJq0otvluMPVAfi','lJe6mZi','s2v5','qvri','u1nfx1a','te9hx0W','C3nLug8','rvjst1i','Ahr0CdO','x0zfqvq','DdOZmda','rgTXr1a'];a0_0xca6e=function(){return _0x299e28;};return a0_0xca6e();}function a0_0x19f5(_0x56c194,_0x4c4283){_0x56c194=_0x56c194-0x14e;const _0xca6e=a0_0xca6e();let _0x19f576=_0xca6e[_0x56c194];if(a0_0x19f5['Nreicm']===undefined){var _0x1cc477=function(_0x451c52){const _0x1721cd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x972016='',_0x3972b5='';for(let _0x5b192b=0x0,_0x48747f,_0x3be496,_0x46b7a9=0x0;_0x3be496=_0x451c52['charAt'](_0x46b7a9++);~_0x3be496&&(_0x48747f=_0x5b192b%0x4?_0x48747f*0x40+_0x3be496:_0x3be496,_0x5b192b++%0x4)?_0x972016+=String['fromCharCode'](0xff&_0x48747f>>(-0x2*_0x5b192b&0x6)):0x0){_0x3be496=_0x1721cd['indexOf'](_0x3be496);}for(let _0x3cef00=0x0,_0x540145=_0x972016['length'];_0x3cef00<_0x540145;_0x3cef00++){_0x3972b5+='%'+('00'+_0x972016['charCodeAt'](_0x3cef00)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3972b5);};a0_0x19f5['xyWGWj']=_0x1cc477,a0_0x19f5['jFckmA']={},a0_0x19f5['Nreicm']=!![];}const _0x2dded4=_0xca6e[0x0],_0x25f4a8=_0x56c194+_0x2dded4,_0x5f0701=a0_0x19f5['jFckmA'][_0x25f4a8];return!_0x5f0701?(_0x19f576=a0_0x19f5['xyWGWj'](_0x19f576),a0_0x19f5['jFckmA'][_0x25f4a8]=_0x19f576):_0x19f576=_0x5f0701,_0x19f576;}const a0_0x1c108d=a0_0x19f5;(function(_0xd91c6a,_0x2c9b6b){const _0x4e8ffc=a0_0x19f5,_0x437f00=_0xd91c6a();while(!![]){try{const _0x27de50=parseInt(_0x4e8ffc(0x1c0))/0x1*(-parseInt(_0x4e8ffc(0x18d))/0x2)+parseInt(_0x4e8ffc(0x1b0))/0x3+parseInt(_0x4e8ffc(0x182))/0x4+parseInt(_0x4e8ffc(0x1a4))/0x5*(parseInt(_0x4e8ffc(0x1cf))/0x6)+parseInt(_0x4e8ffc(0x183))/0x7*(-parseInt(_0x4e8ffc(0x174))/0x8)+parseInt(_0x4e8ffc(0x155))/0x9+parseInt(_0x4e8ffc(0x19d))/0xa*(-parseInt(_0x4e8ffc(0x166))/0xb);if(_0x27de50===_0x2c9b6b)break;else _0x437f00['push'](_0x437f00['shift']());}catch(_0x16281d){_0x437f00['push'](_0x437f00['shift']());}}}(a0_0xca6e,0xbd155));const args=process[a0_0x1c108d(0x19a)][a0_0x1c108d(0x18f)](0x2),envArgs={};for(let i=0x0;i<args[a0_0x1c108d(0x177)+'h'];i++){if(args[i]===a0_0x1c108d(0x1cb)&&i+0x1<args[a0_0x1c108d(0x177)+'h']){const [key,value]=args[i+0x1][a0_0x1c108d(0x1a1)]('=');if(key===a0_0x1c108d(0x15f)+a0_0x1c108d(0x153)+a0_0x1c108d(0x1a0))envArgs[a0_0x1c108d(0x18c)+a0_0x1c108d(0x17d)+a0_0x1c108d(0x1a6)]=value;if(key==='CLICK'+a0_0x1c108d(0x1cc)+a0_0x1c108d(0x1bd))envArgs[a0_0x1c108d(0x18c)+a0_0x1c108d(0x171)+a0_0x1c108d(0x15a)]=value;if(key===a0_0x1c108d(0x195)+a0_0x1c108d(0x18b)+a0_0x1c108d(0x1cd)+'T')envArgs[a0_0x1c108d(0x186)+'entSu'+a0_0x1c108d(0x1d1)]=value;if(key===a0_0x1c108d(0x1a9)+a0_0x1c108d(0x170))envArgs[a0_0x1c108d(0x1c8)+'vel']=value;if(key===a0_0x1c108d(0x168)+a0_0x1c108d(0x17e)+a0_0x1c108d(0x187))envArgs['disab'+a0_0x1c108d(0x18a)+a0_0x1c108d(0x158)]=value;if(key==='ENABL'+'ED_TO'+a0_0x1c108d(0x1c1))envArgs[a0_0x1c108d(0x1b3)+a0_0x1c108d(0x17a)+'ls']=value;if(key===a0_0x1c108d(0x15c)+a0_0x1c108d(0x176))envArgs[a0_0x1c108d(0x1b3)+'eSSE']=value;if(key==='SSE_P'+a0_0x1c108d(0x163))envArgs[a0_0x1c108d(0x1aa)+'rt']=value;if(key===a0_0x1c108d(0x15c)+'E_STD'+'IO')envArgs['enabl'+a0_0x1c108d(0x1c3)+'o']=value;if(key==='PORT')envArgs[a0_0x1c108d(0x173)]=value;if(key===a0_0x1c108d(0x1ca))envArgs[a0_0x1c108d(0x1c7)]=value;i++;}}export var LogLevel;(function(_0x54e711){const _0x3bada1=a0_0x1c108d,_0x44ce9f={'BazUB':_0x3bada1(0x15e),'iGXit':_0x3bada1(0x1ab),'VxTdM':_0x3bada1(0x16e),'ELpsG':_0x3bada1(0x1b5)},_0x45636b=(_0x3bada1(0x161)+_0x3bada1(0x1bb))[_0x3bada1(0x1a1)]('|');let _0x448b45=0x0;while(!![]){switch(_0x45636b[_0x448b45++]){case'0':_0x54e711[_0x54e711[_0x3bada1(0x188)]=0x0]=_0x3bada1(0x188);continue;case'1':_0x54e711[_0x54e711[_0x44ce9f[_0x3bada1(0x194)]]=0x1]=_0x3bada1(0x15e);continue;case'2':_0x54e711[_0x54e711[_0x3bada1(0x1ab)]=0x4]=_0x44ce9f[_0x3bada1(0x169)];continue;case'3':_0x54e711[_0x54e711[_0x3bada1(0x16e)]=0x2]=_0x44ce9f[_0x3bada1(0x198)];continue;case'4':_0x54e711[_0x54e711[_0x44ce9f[_0x3bada1(0x1b4)]]=0x3]='WARN';continue;}break;}}(LogLevel||(LogLevel={})));const parseLogLevel=_0x39664c=>{const _0x43dac1=a0_0x1c108d,_0x486d22={'DkqGP':_0x43dac1(0x188),'ZkBJq':_0x43dac1(0x15e),'IwMNo':'WARN'};if(!_0x39664c)return LogLevel[_0x43dac1(0x1ab)];switch(_0x39664c[_0x43dac1(0x15b)+_0x43dac1(0x152)+'e']()){case _0x486d22[_0x43dac1(0x1af)]:return LogLevel[_0x43dac1(0x188)];case _0x486d22[_0x43dac1(0x18e)]:return LogLevel['DEBUG'];case _0x43dac1(0x16e):return LogLevel[_0x43dac1(0x16e)];case _0x486d22['IwMNo']:return LogLevel[_0x43dac1(0x1b5)];case _0x43dac1(0x1ab):return LogLevel[_0x43dac1(0x1ab)];default:return LogLevel[_0x43dac1(0x1ab)];}},parseBoolean=(_0x1ba5bd,_0x4b6cc8)=>{const _0x31cb5e=a0_0x1c108d;if(_0x1ba5bd===undefined)return _0x4b6cc8;return _0x1ba5bd[_0x31cb5e(0x164)+'erCas'+'e']()==='true';},parseInteger=(_0x6b2f72,_0x3d360e)=>{const _0xee6654=a0_0x1c108d,_0xaca154={'pJnTG':function(_0x5b7972,_0x21845a){return _0x5b7972(_0x21845a);}};if(_0x6b2f72===undefined)return _0x3d360e;const _0x22df20=parseInt(_0x6b2f72,0xa);return _0xaca154[_0xee6654(0x1b2)](isNaN,_0x22df20)?_0x3d360e:_0x22df20;},parseOrigins=(_0x4b1588,_0x132fca)=>{const _0x8f4254=a0_0x1c108d;if(!_0x4b1588)return _0x132fca;return _0x4b1588[_0x8f4254(0x1a1)](',')[_0x8f4254(0x16f)](_0x38c066=>_0x38c066[_0x8f4254(0x1d0)]())[_0x8f4254(0x162)+'r'](_0x507422=>_0x507422!=='');},configuration={'clickupApiKey':envArgs['click'+'upApi'+a0_0x1c108d(0x1a6)]||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x15f)+a0_0x1c108d(0x153)+a0_0x1c108d(0x1a0)]||'','clickupTeamId':envArgs['click'+a0_0x1c108d(0x171)+a0_0x1c108d(0x15a)]||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x15f)+'UP_TE'+'AM_ID']||'','documentSupport':envArgs[a0_0x1c108d(0x186)+'entSu'+a0_0x1c108d(0x1d1)]||process['env'][a0_0x1c108d(0x195)+a0_0x1c108d(0x18b)+'UPPOR'+'T']||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x195)+'ENT_M'+a0_0x1c108d(0x196)]||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x195)+a0_0x1c108d(0x16c)+'ODEL']||a0_0x1c108d(0x1bc),'logLevel':parseLogLevel(envArgs['logLe'+'vel']||process['env'][a0_0x1c108d(0x1a9)+a0_0x1c108d(0x170)]),'disabledTools':(envArgs[a0_0x1c108d(0x185)+a0_0x1c108d(0x18a)+a0_0x1c108d(0x158)]||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x168)+a0_0x1c108d(0x17e)+'OOLS']||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x168)+a0_0x1c108d(0x1c6)+a0_0x1c108d(0x154)+'DS'])?.[a0_0x1c108d(0x1a1)](',')[a0_0x1c108d(0x16f)](_0x13f1d6=>_0x13f1d6[a0_0x1c108d(0x1d0)]())['filte'+'r'](_0x41017d=>_0x41017d!=='')||[],'enabledTools':(envArgs['enabl'+a0_0x1c108d(0x17a)+'ls']||process['env'][a0_0x1c108d(0x15c)+a0_0x1c108d(0x17f)+a0_0x1c108d(0x1c1)])?.[a0_0x1c108d(0x1a1)](',')['map'](_0xe49b5e=>_0xe49b5e[a0_0x1c108d(0x1d0)]())[a0_0x1c108d(0x162)+'r'](_0x290fed=>_0x290fed!=='')||[],'enableSSE':parseBoolean(envArgs[a0_0x1c108d(0x1b3)+a0_0x1c108d(0x1c2)]||process['env'][a0_0x1c108d(0x15c)+a0_0x1c108d(0x176)],![]),'ssePort':parseInteger(envArgs[a0_0x1c108d(0x1aa)+'rt']||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x1a8)+a0_0x1c108d(0x163)],0xbb8),'enableStdio':parseBoolean(envArgs[a0_0x1c108d(0x1b3)+a0_0x1c108d(0x1c3)+'o']||process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x15c)+a0_0x1c108d(0x199)+'IO'],!![]),'port':envArgs[a0_0x1c108d(0x173)]||process['env']['PORT']||a0_0x1c108d(0x16b),'enableSecurityFeatures':parseBoolean(process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x15c)+a0_0x1c108d(0x1b7)+a0_0x1c108d(0x1b9)+a0_0x1c108d(0x1ad)+a0_0x1c108d(0x175)],![]),'enableOriginValidation':parseBoolean(process['env'][a0_0x1c108d(0x15c)+'E_ORI'+a0_0x1c108d(0x1ba)+'ALIDA'+a0_0x1c108d(0x1c4)],![]),'enableRateLimit':parseBoolean(process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x15c)+a0_0x1c108d(0x1a2)+'E_LIM'+'IT'],![]),'enableCors':parseBoolean(process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x15c)+a0_0x1c108d(0x16d)+'S'],![]),'allowedOrigins':parseOrigins(process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x193)+a0_0x1c108d(0x1b8)+'IGINS'],[a0_0x1c108d(0x1ac)+a0_0x1c108d(0x192)+'.0.0.'+'1:323'+'1','http:'+a0_0x1c108d(0x1be)+a0_0x1c108d(0x1c9)+a0_0x1c108d(0x157)+'1',a0_0x1c108d(0x1ac)+'//127'+a0_0x1c108d(0x1a3)+'1:300'+'0',a0_0x1c108d(0x1ac)+a0_0x1c108d(0x1be)+a0_0x1c108d(0x1c9)+a0_0x1c108d(0x1ae)+'0',a0_0x1c108d(0x156)+'://12'+'7.0.0'+a0_0x1c108d(0x16a)+'43',a0_0x1c108d(0x156)+a0_0x1c108d(0x197)+a0_0x1c108d(0x160)+a0_0x1c108d(0x165)+'43',a0_0x1c108d(0x156)+a0_0x1c108d(0x167)+'7.0.0'+a0_0x1c108d(0x1a5)+'31',a0_0x1c108d(0x156)+a0_0x1c108d(0x197)+a0_0x1c108d(0x160)+'st:32'+'31']),'rateLimitMax':parseInteger(process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x14f)+'LIMIT'+a0_0x1c108d(0x180)],0x64),'rateLimitWindowMs':parseInteger(process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x14f)+a0_0x1c108d(0x179)+a0_0x1c108d(0x1bf)+a0_0x1c108d(0x178)],0xea60),'maxRequestSize':process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x19f)+a0_0x1c108d(0x190)+a0_0x1c108d(0x1b6)+'E']||a0_0x1c108d(0x19e),'enableHttps':parseBoolean(process[a0_0x1c108d(0x15d)]['ENABL'+a0_0x1c108d(0x151)+'PS'],![]),'httpsPort':process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x184)+a0_0x1c108d(0x17b)]||a0_0x1c108d(0x17c),'sslKeyPath':process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x1ce)+a0_0x1c108d(0x189)+'TH'],'sslCertPath':process['env'][a0_0x1c108d(0x159)+a0_0x1c108d(0x181)+a0_0x1c108d(0x1a7)],'sslCaPath':process[a0_0x1c108d(0x15d)][a0_0x1c108d(0x159)+a0_0x1c108d(0x1c5)+'H'],'host':envArgs[a0_0x1c108d(0x1c7)]||process['env']['HOST']||'127.0'+a0_0x1c108d(0x19c)};export const validateConfiguration=()=>{const _0x496889=a0_0x1c108d,_0x21de0f=[_0x496889(0x18c)+_0x496889(0x17d)+_0x496889(0x1a6),_0x496889(0x18c)+_0x496889(0x171)+_0x496889(0x15a)],_0x395c1a=_0x21de0f[_0x496889(0x162)+'r'](_0x1a7ced=>!configuration[_0x1a7ced]);if(_0x395c1a[_0x496889(0x177)+'h']>0x0)throw new Error(_0x496889(0x14e)+_0x496889(0x19b)+_0x496889(0x1b1)+'d\x20env'+_0x496889(0x172)+'ent\x20v'+'ariab'+_0x496889(0x191)+_0x395c1a[_0x496889(0x150)](',\x20'));};export default configuration;
|
|
1
|
+
const a0_0x3cf99f=a0_0x59a8;(function(_0x3e7cd1,_0x34302d){const _0x21b979=a0_0x59a8,_0x48121e=_0x3e7cd1();while(!![]){try{const _0x54698f=-parseInt(_0x21b979(0x10e))/0x1*(-parseInt(_0x21b979(0x10b))/0x2)+parseInt(_0x21b979(0xe7))/0x3*(parseInt(_0x21b979(0xb9))/0x4)+parseInt(_0x21b979(0xc5))/0x5+-parseInt(_0x21b979(0xde))/0x6*(-parseInt(_0x21b979(0xfe))/0x7)+-parseInt(_0x21b979(0xe8))/0x8*(-parseInt(_0x21b979(0x108))/0x9)+-parseInt(_0x21b979(0xd3))/0xa+parseInt(_0x21b979(0xc4))/0xb*(-parseInt(_0x21b979(0xf0))/0xc);if(_0x54698f===_0x34302d)break;else _0x48121e['push'](_0x48121e['shift']());}catch(_0x4e7370){_0x48121e['push'](_0x48121e['shift']());}}}(a0_0x439b,0xa91ef));function a0_0x59a8(_0x14f58b,_0x34271b){_0x14f58b=_0x14f58b-0xb4;const _0x439b15=a0_0x439b();let _0x59a806=_0x439b15[_0x14f58b];if(a0_0x59a8['Rfzznt']===undefined){var _0x3ab29d=function(_0xcc1d7c){const _0x227f4b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x56d187='',_0x2c6e0a='';for(let _0x2843f5=0x0,_0x2b6b88,_0x319dc1,_0x555393=0x0;_0x319dc1=_0xcc1d7c['charAt'](_0x555393++);~_0x319dc1&&(_0x2b6b88=_0x2843f5%0x4?_0x2b6b88*0x40+_0x319dc1:_0x319dc1,_0x2843f5++%0x4)?_0x56d187+=String['fromCharCode'](0xff&_0x2b6b88>>(-0x2*_0x2843f5&0x6)):0x0){_0x319dc1=_0x227f4b['indexOf'](_0x319dc1);}for(let _0x1ce48a=0x0,_0x3c17a9=_0x56d187['length'];_0x1ce48a<_0x3c17a9;_0x1ce48a++){_0x2c6e0a+='%'+('00'+_0x56d187['charCodeAt'](_0x1ce48a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c6e0a);};a0_0x59a8['vJMqsC']=_0x3ab29d,a0_0x59a8['BVVBYa']={},a0_0x59a8['Rfzznt']=!![];}const _0x24b037=_0x439b15[0x0],_0x5cef0e=_0x14f58b+_0x24b037,_0x45809d=a0_0x59a8['BVVBYa'][_0x5cef0e];return!_0x45809d?(_0x59a806=a0_0x59a8['vJMqsC'](_0x59a806),a0_0x59a8['BVVBYa'][_0x5cef0e]=_0x59a806):_0x59a806=_0x45809d,_0x59a806;}const args=process[a0_0x3cf99f(0xf4)][a0_0x3cf99f(0xd1)](0x2),envArgs={};for(let i=0x0;i<args[a0_0x3cf99f(0xbc)+'h'];i++){if(args[i]==='--env'&&i+0x1<args[a0_0x3cf99f(0xbc)+'h']){const [key,value]=args[i+0x1][a0_0x3cf99f(0xda)]('=');if(key==='CLICK'+a0_0x3cf99f(0xec)+a0_0x3cf99f(0xe1))envArgs[a0_0x3cf99f(0xf2)+a0_0x3cf99f(0xf5)+a0_0x3cf99f(0xc9)]=value;if(key===a0_0x3cf99f(0x10c)+a0_0x3cf99f(0xfd)+a0_0x3cf99f(0xcd))envArgs[a0_0x3cf99f(0xf2)+'upTea'+a0_0x3cf99f(0x10a)]=value;if(key===a0_0x3cf99f(0xe0)+a0_0x3cf99f(0xee)+a0_0x3cf99f(0xd4)+'T')envArgs[a0_0x3cf99f(0xe3)+a0_0x3cf99f(0xd7)+a0_0x3cf99f(0xf6)]=value;if(key===a0_0x3cf99f(0xd6)+a0_0x3cf99f(0x102))envArgs[a0_0x3cf99f(0xc0)+'vel']=value;if(key===a0_0x3cf99f(0xc2)+a0_0x3cf99f(0xf8)+a0_0x3cf99f(0x10f))envArgs[a0_0x3cf99f(0xca)+'ledTo'+a0_0x3cf99f(0xd9)]=value;if(key==='ENABL'+'ED_TO'+a0_0x3cf99f(0xc7))envArgs['enabl'+a0_0x3cf99f(0xd5)+'ls']=value;if(key==='ENABL'+'E_SSE')envArgs[a0_0x3cf99f(0xe5)+a0_0x3cf99f(0xe9)]=value;if(key==='SSE_P'+a0_0x3cf99f(0xe2))envArgs[a0_0x3cf99f(0xb6)+'rt']=value;if(key===a0_0x3cf99f(0x112)+a0_0x3cf99f(0xfa)+'IO')envArgs[a0_0x3cf99f(0xe5)+'eStdi'+'o']=value;if(key===a0_0x3cf99f(0xff))envArgs[a0_0x3cf99f(0x101)]=value;if(key===a0_0x3cf99f(0xc1))envArgs['host']=value;i++;}}function a0_0x439b(){const _0x151a41=['ru5bqKW','DMvS','mtOZmJm','oI8VBg8','oI8Vmti','zMLSDgu','C3nLug8','Fdj8mW','C3q6mZi','ne1HDwPQBG','CeL5Cg8','mxWWFdq','BgvUz3q','t0j5D0q','yKDpAMW','lJe6mZi','Bg9Ntgu','se9tva','reLtqui','lY8XmJC','mJjKAMDmr2u','mJu5oteXmhH3D3b5va','DdOZmda','t0Xt','zMfSC2u','s2v5','zgLZywi','mZiZmq','yxjPywi','qu1Fsuq','lJaUmc4','zcbLBNy','CxvPCMu','C2XPy2u','mtOZmda','mJmZmZy2mejUy1PWza','vvbqt1i','zwruB28','te9hx0W','zw50u3u','rvjst1i','B2XZ','C3bSAxq','BwfW','De1Jrxq','AM9PBG','ndjmq2X6uwO','vfjbq0u','re9dvu0','sv9lrvK','t1ju','zg9JDw0','Ag9ZDa','zw5HyMW','v0fstG','mJiZmZqXCLvKvKTi','mJK4ngHtqKfxCG','zvntrq','BgvKvg8','ywXOB3m','vvbFqva','DhjPBq','ru5ux1m','Ahr0Chm','mte4mtKZmJHyrgHsvxu','nY4WlJa','y2XPy2S','s2rSz28','yxjNDG','DxbbCgK','ChbVCNq','lY9SB2m','tevex1q','Ahr0CdO','rv9tveq','revcvuC','zxjdyxm','vvbFveu','otq0nJqZq1r0uvP3','ue9sva','mti3lJa','Cg9YDa','rvzfta','z25LBvi','mZq0mW','su5gtW','y2fSAg8','Dxbuzwe','mZaZm3zIwMz2Aq','zw50ihy','BuLK','mtaYnhvsEM5rrG','q0Xjq0S','qMnqwuS','mJqWnvzkufD4qq','t09muW','BgvZoIa','lJe6mZq'];a0_0x439b=function(){return _0x151a41;};return a0_0x439b();}export var LogLevel;(function(_0x238873){const _0xdc06b1=a0_0x3cf99f,_0x2f0881={'bGOjl':_0xdc06b1(0xdf),'BcPYK':_0xdc06b1(0xd8),'vgGvX':_0xdc06b1(0x105)},_0x4e14fc=(_0xdc06b1(0xbb)+_0xdc06b1(0xb7))['split']('|');let _0x2d4319=0x0;while(!![]){switch(_0x4e14fc[_0x2d4319++]){case'0':_0x238873[_0x238873[_0xdc06b1(0xfb)]=0x1]='DEBUG';continue;case'1':_0x238873[_0x238873[_0x2f0881[_0xdc06b1(0xbe)]]=0x0]=_0x2f0881[_0xdc06b1(0xbe)];continue;case'2':_0x238873[_0x238873[_0xdc06b1(0xe6)]=0x3]=_0xdc06b1(0xe6);continue;case'3':_0x238873[_0x238873[_0xdc06b1(0xd8)]=0x4]=_0x2f0881[_0xdc06b1(0x10d)];continue;case'4':_0x238873[_0x238873[_0x2f0881['vgGvX']]=0x2]=_0xdc06b1(0x105);continue;}break;}}(LogLevel||(LogLevel={})));const parseLogLevel=_0x43e460=>{const _0x5751cc=a0_0x3cf99f,_0x178a30={'FTEFm':_0x5751cc(0x105),'OBywD':_0x5751cc(0xe6)};if(!_0x43e460)return LogLevel['ERROR'];switch(_0x43e460['toUpp'+_0x5751cc(0xfc)+'e']()){case'TRACE':return LogLevel['TRACE'];case _0x5751cc(0xfb):return LogLevel[_0x5751cc(0xfb)];case _0x178a30['FTEFm']:return LogLevel['INFO'];case _0x178a30[_0x5751cc(0xbd)]:return LogLevel['WARN'];case'ERROR':return LogLevel['ERROR'];default:return LogLevel[_0x5751cc(0xd8)];}},parseBoolean=(_0x4edc51,_0x484ec8)=>{const _0x4ae65f=a0_0x3cf99f,_0x1fef6d={'ywpvL':function(_0x512bcb,_0x3c2cd6){return _0x512bcb===_0x3c2cd6;},'Kdlgo':function(_0x519ee1,_0x3138ff){return _0x519ee1===_0x3138ff;},'tMcEt':'true'};if(_0x1fef6d['ywpvL'](_0x4edc51,undefined))return _0x484ec8;return _0x1fef6d[_0x4ae65f(0xf3)](_0x4edc51['toLow'+_0x4ae65f(0xfc)+'e'](),_0x1fef6d[_0x4ae65f(0xdc)]);},parseInteger=(_0x2f51a3,_0x14997c)=>{const _0x981c15=a0_0x3cf99f,_0x3bfe85={'qiamR':function(_0x4fe38c,_0x3cae7e){return _0x4fe38c===_0x3cae7e;},'pIypo':function(_0x41ba39,_0x465cd4,_0x5c95be){return _0x41ba39(_0x465cd4,_0x5c95be);},'gnemR':function(_0x1a54e6,_0x6bd7b2){return _0x1a54e6(_0x6bd7b2);}};if(_0x3bfe85['qiamR'](_0x2f51a3,undefined))return _0x14997c;const _0x3a8e3f=_0x3bfe85[_0x981c15(0xba)](parseInt,_0x2f51a3,0xa);return _0x3bfe85[_0x981c15(0x103)](isNaN,_0x3a8e3f)?_0x14997c:_0x3a8e3f;},parseOrigins=(_0x264c7b,_0x53e92e)=>{const _0xe06dd6=a0_0x3cf99f;if(!_0x264c7b)return _0x53e92e;return _0x264c7b['split'](',')['map'](_0xa844aa=>_0xa844aa[_0xe06dd6(0xed)]())['filte'+'r'](_0x3b866f=>_0x3b866f!=='');},configuration={'clickupApiKey':envArgs['click'+a0_0x3cf99f(0xf5)+'Key']||process.env.CLICKUP_API_KEY||'','clickupTeamId':envArgs['click'+'upTea'+a0_0x3cf99f(0x10a)]||process.env.CLICKUP_TEAM_ID||'','documentSupport':envArgs[a0_0x3cf99f(0xe3)+'entSu'+a0_0x3cf99f(0xf6)]||process.env.DOCUMENT_SUPPORT||process.env.DOCUMENT_MODULE||process.env.DOCUMENT_MODEL||a0_0x3cf99f(0xc8),'logLevel':parseLogLevel(envArgs[a0_0x3cf99f(0xc0)+a0_0x3cf99f(0x113)]||process.env.LOG_LEVEL),'disabledTools':(envArgs[a0_0x3cf99f(0xca)+a0_0x3cf99f(0xea)+'ols']||process.env.DISABLED_TOOLS||process.env.DISABLED_COMMANDS)?.[a0_0x3cf99f(0xda)](',')[a0_0x3cf99f(0xdb)](_0x5ce80=>_0x5ce80['trim']())[a0_0x3cf99f(0xb5)+'r'](_0x2629b9=>_0x2629b9!=='')||[],'enabledTools':(envArgs[a0_0x3cf99f(0xe5)+'edToo'+'ls']||process.env.ENABLED_TOOLS)?.[a0_0x3cf99f(0xda)](',')[a0_0x3cf99f(0xdb)](_0x4872c1=>_0x4872c1[a0_0x3cf99f(0xed)]())[a0_0x3cf99f(0xb5)+'r'](_0x27a5b2=>_0x27a5b2!=='')||[],'enableSSE':parseBoolean(envArgs[a0_0x3cf99f(0xe5)+a0_0x3cf99f(0xe9)]||process.env.ENABLE_SSE,![]),'ssePort':parseInteger(envArgs[a0_0x3cf99f(0xb6)+'rt']||process.env.SSE_PORT,0xbb8),'enableStdio':parseBoolean(envArgs['enabl'+'eStdi'+'o']||process.env.ENABLE_STDIO,!![]),'port':envArgs[a0_0x3cf99f(0x101)]||process.env.PORT||a0_0x3cf99f(0xcb),'enableSecurityFeatures':parseBoolean(process.env.ENABLE_SECURITY_FEATURES,![]),'enableOriginValidation':parseBoolean(process.env.ENABLE_ORIGIN_VALIDATION,![]),'enableRateLimit':parseBoolean(process.env.ENABLE_RATE_LIMIT,![]),'enableCors':parseBoolean(process.env.ENABLE_CORS,![]),'allowedOrigins':parseOrigins(process.env.ALLOWED_ORIGINS,['http:'+a0_0x3cf99f(0xc3)+a0_0x3cf99f(0xce)+a0_0x3cf99f(0x114)+'1',a0_0x3cf99f(0xf9)+a0_0x3cf99f(0xf7)+a0_0x3cf99f(0xeb)+'t:323'+'1',a0_0x3cf99f(0xf9)+a0_0x3cf99f(0xc3)+a0_0x3cf99f(0xce)+a0_0x3cf99f(0xd2)+'0',a0_0x3cf99f(0xf9)+a0_0x3cf99f(0xf7)+'alhos'+a0_0x3cf99f(0xc6)+'0',a0_0x3cf99f(0xef)+'://12'+a0_0x3cf99f(0xf1)+a0_0x3cf99f(0x111)+'43',a0_0x3cf99f(0xef)+a0_0x3cf99f(0x115)+a0_0x3cf99f(0x106)+'st:34'+'43',a0_0x3cf99f(0xef)+a0_0x3cf99f(0xb4)+a0_0x3cf99f(0xf1)+a0_0x3cf99f(0xbf)+'31',a0_0x3cf99f(0xef)+a0_0x3cf99f(0x115)+'calho'+a0_0x3cf99f(0xb8)+'31']),'rateLimitMax':parseInteger(process.env.RATE_LIMIT_MAX,0x64),'rateLimitWindowMs':parseInteger(process.env.RATE_LIMIT_WINDOW_MS,0xea60),'maxRequestSize':process.env.MAX_REQUEST_SIZE||'10mb','enableHttps':parseBoolean(process.env.ENABLE_HTTPS,![]),'httpsPort':process.env.HTTPS_PORT||a0_0x3cf99f(0x104),'sslKeyPath':process.env.SSL_KEY_PATH,'sslCertPath':process.env.SSL_CERT_PATH,'sslCaPath':process.env.SSL_CA_PATH,'host':envArgs[a0_0x3cf99f(0xe4)]||process.env.HOST||a0_0x3cf99f(0x100)+'.0.1'};export const validateConfiguration=()=>{const _0x32b795=a0_0x3cf99f,_0x44406f=[_0x32b795(0xf2)+_0x32b795(0xf5)+_0x32b795(0xc9),_0x32b795(0xf2)+_0x32b795(0x107)+_0x32b795(0x10a)],_0x8b794f=_0x44406f[_0x32b795(0xb5)+'r'](_0x1e5b88=>!configuration[_0x1e5b88]);if(_0x8b794f[_0x32b795(0xbc)+'h']>0x0)throw new Error('Missi'+'ng\x20re'+_0x32b795(0xd0)+_0x32b795(0xcf)+'ironm'+_0x32b795(0x109)+_0x32b795(0xcc)+_0x32b795(0x110)+_0x8b794f[_0x32b795(0xdd)](',\x20'));};export default configuration;
|