@metalevel/snapix-mcp-server 0.1.1 → 0.1.2
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 +1 -43
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +37 -12
- package/dist/client.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -4
- package/dist/server.js.map +1 -1
- package/dist/tools/generate.d.ts +3 -2
- package/dist/tools/generate.d.ts.map +1 -1
- package/dist/tools/generate.js +59 -45
- package/dist/tools/generate.js.map +1 -1
- package/dist/tools/upload-image.d.ts +2 -1
- package/dist/tools/upload-image.d.ts.map +1 -1
- package/dist/tools/upload-image.js +71 -51
- package/dist/tools/upload-image.js.map +1 -1
- package/dist/types.d.ts +8 -14
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @metalevel/snapix-mcp-server
|
|
2
2
|
|
|
3
|
-
MCP server for [SnapiX](https://www.snapix.space) — image optimization, conversion, AI generation, and gallery management via the [Model Context Protocol](https://modelcontextprotocol.io).
|
|
3
|
+
MCP server for [SnapiX](https://www.snapix.space) — image optimization, conversion, AI generation, and gallery management via the [Model Context Protocol](https://modelcontextprotocol.io). Get a free [API key](https://www.snapix.space/user/api-keys) and start using it with your AI clients today, no credits required!
|
|
4
4
|
|
|
5
5
|
## Quick Start — Local (stdio)
|
|
6
6
|
|
|
@@ -50,48 +50,6 @@ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_
|
|
|
50
50
|
}
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
## Quick Start — Remote (HTTP)
|
|
54
|
-
|
|
55
|
-
For clients that support Streamable HTTP transport, point to the hosted endpoint:
|
|
56
|
-
|
|
57
|
-
```txt
|
|
58
|
-
https://www.snapix.space/api/mcp
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Pass your API key via the `Authorization` header:
|
|
62
|
-
|
|
63
|
-
```ini
|
|
64
|
-
Authorization: Bearer <your-api-key>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
The remote endpoint operates in stateless mode — no session persistence between requests.
|
|
68
|
-
|
|
69
|
-
### VS Code (Copilot)
|
|
70
|
-
|
|
71
|
-
Add to `.vscode/mcp.json`:
|
|
72
|
-
|
|
73
|
-
```json
|
|
74
|
-
{
|
|
75
|
-
"inputs": [
|
|
76
|
-
{
|
|
77
|
-
"id": "SNAPIX_API_KEY",
|
|
78
|
-
"type": "promptString",
|
|
79
|
-
"description": "SnapiX API key",
|
|
80
|
-
"password": true
|
|
81
|
-
}
|
|
82
|
-
],
|
|
83
|
-
"servers": {
|
|
84
|
-
"snapix": {
|
|
85
|
-
"type": "http",
|
|
86
|
-
"url": "https://www.snapix.space/api/mcp",
|
|
87
|
-
"headers": {
|
|
88
|
-
"Authorization": "Bearer ${input:SNAPIX_API_KEY}"
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
53
|
## Environment Variables
|
|
96
54
|
|
|
97
55
|
| Variable | Required | Default | Description |
|
package/dist/client.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare class SnapixClient {
|
|
|
9
9
|
/**
|
|
10
10
|
* Image endpoints
|
|
11
11
|
*/
|
|
12
|
+
private handleImageUploadParams;
|
|
12
13
|
uploadImage(params: UploadImageParams): Promise<unknown>;
|
|
13
14
|
listImages(params?: ListImagesParams): Promise<unknown>;
|
|
14
15
|
getImage(imageId: string): Promise<unknown>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAKpB,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,kBAAkB;IAKtC,OAAO,KAAK,OAAO,GAElB;YAEa,cAAc;IA6B5B,OAAO,CAAC,aAAa;IAkBrB;;OAEG;YAEW,uBAAuB;IAqC/B,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BxD,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBvD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBzE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAapD;;OAEG;IAEG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BlE;;OAEG;IAEG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5D,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IASjC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAcjF"}
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { API_URI_GALLERIES, API_URI_GENERATE, API_URI_IMAGES } from "./constants.js";
|
|
2
2
|
import { SnapixApiError } from "./errors.js";
|
|
3
|
+
import { readFile } from "node:fs/promises";
|
|
4
|
+
import { basename, extname } from "node:path";
|
|
3
5
|
export class SnapixClient {
|
|
4
6
|
baseUrl;
|
|
5
7
|
apiKey;
|
|
@@ -50,6 +52,39 @@ export class SnapixClient {
|
|
|
50
52
|
/**
|
|
51
53
|
* Image endpoints
|
|
52
54
|
*/
|
|
55
|
+
async handleImageUploadParams(params, formData) {
|
|
56
|
+
if (params.imageFilePath) {
|
|
57
|
+
const buffer = await readFile(params.imageFilePath);
|
|
58
|
+
const ext = extname(params.imageFilePath).slice(1).toLowerCase();
|
|
59
|
+
const mimeMap = {
|
|
60
|
+
jpg: "image/jpeg",
|
|
61
|
+
jpeg: "image/jpeg",
|
|
62
|
+
png: "image/png",
|
|
63
|
+
webp: "image/webp",
|
|
64
|
+
avif: "image/avif",
|
|
65
|
+
gif: "image/gif",
|
|
66
|
+
svg: "image/svg+xml",
|
|
67
|
+
};
|
|
68
|
+
const mimeType = params.imageContentType ?? params.contentType ?? mimeMap[ext] ?? "application/octet-stream";
|
|
69
|
+
const blob = new Blob([buffer], { type: mimeType });
|
|
70
|
+
const filename = params.name
|
|
71
|
+
? `${params.name}.${ext || "bin"}`
|
|
72
|
+
: basename(params.imageFilePath);
|
|
73
|
+
formData.append("image", blob, filename);
|
|
74
|
+
}
|
|
75
|
+
else if (params.imageBase64) {
|
|
76
|
+
const mimeType = params.imageContentType ?? params.contentType ?? "application/octet-stream";
|
|
77
|
+
const buffer = Buffer.from(params.imageBase64, "base64");
|
|
78
|
+
const blob = new Blob([buffer], { type: mimeType });
|
|
79
|
+
const ext = mimeType.split("/")[1] ?? "bin";
|
|
80
|
+
const filename = params.name ? `${params.name}.${ext}` : `upload.${ext}`;
|
|
81
|
+
formData.append("image", blob, filename);
|
|
82
|
+
}
|
|
83
|
+
else if (params.imageUrl) {
|
|
84
|
+
formData.append("url", params.imageUrl);
|
|
85
|
+
}
|
|
86
|
+
return formData;
|
|
87
|
+
}
|
|
53
88
|
async uploadImage(params) {
|
|
54
89
|
const formData = this.buildFormData({
|
|
55
90
|
name: params.name,
|
|
@@ -63,17 +98,7 @@ export class SnapixClient {
|
|
|
63
98
|
prefix: params.prefix,
|
|
64
99
|
storageKeyHandling: params.storageKeyHandling,
|
|
65
100
|
});
|
|
66
|
-
|
|
67
|
-
const mimeType = params.imageContentType ?? params.contentType ?? "application/octet-stream";
|
|
68
|
-
const buffer = Buffer.from(params.imageBase64, "base64");
|
|
69
|
-
const blob = new Blob([buffer], { type: mimeType });
|
|
70
|
-
const ext = mimeType.split("/")[1] ?? "bin";
|
|
71
|
-
const filename = params.name ? `${params.name}.${ext}` : `upload.${ext}`;
|
|
72
|
-
formData.append("image", blob, filename);
|
|
73
|
-
}
|
|
74
|
-
else if (params.imageUrl) {
|
|
75
|
-
formData.append("url", params.imageUrl);
|
|
76
|
-
}
|
|
101
|
+
await this.handleImageUploadParams(params, formData);
|
|
77
102
|
const response = await fetch(`${this.baseUrl}/${API_URI_IMAGES}`, {
|
|
78
103
|
method: "POST",
|
|
79
104
|
headers: this.headers,
|
|
@@ -137,7 +162,6 @@ export class SnapixClient {
|
|
|
137
162
|
*/
|
|
138
163
|
async generateImage(params) {
|
|
139
164
|
const formData = this.buildFormData({
|
|
140
|
-
url: params.imageUrl,
|
|
141
165
|
prompt: params.promptText,
|
|
142
166
|
name: params.name,
|
|
143
167
|
description: params.description,
|
|
@@ -148,6 +172,7 @@ export class SnapixClient {
|
|
|
148
172
|
bucketKey: params.bucketKey,
|
|
149
173
|
aiConfig: params.aiConfig !== undefined ? JSON.stringify(params.aiConfig) : undefined,
|
|
150
174
|
});
|
|
175
|
+
await this.handleImageUploadParams(params, formData);
|
|
151
176
|
const response = await fetch(`${this.baseUrl}/${API_URI_GENERATE}`, {
|
|
152
177
|
method: "POST",
|
|
153
178
|
headers: this.headers,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ if (!apiKey) {
|
|
|
8
8
|
console.error(`Get your API key at ${APP_MCP_BASE_URL}/user/api-keys`);
|
|
9
9
|
process.exit(1);
|
|
10
10
|
}
|
|
11
|
-
const server = createSnapixMcpServer({ apiKey });
|
|
11
|
+
const server = createSnapixMcpServer({ apiKey, transport: "stdio" });
|
|
12
12
|
const transport = new StdioServerTransport();
|
|
13
13
|
await server.connect(transport);
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,OAAO,CAAC,KAAK,CAAC,uBAAuB,gBAAgB,gBAAgB,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,OAAO,CAAC,KAAK,CAAC,uBAAuB,gBAAgB,gBAAgB,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACrE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { type CreateServerOptions } from "./types.js";
|
|
3
|
-
export declare function createSnapixMcpServer({ apiKey, baseUrl, }: CreateServerOptions): McpServer;
|
|
3
|
+
export declare function createSnapixMcpServer({ apiKey, baseUrl, transport, }: CreateServerOptions): McpServer;
|
|
4
4
|
/**
|
|
5
5
|
* Creates a stateless request handler for use in web frameworks (Next.js, Hono, etc.).
|
|
6
6
|
* Each incoming request creates a fresh server + transport - no session state is maintained.
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAA0B,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAA0B,EAC1B,SAAmB,GACpB,EAAE,mBAAmB,GAAG,SAAS,CA0BjC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
|
package/dist/server.js
CHANGED
|
@@ -16,7 +16,7 @@ import { registerListImagesTool } from "./tools/list-images.js";
|
|
|
16
16
|
import { registerUpdateGalleryTool } from "./tools/update-gallery.js";
|
|
17
17
|
import { registerUpdateImageTool } from "./tools/update-image.js";
|
|
18
18
|
import { registerUploadImageTool } from "./tools/upload-image.js";
|
|
19
|
-
export function createSnapixMcpServer({ apiKey, baseUrl = APP_MCP_BASE_URL, }) {
|
|
19
|
+
export function createSnapixMcpServer({ apiKey, baseUrl = APP_MCP_BASE_URL, transport = "stdio", }) {
|
|
20
20
|
const server = new McpServer({
|
|
21
21
|
name: APP_MCP_PACKAGE_NAME,
|
|
22
22
|
version: APP_MCP_PACKAGE_VERSION,
|
|
@@ -24,8 +24,8 @@ export function createSnapixMcpServer({ apiKey, baseUrl = APP_MCP_BASE_URL, }) {
|
|
|
24
24
|
const client = new SnapixClient({ baseUrl, apiKey });
|
|
25
25
|
// Register tools
|
|
26
26
|
registerConvertTool(server, client);
|
|
27
|
-
registerUploadImageTool(server, client);
|
|
28
|
-
registerGenerateImageTool(server, client);
|
|
27
|
+
registerUploadImageTool(server, client, transport);
|
|
28
|
+
registerGenerateImageTool(server, client, transport);
|
|
29
29
|
registerListImagesTool(server, client);
|
|
30
30
|
registerGetImageTool(server, client);
|
|
31
31
|
registerUpdateImageTool(server, client);
|
|
@@ -49,7 +49,7 @@ export async function handleStatelessRequest(request, options) {
|
|
|
49
49
|
sessionIdGenerator: undefined,
|
|
50
50
|
enableJsonResponse: true,
|
|
51
51
|
});
|
|
52
|
-
const server = createSnapixMcpServer(options);
|
|
52
|
+
const server = createSnapixMcpServer({ ...options, transport: "http" });
|
|
53
53
|
await server.connect(transport);
|
|
54
54
|
return transport.handleRequest(request);
|
|
55
55
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AAEzH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,MAAM,UAAU,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AAEzH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,MAAM,UAAU,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,GAAG,gBAAgB,EAC1B,SAAS,GAAG,OAAO,GACC;IACpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,uBAAuB;KACjC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAErD,iBAAiB;IACjB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACnD,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACrD,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,qBAAqB;IACrB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAgB,EAChB,OAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,wCAAwC,CAAC;QAC7D,kBAAkB,EAAE,SAAS;QAC7B,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/tools/generate.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
import { type SnapixClient } from "
|
|
3
|
-
|
|
2
|
+
import { type SnapixClient } from "../client.js";
|
|
3
|
+
import { type TransportType } from "../types.js";
|
|
4
|
+
export declare function registerGenerateImageTool(server: McpServer, client: SnapixClient, transport?: TransportType): void;
|
|
4
5
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAsE3E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,SAAS,GAAE,aAAuB,GACjC,IAAI,CAoBN"}
|
package/dist/tools/generate.js
CHANGED
|
@@ -1,54 +1,68 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { handleToolError } from "../errors.js";
|
|
3
|
-
|
|
3
|
+
const sharedFields = {
|
|
4
|
+
promptText: z.string().describe("Text prompt describing the image to generate"),
|
|
5
|
+
name: z.string().max(256).optional().describe("Name for the generated image"),
|
|
6
|
+
description: z.string().max(4096).optional().describe("Description of the image"),
|
|
7
|
+
formatOptions: z
|
|
8
|
+
.array(z.object({
|
|
9
|
+
format: z.enum(["jpeg", "png", "webp", "avif"]).describe("Output image format"),
|
|
10
|
+
}))
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Array of output format options"),
|
|
13
|
+
resizeOptions: z
|
|
14
|
+
.array(z.object({
|
|
15
|
+
width: z.number().positive().optional().describe("Target width in pixels"),
|
|
16
|
+
height: z.number().positive().optional().describe("Target height in pixels"),
|
|
17
|
+
}))
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Array of resize options"),
|
|
20
|
+
ratio: z
|
|
21
|
+
.number()
|
|
22
|
+
.positive()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("Aspect ratio as a number (e.g., 1.777 for 16:9)"),
|
|
25
|
+
galleries: z.array(z.uuid()).optional().describe("Array of gallery IDs to add the image to"),
|
|
26
|
+
bucketKey: z.string().optional().describe("Storage bucket key"),
|
|
27
|
+
};
|
|
28
|
+
const stdioSchema = z.object({
|
|
29
|
+
...sharedFields,
|
|
30
|
+
imageUrl: z
|
|
31
|
+
.url()
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("Optional template image URL to guide style/layout of the generated image"),
|
|
34
|
+
imageFilePath: z
|
|
35
|
+
.string()
|
|
36
|
+
.optional()
|
|
37
|
+
.describe("Absolute path to a local template image file to guide style/layout. The MCP server reads the file from disk — no base64 encoding needed."),
|
|
38
|
+
});
|
|
39
|
+
const httpSchema = z.object({
|
|
40
|
+
...sharedFields,
|
|
41
|
+
imageUrl: z
|
|
42
|
+
.url()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("Optional template image URL to guide style/layout of the generated image"),
|
|
45
|
+
imageBase64: z
|
|
46
|
+
.string()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("Base64-encoded template image binary to guide style/layout"),
|
|
49
|
+
contentType: z
|
|
50
|
+
.string()
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("MIME type of the template image (e.g. 'image/png'). Recommended when using imageBase64."),
|
|
53
|
+
});
|
|
54
|
+
const descriptions = {
|
|
55
|
+
stdio: "Generate an image using AI (Gemini API) from a text prompt, optionally guided by a template image URL or local file path. The generated image is automatically processed, converted, and uploaded to cloud storage. Returns CDN URLs and generation metadata. Costs 40+ App credits.",
|
|
56
|
+
http: "Generate an image using AI (Gemini API) from a text prompt, optionally guided by a template image URL or base64-encoded image. The generated image is automatically processed, converted, and uploaded to cloud storage. Returns CDN URLs and generation metadata. Costs 40+ App credits.",
|
|
57
|
+
};
|
|
58
|
+
export function registerGenerateImageTool(server, client, transport = "stdio") {
|
|
4
59
|
server.registerTool("snapix_generate_image", {
|
|
5
60
|
title: "Generate an image using AI (Gemini API)",
|
|
6
|
-
description:
|
|
7
|
-
inputSchema:
|
|
8
|
-
promptText: z.string().describe("Text prompt describing the image to generate"),
|
|
9
|
-
imageUrl: z
|
|
10
|
-
.url()
|
|
11
|
-
.optional()
|
|
12
|
-
.describe("Optional template image URL to guide style/layout of the generated image"),
|
|
13
|
-
name: z.string().max(256).optional().describe("Name for the generated image"),
|
|
14
|
-
description: z.string().max(4096).optional().describe("Description of the image"),
|
|
15
|
-
formatOptions: z
|
|
16
|
-
.array(z.object({
|
|
17
|
-
format: z.enum(["jpeg", "png", "webp", "avif"]).describe("Output image format"),
|
|
18
|
-
}))
|
|
19
|
-
.optional()
|
|
20
|
-
.describe("Array of output format options"),
|
|
21
|
-
resizeOptions: z
|
|
22
|
-
.array(z.object({
|
|
23
|
-
width: z.number().positive().optional().describe("Target width in pixels"),
|
|
24
|
-
height: z.number().positive().optional().describe("Target height in pixels"),
|
|
25
|
-
}))
|
|
26
|
-
.optional()
|
|
27
|
-
.describe("Array of resize options"),
|
|
28
|
-
ratio: z
|
|
29
|
-
.number()
|
|
30
|
-
.positive()
|
|
31
|
-
.optional()
|
|
32
|
-
.describe("Aspect ratio as a number (e.g., 1.777 for 16:9)"),
|
|
33
|
-
galleries: z
|
|
34
|
-
.array(z.uuid())
|
|
35
|
-
.optional()
|
|
36
|
-
.describe("Array of gallery IDs to add the image to"),
|
|
37
|
-
bucketKey: z.string().optional().describe("Storage bucket key"),
|
|
38
|
-
}),
|
|
61
|
+
description: descriptions[transport],
|
|
62
|
+
inputSchema: transport === "stdio" ? stdioSchema : httpSchema,
|
|
39
63
|
}, async (params) => {
|
|
40
64
|
try {
|
|
41
|
-
const result = await client.generateImage(
|
|
42
|
-
promptText: params.promptText,
|
|
43
|
-
imageUrl: params.imageUrl,
|
|
44
|
-
name: params.name,
|
|
45
|
-
description: params.description,
|
|
46
|
-
formatOptions: params.formatOptions,
|
|
47
|
-
resizeOptions: params.resizeOptions,
|
|
48
|
-
ratio: params.ratio,
|
|
49
|
-
galleries: params.galleries,
|
|
50
|
-
bucketKey: params.bucketKey,
|
|
51
|
-
});
|
|
65
|
+
const result = await client.generateImage(params);
|
|
52
66
|
return {
|
|
53
67
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
54
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { type SnapixClient } from "../client.js";
|
|
3
|
-
|
|
3
|
+
import { type TransportType } from "../types.js";
|
|
4
|
+
export declare function registerUploadImageTool(server: McpServer, client: SnapixClient, transport?: TransportType): void;
|
|
4
5
|
//# sourceMappingURL=upload-image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-image.d.ts","sourceRoot":"","sources":["../../src/tools/upload-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-image.d.ts","sourceRoot":"","sources":["../../src/tools/upload-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,aAAa,CAAC;AAiFzE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,SAAS,GAAE,aAAuB,GACjC,IAAI,CAoBN"}
|
|
@@ -1,58 +1,78 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { handleToolError } from "../errors.js";
|
|
3
|
-
|
|
3
|
+
const sharedFields = {
|
|
4
|
+
contentType: z
|
|
5
|
+
.string()
|
|
6
|
+
.optional()
|
|
7
|
+
.describe("MIME type of the image (e.g. 'image/png', 'image/jpeg')."),
|
|
8
|
+
name: z.string().max(256).optional().describe("Name for the uploaded image"),
|
|
9
|
+
description: z.string().max(4096).optional().describe("Description of the image"),
|
|
10
|
+
formatOptions: z
|
|
11
|
+
.array(z.object({
|
|
12
|
+
format: z.enum(["jpeg", "png", "webp", "avif"]).describe("Output image format"),
|
|
13
|
+
}))
|
|
14
|
+
.optional()
|
|
15
|
+
.describe("Array of output format options. Each creates a variant."),
|
|
16
|
+
resizeOptions: z
|
|
17
|
+
.array(z.object({
|
|
18
|
+
width: z.number().positive().optional().describe("Target width in pixels"),
|
|
19
|
+
height: z.number().positive().optional().describe("Target height in pixels"),
|
|
20
|
+
}))
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("Array of resize options. Each creates a variant. Empty object keeps original size."),
|
|
23
|
+
ratio: z
|
|
24
|
+
.number()
|
|
25
|
+
.positive()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("Aspect ratio as a number (e.g., 1.777 for 16:9, 1.333 for 4:3)"),
|
|
28
|
+
galleries: z.array(z.uuid()).optional().describe("Array of gallery IDs to add the image to"),
|
|
29
|
+
bucketKey: z.string().optional().describe("Storage bucket key (defaults to primary bucket)"),
|
|
30
|
+
};
|
|
31
|
+
const stdioSchema = z
|
|
32
|
+
.object({
|
|
33
|
+
imageUrl: z
|
|
34
|
+
.url()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe("URL of the image to upload (mutually exclusive with imageFilePath)"),
|
|
37
|
+
imageFilePath: z
|
|
38
|
+
.string()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("Absolute path to a local image file (mutually exclusive with imageUrl). The MCP server reads the file from disk — no base64 encoding needed."),
|
|
41
|
+
...sharedFields,
|
|
42
|
+
})
|
|
43
|
+
.refine((data) => !!(data.imageUrl ?? data.imageFilePath), {
|
|
44
|
+
message: "Either imageUrl or imageFilePath must be provided",
|
|
45
|
+
})
|
|
46
|
+
.refine((data) => !(data.imageUrl && data.imageFilePath), {
|
|
47
|
+
message: "imageUrl and imageFilePath are mutually exclusive — provide only one",
|
|
48
|
+
});
|
|
49
|
+
const httpSchema = z
|
|
50
|
+
.object({
|
|
51
|
+
imageUrl: z
|
|
52
|
+
.url()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("URL of the image to upload (mutually exclusive with imageBase64)"),
|
|
55
|
+
imageBase64: z
|
|
56
|
+
.string()
|
|
57
|
+
.optional()
|
|
58
|
+
.describe("Base64-encoded image binary (mutually exclusive with imageUrl)"),
|
|
59
|
+
...sharedFields,
|
|
60
|
+
})
|
|
61
|
+
.refine((data) => !!(data.imageUrl ?? data.imageBase64), {
|
|
62
|
+
message: "Either imageUrl or imageBase64 must be provided",
|
|
63
|
+
})
|
|
64
|
+
.refine((data) => !(data.imageUrl && data.imageBase64), {
|
|
65
|
+
message: "imageUrl and imageBase64 are mutually exclusive — provide only one",
|
|
66
|
+
});
|
|
67
|
+
const descriptions = {
|
|
68
|
+
stdio: "Upload an image to SnapiX cloud storage from a remote URL (imageUrl) or a local file path (imageFilePath). Exactly one must be provided. The server reads local files from disk directly — no base64 encoding needed. Optionally convert to different formats (JPEG, PNG, WebP, AVIF), resize, and assign to galleries. Returns CDN URLs for all generated variants. Costs 1+ App credits.",
|
|
69
|
+
http: "Upload an image to SnapiX cloud storage from a remote URL (imageUrl) or as a base64-encoded binary (imageBase64). Exactly one must be provided. Optionally convert to different formats (JPEG, PNG, WebP, AVIF), resize, and assign to galleries. Returns CDN URLs for all generated variants. Costs 1+ App credits.",
|
|
70
|
+
};
|
|
71
|
+
export function registerUploadImageTool(server, client, transport = "stdio") {
|
|
4
72
|
server.registerTool("snapix_upload_image", {
|
|
5
73
|
title: "Upload an image",
|
|
6
|
-
description:
|
|
7
|
-
inputSchema:
|
|
8
|
-
.object({
|
|
9
|
-
imageUrl: z
|
|
10
|
-
.url()
|
|
11
|
-
.optional()
|
|
12
|
-
.describe("URL of the image to upload (mutually exclusive with imageBase64)"),
|
|
13
|
-
imageBase64: z
|
|
14
|
-
.string()
|
|
15
|
-
.optional()
|
|
16
|
-
.describe("Base64-encoded image binary (mutually exclusive with imageUrl)"),
|
|
17
|
-
contentType: z
|
|
18
|
-
.string()
|
|
19
|
-
.optional()
|
|
20
|
-
.describe("MIME type of the image (e.g. 'image/png', 'image/jpeg'). Recommended when using imageBase64."),
|
|
21
|
-
name: z.string().max(256).optional().describe("Name for the uploaded image"),
|
|
22
|
-
description: z.string().max(4096).optional().describe("Description of the image"),
|
|
23
|
-
formatOptions: z
|
|
24
|
-
.array(z.object({
|
|
25
|
-
format: z.enum(["jpeg", "png", "webp", "avif"]).describe("Output image format"),
|
|
26
|
-
}))
|
|
27
|
-
.optional()
|
|
28
|
-
.describe("Array of output format options. Each creates a variant."),
|
|
29
|
-
resizeOptions: z
|
|
30
|
-
.array(z.object({
|
|
31
|
-
width: z.number().positive().optional().describe("Target width in pixels"),
|
|
32
|
-
height: z.number().positive().optional().describe("Target height in pixels"),
|
|
33
|
-
}))
|
|
34
|
-
.optional()
|
|
35
|
-
.describe("Array of resize options. Each creates a variant. Empty object keeps original size."),
|
|
36
|
-
ratio: z
|
|
37
|
-
.number()
|
|
38
|
-
.positive()
|
|
39
|
-
.optional()
|
|
40
|
-
.describe("Aspect ratio as a number (e.g., 1.777 for 16:9, 1.333 for 4:3)"),
|
|
41
|
-
galleries: z
|
|
42
|
-
.array(z.uuid())
|
|
43
|
-
.optional()
|
|
44
|
-
.describe("Array of gallery IDs to add the image to"),
|
|
45
|
-
bucketKey: z
|
|
46
|
-
.string()
|
|
47
|
-
.optional()
|
|
48
|
-
.describe("Storage bucket key (defaults to primary bucket)"),
|
|
49
|
-
})
|
|
50
|
-
.refine((data) => !!(data.imageUrl ?? data.imageBase64), {
|
|
51
|
-
message: "Either imageUrl or imageBase64 must be provided",
|
|
52
|
-
})
|
|
53
|
-
.refine((data) => !(data.imageUrl && data.imageBase64), {
|
|
54
|
-
message: "imageUrl and imageBase64 are mutually exclusive — provide only one",
|
|
55
|
-
}),
|
|
74
|
+
description: descriptions[transport],
|
|
75
|
+
inputSchema: transport === "stdio" ? stdioSchema : httpSchema,
|
|
56
76
|
}, async (params) => {
|
|
57
77
|
try {
|
|
58
78
|
const result = await client.uploadImage(params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-image.js","sourceRoot":"","sources":["../../src/tools/upload-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-image.js","sourceRoot":"","sources":["../../src/tools/upload-image.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,8 +2,10 @@ export interface SnapixClientConfig {
|
|
|
2
2
|
baseUrl: string;
|
|
3
3
|
apiKey: string;
|
|
4
4
|
}
|
|
5
|
+
export type TransportType = "stdio" | "http";
|
|
5
6
|
export type CreateServerOptions = Omit<SnapixClientConfig, "baseUrl"> & {
|
|
6
7
|
baseUrl?: string;
|
|
8
|
+
transport?: TransportType;
|
|
7
9
|
};
|
|
8
10
|
export interface ListImagesParams {
|
|
9
11
|
page?: number;
|
|
@@ -11,13 +13,14 @@ export interface ListImagesParams {
|
|
|
11
13
|
sort?: "asc" | "desc";
|
|
12
14
|
bucketKey?: string;
|
|
13
15
|
}
|
|
14
|
-
export interface
|
|
16
|
+
export interface ImageSourceParams {
|
|
15
17
|
imageUrl?: string;
|
|
16
18
|
imageBase64?: string;
|
|
19
|
+
imageFilePath?: string;
|
|
17
20
|
imageContentType?: string;
|
|
21
|
+
contentType?: string;
|
|
18
22
|
name?: string;
|
|
19
23
|
description?: string;
|
|
20
|
-
contentType?: string;
|
|
21
24
|
ratio?: number;
|
|
22
25
|
resizeOptions?: Record<string, unknown>[];
|
|
23
26
|
formatOptions?: {
|
|
@@ -26,22 +29,13 @@ export interface UploadImageParams {
|
|
|
26
29
|
}[];
|
|
27
30
|
galleries?: string[];
|
|
28
31
|
bucketKey?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface UploadImageParams extends ImageSourceParams {
|
|
29
34
|
prefix?: string;
|
|
30
35
|
storageKeyHandling?: "unique" | "default";
|
|
31
36
|
}
|
|
32
|
-
export interface GenerateImageParams {
|
|
37
|
+
export interface GenerateImageParams extends ImageSourceParams {
|
|
33
38
|
promptText: string;
|
|
34
|
-
imageUrl?: string;
|
|
35
|
-
name?: string;
|
|
36
|
-
description?: string;
|
|
37
|
-
ratio?: number;
|
|
38
|
-
resizeOptions?: Record<string, unknown>[];
|
|
39
|
-
formatOptions?: {
|
|
40
|
-
format: string;
|
|
41
|
-
options?: Record<string, unknown>;
|
|
42
|
-
}[];
|
|
43
|
-
galleries?: string[];
|
|
44
|
-
bucketKey?: string;
|
|
45
39
|
aiConfig?: Record<string, unknown>;
|
|
46
40
|
}
|
|
47
41
|
export interface UpdateImageParams {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,aAAa,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metalevel/snapix-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"mcpBaseUrl": "https://www.snapix.space",
|
|
5
5
|
"description": "MCP server for SnapiX - image optimization, conversion, generation, and gallery management via the Model Context Protocol",
|
|
6
6
|
"type": "module",
|