@cloudizero/mcp 0.0.0-stage → 0.1.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 +115 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +298 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -4
package/README.md
CHANGED
|
@@ -1,3 +1,116 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @cloudizero/mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Official Model Context Protocol (MCP) server for **[Cloudizero](https://cloudizero.wismannur.pro)** — High-Performance Zero-Egress Digital Asset Management & Media Delivery Platform.
|
|
4
|
+
|
|
5
|
+
Connect your AI coding assistants (Claude Desktop, Cursor, Antigravity, Windsurf, Roo Code, etc.) directly to your Cloudizero workspace to automate media uploads, manage folders, organize assets, and integrate zero-egress CDN URLs into your apps.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🚀 Quick Setup
|
|
10
|
+
|
|
11
|
+
Run directly via `npx` (no installation required):
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @cloudizero/mcp
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Environment Variables
|
|
18
|
+
|
|
19
|
+
| Variable | Required | Description | Default |
|
|
20
|
+
| :--- | :--- | :--- | :--- |
|
|
21
|
+
| `CLOUDIZERO_API_KEY` | **Yes** | Your API Key (`cz_live_...`) generated from Cloudizero Dashboard | — |
|
|
22
|
+
| `CLOUDIZERO_BASE_URL` | No | Base URL of your Cloudizero instance | `https://api-cloudizero.wismannur.pro` |
|
|
23
|
+
| `CLOUDIZERO_CDN_URL` | No | Public CDN distribution URL for assets | `https://cdn-cloudizero.wismannur.pro` |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 🛠 Configuration Guides
|
|
28
|
+
|
|
29
|
+
### 1. Claude Desktop
|
|
30
|
+
|
|
31
|
+
Add this to your Claude Desktop configuration file:
|
|
32
|
+
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
33
|
+
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"mcpServers": {
|
|
38
|
+
"cloudizero": {
|
|
39
|
+
"command": "npx",
|
|
40
|
+
"args": ["-y", "@cloudizero/mcp"],
|
|
41
|
+
"env": {
|
|
42
|
+
"CLOUDIZERO_API_KEY": "cz_live_your_actual_api_key_here"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. Cursor
|
|
50
|
+
|
|
51
|
+
Add to your `.cursor/mcp.json` in your workspace or global Cursor settings:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"cloudizero": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "@cloudizero/mcp"],
|
|
59
|
+
"env": {
|
|
60
|
+
"CLOUDIZERO_API_KEY": "cz_live_your_actual_api_key_here"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 3. Google Antigravity / Gemini CLI
|
|
68
|
+
|
|
69
|
+
Add to your `mcp.json` or config:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"mcpServers": {
|
|
74
|
+
"cloudizero": {
|
|
75
|
+
"command": "npx",
|
|
76
|
+
"args": ["-y", "@cloudizero/mcp"],
|
|
77
|
+
"env": {
|
|
78
|
+
"CLOUDIZERO_API_KEY": "cz_live_your_actual_api_key_here"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 🧰 Available MCP Tools
|
|
88
|
+
|
|
89
|
+
| Tool | Description | Key Parameters |
|
|
90
|
+
| :--- | :--- | :--- |
|
|
91
|
+
| `cloudizero_list_projects` | Lists all projects accessible by your API key | — |
|
|
92
|
+
| `cloudizero_create_project` | Creates a new project *(requires Full Workspace Access key)* | `name`, `description` |
|
|
93
|
+
| `cloudizero_list_contents` | Explores folders and files within a project | `projectId`, `folderId` (optional) |
|
|
94
|
+
| `cloudizero_create_folder` | Creates virtual folders for asset categorization | `projectId`, `name`, `parentId` |
|
|
95
|
+
| `cloudizero_upload_local_file`| Uploads a file from your local machine to Cloudflare R2 | `filePath`, `projectId`, `folderId`, `fileName` |
|
|
96
|
+
| `cloudizero_get_file` | Retrieves file metadata and presigned download URL | `fileId` |
|
|
97
|
+
| `cloudizero_delete_file` | Permanently deletes a file from R2 and database | `fileId` |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🔐 API Key Permissions Guide
|
|
102
|
+
|
|
103
|
+
When creating an API Key in **Cloudizero Dashboard > API Keys**:
|
|
104
|
+
|
|
105
|
+
1. **All Projects (Full Workspace Access)**:
|
|
106
|
+
- Recommended for general agents and initial workspace setup.
|
|
107
|
+
- Allows creating new projects and accessing all assets.
|
|
108
|
+
2. **Select Specific Projects**:
|
|
109
|
+
- Recommended for app-specific repos.
|
|
110
|
+
- Sandboxes the AI assistant strictly to the chosen projects. Project creation will be safely blocked (*Least Privilege*).
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 📄 License
|
|
115
|
+
|
|
116
|
+
MIT © [Wisman Nur](https://wismannur.pro)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { Cloudizero } from "@cloudizero/sdk";
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
// Initialize Cloudizero client
|
|
9
|
+
// Falls back to CLOUDIZERO_API_KEY, CLOUDIZERO_BASE_URL, CLOUDIZERO_CDN_URL from process.env
|
|
10
|
+
const client = new Cloudizero();
|
|
11
|
+
const server = new McpServer({
|
|
12
|
+
name: "cloudizero",
|
|
13
|
+
version: "0.1.1",
|
|
14
|
+
});
|
|
15
|
+
// Helper for error formatting
|
|
16
|
+
function formatError(error) {
|
|
17
|
+
if (error instanceof Error) {
|
|
18
|
+
return error.message;
|
|
19
|
+
}
|
|
20
|
+
return String(error);
|
|
21
|
+
}
|
|
22
|
+
// -------------------------------------------------------------
|
|
23
|
+
// TOOL: cloudizero_list_projects
|
|
24
|
+
// -------------------------------------------------------------
|
|
25
|
+
server.tool("cloudizero_list_projects", "Lists all Cloudizero projects accessible by the configured API key.", {}, async () => {
|
|
26
|
+
try {
|
|
27
|
+
const projects = await client.projects.list();
|
|
28
|
+
return {
|
|
29
|
+
content: [
|
|
30
|
+
{
|
|
31
|
+
type: "text",
|
|
32
|
+
text: JSON.stringify(projects, null, 2),
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return {
|
|
39
|
+
isError: true,
|
|
40
|
+
content: [
|
|
41
|
+
{
|
|
42
|
+
type: "text",
|
|
43
|
+
text: `Failed to list projects: ${formatError(error)}`,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// -------------------------------------------------------------
|
|
50
|
+
// TOOL: cloudizero_create_project
|
|
51
|
+
// -------------------------------------------------------------
|
|
52
|
+
server.tool("cloudizero_create_project", "Creates a new project in Cloudizero. Requires an API key with Full Workspace Access.", {
|
|
53
|
+
name: z.string().describe("Project name (e.g. 'e-commerce-assets')"),
|
|
54
|
+
description: z
|
|
55
|
+
.string()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("Optional project description"),
|
|
58
|
+
}, async ({ name, description }) => {
|
|
59
|
+
try {
|
|
60
|
+
const project = await client.projects.create({ name, description });
|
|
61
|
+
return {
|
|
62
|
+
content: [
|
|
63
|
+
{
|
|
64
|
+
type: "text",
|
|
65
|
+
text: `Project created successfully:\n${JSON.stringify(project, null, 2)}`,
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return {
|
|
72
|
+
isError: true,
|
|
73
|
+
content: [
|
|
74
|
+
{
|
|
75
|
+
type: "text",
|
|
76
|
+
text: `Failed to create project: ${formatError(error)}`,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// -------------------------------------------------------------
|
|
83
|
+
// TOOL: cloudizero_list_contents
|
|
84
|
+
// -------------------------------------------------------------
|
|
85
|
+
server.tool("cloudizero_list_contents", "Lists folders and files inside a project or folder in Cloudizero.", {
|
|
86
|
+
projectId: z.string().describe("Target Cloudizero project ID"),
|
|
87
|
+
folderId: z
|
|
88
|
+
.string()
|
|
89
|
+
.optional()
|
|
90
|
+
.describe("Folder ID to explore. Leave empty or pass 'root' for project root directory."),
|
|
91
|
+
}, async ({ projectId, folderId }) => {
|
|
92
|
+
try {
|
|
93
|
+
const contents = await client.storage.listContents({
|
|
94
|
+
projectId,
|
|
95
|
+
folderId: folderId || "root",
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
content: [
|
|
99
|
+
{
|
|
100
|
+
type: "text",
|
|
101
|
+
text: JSON.stringify(contents, null, 2),
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
return {
|
|
108
|
+
isError: true,
|
|
109
|
+
content: [
|
|
110
|
+
{
|
|
111
|
+
type: "text",
|
|
112
|
+
text: `Failed to list contents: ${formatError(error)}`,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// -------------------------------------------------------------
|
|
119
|
+
// TOOL: cloudizero_create_folder
|
|
120
|
+
// -------------------------------------------------------------
|
|
121
|
+
server.tool("cloudizero_create_folder", "Creates a new virtual folder inside a project.", {
|
|
122
|
+
projectId: z.string().describe("Target project ID"),
|
|
123
|
+
name: z.string().describe("Folder name (e.g. 'thumbnails', 'documents')"),
|
|
124
|
+
parentId: z
|
|
125
|
+
.string()
|
|
126
|
+
.optional()
|
|
127
|
+
.describe("Parent folder ID if creating a nested subfolder. Leave empty for root."),
|
|
128
|
+
}, async ({ projectId, name, parentId }) => {
|
|
129
|
+
try {
|
|
130
|
+
const folder = await client.storage.createFolder({
|
|
131
|
+
projectId,
|
|
132
|
+
name,
|
|
133
|
+
parentId: parentId || null,
|
|
134
|
+
});
|
|
135
|
+
return {
|
|
136
|
+
content: [
|
|
137
|
+
{
|
|
138
|
+
type: "text",
|
|
139
|
+
text: `Folder created successfully:\n${JSON.stringify(folder, null, 2)}`,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
return {
|
|
146
|
+
isError: true,
|
|
147
|
+
content: [
|
|
148
|
+
{
|
|
149
|
+
type: "text",
|
|
150
|
+
text: `Failed to create folder: ${formatError(error)}`,
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
// -------------------------------------------------------------
|
|
157
|
+
// TOOL: cloudizero_get_file
|
|
158
|
+
// -------------------------------------------------------------
|
|
159
|
+
server.tool("cloudizero_get_file", "Gets details and presigned download URL for a file in Cloudizero.", {
|
|
160
|
+
fileId: z.string().describe("The ID of the file to retrieve"),
|
|
161
|
+
}, async ({ fileId }) => {
|
|
162
|
+
try {
|
|
163
|
+
const result = await client.storage.getFile(fileId);
|
|
164
|
+
return {
|
|
165
|
+
content: [
|
|
166
|
+
{
|
|
167
|
+
type: "text",
|
|
168
|
+
text: JSON.stringify(result, null, 2),
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
return {
|
|
175
|
+
isError: true,
|
|
176
|
+
content: [
|
|
177
|
+
{
|
|
178
|
+
type: "text",
|
|
179
|
+
text: `Failed to get file: ${formatError(error)}`,
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
// -------------------------------------------------------------
|
|
186
|
+
// TOOL: cloudizero_upload_local_file
|
|
187
|
+
// -------------------------------------------------------------
|
|
188
|
+
server.tool("cloudizero_upload_local_file", "Uploads a file from the local filesystem directly to Cloudizero zero-egress storage (Cloudflare R2).", {
|
|
189
|
+
filePath: z
|
|
190
|
+
.string()
|
|
191
|
+
.describe("Absolute or relative path to the local file to upload"),
|
|
192
|
+
projectId: z.string().describe("Target Cloudizero project ID"),
|
|
193
|
+
folderId: z
|
|
194
|
+
.string()
|
|
195
|
+
.optional()
|
|
196
|
+
.describe("Optional target folder ID. Leave empty for project root."),
|
|
197
|
+
fileName: z
|
|
198
|
+
.string()
|
|
199
|
+
.optional()
|
|
200
|
+
.describe("Optional custom destination file name (e.g. 'logo.svg'). Defaults to local filename."),
|
|
201
|
+
mimeType: z
|
|
202
|
+
.string()
|
|
203
|
+
.optional()
|
|
204
|
+
.describe("MIME type (e.g. 'image/png', 'application/pdf'). Inferred if not provided."),
|
|
205
|
+
}, async ({ filePath, projectId, folderId, fileName, mimeType }) => {
|
|
206
|
+
try {
|
|
207
|
+
const resolvedPath = path.resolve(filePath);
|
|
208
|
+
const buffer = await fs.readFile(resolvedPath);
|
|
209
|
+
const inferredName = fileName || path.basename(resolvedPath);
|
|
210
|
+
// Guess basic mimeType if missing
|
|
211
|
+
let resolvedMime = mimeType || "application/octet-stream";
|
|
212
|
+
if (!mimeType) {
|
|
213
|
+
const ext = path.extname(inferredName).toLowerCase();
|
|
214
|
+
const mimeMap = {
|
|
215
|
+
".png": "image/png",
|
|
216
|
+
".jpg": "image/jpeg",
|
|
217
|
+
".jpeg": "image/jpeg",
|
|
218
|
+
".webp": "image/webp",
|
|
219
|
+
".svg": "image/svg+xml",
|
|
220
|
+
".gif": "image/gif",
|
|
221
|
+
".pdf": "application/pdf",
|
|
222
|
+
".json": "application/json",
|
|
223
|
+
".txt": "text/plain",
|
|
224
|
+
".mp4": "video/mp4",
|
|
225
|
+
".webm": "video/webm",
|
|
226
|
+
};
|
|
227
|
+
if (mimeMap[ext]) {
|
|
228
|
+
resolvedMime = mimeMap[ext];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
const uploaded = await client.storage.upload({
|
|
232
|
+
projectId,
|
|
233
|
+
folderId: folderId || null,
|
|
234
|
+
file: buffer,
|
|
235
|
+
fileName: inferredName,
|
|
236
|
+
mimeType: resolvedMime,
|
|
237
|
+
});
|
|
238
|
+
return {
|
|
239
|
+
content: [
|
|
240
|
+
{
|
|
241
|
+
type: "text",
|
|
242
|
+
text: `File uploaded successfully to Cloudizero!\n${JSON.stringify(uploaded, null, 2)}`,
|
|
243
|
+
},
|
|
244
|
+
],
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
return {
|
|
249
|
+
isError: true,
|
|
250
|
+
content: [
|
|
251
|
+
{
|
|
252
|
+
type: "text",
|
|
253
|
+
text: `Failed to upload local file: ${formatError(error)}`,
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
// -------------------------------------------------------------
|
|
260
|
+
// TOOL: cloudizero_delete_file
|
|
261
|
+
// -------------------------------------------------------------
|
|
262
|
+
server.tool("cloudizero_delete_file", "Permanently deletes a file from Cloudizero and Cloudflare R2.", {
|
|
263
|
+
fileId: z.string().describe("The ID of the file to delete"),
|
|
264
|
+
}, async ({ fileId }) => {
|
|
265
|
+
try {
|
|
266
|
+
const result = await client.storage.deleteFile(fileId);
|
|
267
|
+
return {
|
|
268
|
+
content: [
|
|
269
|
+
{
|
|
270
|
+
type: "text",
|
|
271
|
+
text: JSON.stringify(result, null, 2),
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
return {
|
|
278
|
+
isError: true,
|
|
279
|
+
content: [
|
|
280
|
+
{
|
|
281
|
+
type: "text",
|
|
282
|
+
text: `Failed to delete file: ${formatError(error)}`,
|
|
283
|
+
},
|
|
284
|
+
],
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
// Start server on stdio transport
|
|
289
|
+
async function main() {
|
|
290
|
+
const transport = new StdioServerTransport();
|
|
291
|
+
await server.connect(transport);
|
|
292
|
+
console.error("Cloudizero MCP Server running on stdio");
|
|
293
|
+
}
|
|
294
|
+
main().catch((error) => {
|
|
295
|
+
console.error("Fatal error starting Cloudizero MCP server:", error);
|
|
296
|
+
process.exit(1);
|
|
297
|
+
});
|
|
298
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudizero/mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Official Model Context Protocol (MCP) Server for Cloudizero DAM Platform",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"cloudizero-mcp": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc && chmod +x dist/index.js",
|
|
16
|
+
"typecheck": "tsc --noEmit",
|
|
17
|
+
"start": "node ./dist/index.js",
|
|
18
|
+
"prepublishOnly": "pnpm run build"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"homepage": "https://cloudizero.wismannur.pro/docs/mcp",
|
|
24
|
+
"keywords": [
|
|
25
|
+
|
|
26
|
+
"cloudizero",
|
|
27
|
+
"mcp",
|
|
28
|
+
"model-context-protocol",
|
|
29
|
+
"ai",
|
|
30
|
+
"dam",
|
|
31
|
+
"cloudflare-r2",
|
|
32
|
+
"agentic-tools"
|
|
33
|
+
],
|
|
34
|
+
"author": "Wisman Nur",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@cloudizero/sdk": "workspace:*",
|
|
38
|
+
"@modelcontextprotocol/sdk": "^1.11.0",
|
|
39
|
+
"zod": "^3.24.2"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^20.17.0",
|
|
43
|
+
"typescript": "^5.0.0"
|
|
44
|
+
}
|
|
45
|
+
}
|