@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 CHANGED
@@ -1,3 +1,116 @@
1
- # Temporary Holding Version
1
+ # @cloudizero/mcp
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
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)
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
+ }