imageforge-mcp 0.3.0 → 0.4.0
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 +294 -41
- package/dist/imageInput.d.ts +33 -3
- package/dist/imageInput.js +259 -54
- package/dist/imageInput.js.map +1 -1
- package/dist/index.d.ts +1 -29
- package/dist/index.js +40 -102
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +43 -0
- package/dist/providers.js +207 -0
- package/dist/providers.js.map +1 -0
- package/package.json +3 -2
package/dist/imageInput.js
CHANGED
|
@@ -1,9 +1,52 @@
|
|
|
1
1
|
import { promises as fs } from "node:fs";
|
|
2
|
-
import { isIP } from "node:net";
|
|
3
2
|
import { lookup } from "node:dns/promises";
|
|
3
|
+
import { BlockList, isIP } from "node:net";
|
|
4
4
|
import path from "node:path";
|
|
5
|
+
import { Agent } from "undici";
|
|
5
6
|
export const MAX_INPUT_IMAGES = 16;
|
|
6
7
|
export const MAX_IMAGE_BYTES = 50 * 1024 * 1024;
|
|
8
|
+
export const MAX_TOTAL_IMAGE_BYTES = 200 * 1024 * 1024;
|
|
9
|
+
export const DEFAULT_INPUT_CONCURRENCY = 4;
|
|
10
|
+
const blockedIpv4Addresses = new BlockList();
|
|
11
|
+
const blockedIpv6Addresses = new BlockList();
|
|
12
|
+
for (const [network, prefix] of [
|
|
13
|
+
["0.0.0.0", 8],
|
|
14
|
+
["10.0.0.0", 8],
|
|
15
|
+
["100.64.0.0", 10],
|
|
16
|
+
["127.0.0.0", 8],
|
|
17
|
+
["169.254.0.0", 16],
|
|
18
|
+
["172.16.0.0", 12],
|
|
19
|
+
["192.0.0.0", 24],
|
|
20
|
+
["192.0.2.0", 24],
|
|
21
|
+
["192.88.99.0", 24],
|
|
22
|
+
["192.168.0.0", 16],
|
|
23
|
+
["198.18.0.0", 15],
|
|
24
|
+
["198.51.100.0", 24],
|
|
25
|
+
["203.0.113.0", 24],
|
|
26
|
+
["224.0.0.0", 4],
|
|
27
|
+
["240.0.0.0", 4],
|
|
28
|
+
]) {
|
|
29
|
+
blockedIpv4Addresses.addSubnet(network, prefix, "ipv4");
|
|
30
|
+
}
|
|
31
|
+
for (const [network, prefix] of [
|
|
32
|
+
["::", 128],
|
|
33
|
+
["::1", 128],
|
|
34
|
+
["::ffff:0:0", 96],
|
|
35
|
+
["64:ff9b::", 96],
|
|
36
|
+
["64:ff9b:1::", 48],
|
|
37
|
+
["100::", 64],
|
|
38
|
+
["100:0:0:1::", 64],
|
|
39
|
+
["2001::", 23],
|
|
40
|
+
["2002::", 16],
|
|
41
|
+
["3fff::", 20],
|
|
42
|
+
["5f00::", 16],
|
|
43
|
+
["fc00::", 7],
|
|
44
|
+
["fe80::", 10],
|
|
45
|
+
["fec0::", 10],
|
|
46
|
+
["ff00::", 8],
|
|
47
|
+
]) {
|
|
48
|
+
blockedIpv6Addresses.addSubnet(network, prefix, "ipv6");
|
|
49
|
+
}
|
|
7
50
|
function detectMimeType(data) {
|
|
8
51
|
if (data.subarray(0, 8).equals(Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]))) {
|
|
9
52
|
return "image/png";
|
|
@@ -33,102 +76,264 @@ function validateImage(data, fileName) {
|
|
|
33
76
|
const baseName = path.basename(fileName, path.extname(fileName)) || "image";
|
|
34
77
|
return { data, mimeType, fileName: `${baseName}${extensionFor(mimeType)}` };
|
|
35
78
|
}
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (
|
|
41
|
-
return
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
79
|
+
export function isPublicAddress(address) {
|
|
80
|
+
const family = isIP(address);
|
|
81
|
+
if (family === 4)
|
|
82
|
+
return !blockedIpv4Addresses.check(address, "ipv4");
|
|
83
|
+
if (family === 6)
|
|
84
|
+
return !blockedIpv6Addresses.check(address, "ipv6");
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
function hostnameForLookup(url) {
|
|
88
|
+
return url.hostname.startsWith("[") && url.hostname.endsWith("]")
|
|
89
|
+
? url.hostname.slice(1, -1)
|
|
90
|
+
: url.hostname;
|
|
91
|
+
}
|
|
92
|
+
const resolveAddresses = async (hostname) => {
|
|
93
|
+
const family = isIP(hostname);
|
|
94
|
+
return family
|
|
95
|
+
? [{ address: hostname, family }]
|
|
96
|
+
: await lookup(hostname, { all: true, verbatim: true });
|
|
97
|
+
};
|
|
98
|
+
function assertRemoteUrl(url) {
|
|
54
99
|
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
55
100
|
throw new Error("Image URLs must use HTTP or HTTPS.");
|
|
56
101
|
}
|
|
57
102
|
if (url.username || url.password) {
|
|
58
103
|
throw new Error("Image URLs must not contain credentials.");
|
|
59
104
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
105
|
+
}
|
|
106
|
+
async function resolvePublicAddresses(url, resolveImpl) {
|
|
107
|
+
assertRemoteUrl(url);
|
|
108
|
+
const addresses = await resolveImpl(hostnameForLookup(url));
|
|
109
|
+
if (addresses.length === 0 ||
|
|
110
|
+
addresses.some(({ address, family }) => family !== isIP(address) || !isPublicAddress(address))) {
|
|
111
|
+
throw new Error(`Image URL host '${url.hostname}' resolves to a non-public address.`);
|
|
65
112
|
}
|
|
113
|
+
return addresses;
|
|
114
|
+
}
|
|
115
|
+
export function createPinnedLookup(addresses) {
|
|
116
|
+
let nextAddress = 0;
|
|
117
|
+
return (_hostname, options, callback) => {
|
|
118
|
+
const requestedFamily = options.family === "IPv4" ? 4 : options.family === "IPv6" ? 6 : options.family;
|
|
119
|
+
const candidates = requestedFamily === 4 || requestedFamily === 6
|
|
120
|
+
? addresses.filter(({ family }) => family === requestedFamily)
|
|
121
|
+
: addresses;
|
|
122
|
+
if (candidates.length === 0) {
|
|
123
|
+
callback(new Error("No validated address matches the requested IP family."), "", 0);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (options.all) {
|
|
127
|
+
callback(null, candidates);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const selected = candidates[nextAddress % candidates.length];
|
|
131
|
+
nextAddress += 1;
|
|
132
|
+
callback(null, selected.address, selected.family);
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function createPinnedDispatcher(addresses) {
|
|
136
|
+
return new Agent({
|
|
137
|
+
connect: { lookup: createPinnedLookup(addresses) },
|
|
138
|
+
autoSelectFamily: addresses.some(({ family }) => family === 4) && addresses.some(({ family }) => family === 6),
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const defaultRemoteFetch = async (input, init) => fetch(input, init);
|
|
142
|
+
function createByteBudget(limit) {
|
|
143
|
+
let used = 0;
|
|
144
|
+
return {
|
|
145
|
+
get remaining() {
|
|
146
|
+
return limit - used;
|
|
147
|
+
},
|
|
148
|
+
reserve(bytes) {
|
|
149
|
+
if (bytes < 0 || used + bytes > limit) {
|
|
150
|
+
throw new Error("Combined input images exceed the 200 MB limit.");
|
|
151
|
+
}
|
|
152
|
+
used += bytes;
|
|
153
|
+
},
|
|
154
|
+
release(bytes) {
|
|
155
|
+
used = Math.max(0, used - bytes);
|
|
156
|
+
},
|
|
157
|
+
};
|
|
66
158
|
}
|
|
67
|
-
async function readLimitedResponse(response) {
|
|
68
|
-
const
|
|
69
|
-
|
|
159
|
+
async function readLimitedResponse(response, budget) {
|
|
160
|
+
const contentLength = response.headers.get("content-length");
|
|
161
|
+
const declaredLength = contentLength === null ? undefined : Number(contentLength);
|
|
162
|
+
if (declaredLength !== undefined && Number.isFinite(declaredLength) && declaredLength > MAX_IMAGE_BYTES) {
|
|
163
|
+
await response.body?.cancel().catch(() => undefined);
|
|
70
164
|
throw new Error("Remote input image exceeds the 50 MB limit.");
|
|
71
165
|
}
|
|
166
|
+
if (declaredLength !== undefined && Number.isFinite(declaredLength) && budget && declaredLength > budget.remaining) {
|
|
167
|
+
await response.body?.cancel().catch(() => undefined);
|
|
168
|
+
throw new Error("Combined input images exceed the 200 MB limit.");
|
|
169
|
+
}
|
|
72
170
|
if (!response.body)
|
|
73
171
|
throw new Error("Remote input image returned an empty response body.");
|
|
74
172
|
const reader = response.body.getReader();
|
|
75
173
|
const chunks = [];
|
|
76
174
|
let total = 0;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
175
|
+
let reservedBytes = 0;
|
|
176
|
+
try {
|
|
177
|
+
while (true) {
|
|
178
|
+
const { done, value } = await reader.read();
|
|
179
|
+
if (done)
|
|
180
|
+
break;
|
|
181
|
+
total += value.byteLength;
|
|
182
|
+
if (total > MAX_IMAGE_BYTES) {
|
|
183
|
+
await reader.cancel();
|
|
184
|
+
throw new Error("Remote input image exceeds the 50 MB limit.");
|
|
185
|
+
}
|
|
186
|
+
budget?.reserve(value.byteLength);
|
|
187
|
+
reservedBytes += value.byteLength;
|
|
188
|
+
chunks.push(value);
|
|
85
189
|
}
|
|
86
|
-
|
|
190
|
+
return { data: Buffer.concat(chunks, total), reservedBytes };
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
await reader.cancel().catch(() => undefined);
|
|
194
|
+
budget?.release(reservedBytes);
|
|
195
|
+
throw error;
|
|
87
196
|
}
|
|
88
|
-
return Buffer.concat(chunks, total);
|
|
89
197
|
}
|
|
90
|
-
export async function loadRemoteImage(source, fetchImpl =
|
|
198
|
+
export async function loadRemoteImage(source, fetchImpl = defaultRemoteFetch, resolveImpl = resolveAddresses, budget, skipDnsSafetyChecks = resolveSkipDnsSafetyChecks()) {
|
|
91
199
|
let current = new URL(source);
|
|
92
200
|
for (let redirects = 0; redirects <= 3; redirects += 1) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
201
|
+
const dispatcher = skipDnsSafetyChecks
|
|
202
|
+
? undefined
|
|
203
|
+
: createPinnedDispatcher(await resolvePublicAddresses(current, resolveImpl));
|
|
204
|
+
if (skipDnsSafetyChecks)
|
|
205
|
+
assertRemoteUrl(current);
|
|
206
|
+
try {
|
|
207
|
+
const response = await fetchImpl(current, {
|
|
208
|
+
redirect: "manual",
|
|
209
|
+
signal: AbortSignal.timeout(30_000),
|
|
210
|
+
...(dispatcher ? { dispatcher } : {}),
|
|
211
|
+
});
|
|
212
|
+
if (response.status >= 300 && response.status < 400) {
|
|
213
|
+
await response.body?.cancel().catch(() => undefined);
|
|
214
|
+
const location = response.headers.get("location");
|
|
215
|
+
if (!location || redirects === 3)
|
|
216
|
+
throw new Error("Remote input image has too many redirects.");
|
|
217
|
+
current = new URL(location, current);
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
if (!response.ok) {
|
|
221
|
+
await response.body?.cancel().catch(() => undefined);
|
|
222
|
+
throw new Error(`Failed to download input image (${response.status} ${response.statusText}).`);
|
|
223
|
+
}
|
|
224
|
+
const loaded = await readLimitedResponse(response, budget);
|
|
225
|
+
try {
|
|
226
|
+
return validateImage(loaded.data, path.basename(current.pathname) || "remote-image");
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
budget?.release(loaded.reservedBytes);
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
101
232
|
}
|
|
102
|
-
|
|
103
|
-
|
|
233
|
+
finally {
|
|
234
|
+
await dispatcher?.close();
|
|
104
235
|
}
|
|
105
|
-
const data = await readLimitedResponse(response);
|
|
106
|
-
return validateImage(data, path.basename(current.pathname) || "remote-image");
|
|
107
236
|
}
|
|
108
237
|
throw new Error("Remote input image has too many redirects.");
|
|
109
238
|
}
|
|
110
|
-
export async function loadLocalImage(source) {
|
|
239
|
+
export async function loadLocalImage(source, budget) {
|
|
111
240
|
if (!path.isAbsolute(source)) {
|
|
112
241
|
throw new Error(`Local image path must be absolute: '${source}'.`);
|
|
113
242
|
}
|
|
114
243
|
const handle = await fs.open(source, "r");
|
|
244
|
+
let reservedBytes = 0;
|
|
115
245
|
try {
|
|
116
246
|
const stats = await handle.stat();
|
|
117
247
|
if (!stats.isFile())
|
|
118
248
|
throw new Error(`Input image is not a regular file: '${source}'.`);
|
|
119
249
|
if (stats.size > MAX_IMAGE_BYTES)
|
|
120
250
|
throw new Error(`Input image '${source}' exceeds the 50 MB limit.`);
|
|
121
|
-
|
|
251
|
+
if (budget && stats.size > budget.remaining)
|
|
252
|
+
throw new Error("Combined input images exceed the 200 MB limit.");
|
|
253
|
+
budget?.reserve(stats.size);
|
|
254
|
+
reservedBytes = stats.size;
|
|
255
|
+
const data = await handle.readFile();
|
|
256
|
+
if (data.length > reservedBytes) {
|
|
257
|
+
budget?.reserve(data.length - reservedBytes);
|
|
258
|
+
}
|
|
259
|
+
else if (data.length < reservedBytes) {
|
|
260
|
+
budget?.release(reservedBytes - data.length);
|
|
261
|
+
}
|
|
262
|
+
reservedBytes = data.length;
|
|
263
|
+
return validateImage(data, path.basename(source));
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
budget?.release(reservedBytes);
|
|
267
|
+
throw error;
|
|
122
268
|
}
|
|
123
269
|
finally {
|
|
124
270
|
await handle.close();
|
|
125
271
|
}
|
|
126
272
|
}
|
|
127
|
-
export
|
|
273
|
+
export function resolveInputConcurrency(value = process.env.IMAGEFORGE_INPUT_CONCURRENCY) {
|
|
274
|
+
if (value === undefined || String(value).trim() === "")
|
|
275
|
+
return DEFAULT_INPUT_CONCURRENCY;
|
|
276
|
+
const normalized = String(value).trim();
|
|
277
|
+
if (!/^\d+$/.test(normalized) || Number(normalized) < 1) {
|
|
278
|
+
throw new Error("IMAGEFORGE_INPUT_CONCURRENCY must be a positive integer.");
|
|
279
|
+
}
|
|
280
|
+
return Math.min(Number(normalized), MAX_INPUT_IMAGES);
|
|
281
|
+
}
|
|
282
|
+
export function resolveSkipDnsSafetyChecks(value = process.env.IMAGEFORGE_SKIP_DNS_SAFETY_CHECKS) {
|
|
283
|
+
if (value === undefined || String(value).trim() === "")
|
|
284
|
+
return false;
|
|
285
|
+
if (typeof value === "boolean")
|
|
286
|
+
return value;
|
|
287
|
+
switch (value.trim().toLowerCase()) {
|
|
288
|
+
case "1":
|
|
289
|
+
case "true":
|
|
290
|
+
case "yes":
|
|
291
|
+
case "on":
|
|
292
|
+
return true;
|
|
293
|
+
case "0":
|
|
294
|
+
case "false":
|
|
295
|
+
case "no":
|
|
296
|
+
case "off":
|
|
297
|
+
return false;
|
|
298
|
+
default:
|
|
299
|
+
throw new Error("IMAGEFORGE_SKIP_DNS_SAFETY_CHECKS must be true/false, 1/0, yes/no, or on/off.");
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
export async function loadImages(sources, options = {}) {
|
|
128
303
|
if (sources.length === 0)
|
|
129
304
|
throw new Error("At least one input image is required.");
|
|
130
305
|
if (sources.length > MAX_INPUT_IMAGES)
|
|
131
306
|
throw new Error("A maximum of 16 input images is supported.");
|
|
132
|
-
|
|
307
|
+
const concurrency = resolveInputConcurrency(options.concurrency);
|
|
308
|
+
const skipDnsSafetyChecks = options.skipDnsSafetyChecks ?? resolveSkipDnsSafetyChecks();
|
|
309
|
+
const maxTotalBytes = Math.min(options.maxTotalBytes ?? MAX_TOTAL_IMAGE_BYTES, MAX_TOTAL_IMAGE_BYTES);
|
|
310
|
+
if (!Number.isSafeInteger(maxTotalBytes) || maxTotalBytes < 1) {
|
|
311
|
+
throw new Error("The total input image byte limit must be a positive integer.");
|
|
312
|
+
}
|
|
313
|
+
const budget = createByteBudget(maxTotalBytes);
|
|
314
|
+
const results = new Array(sources.length);
|
|
315
|
+
let nextIndex = 0;
|
|
316
|
+
let firstError;
|
|
317
|
+
const worker = async () => {
|
|
318
|
+
while (firstError === undefined) {
|
|
319
|
+
const index = nextIndex;
|
|
320
|
+
nextIndex += 1;
|
|
321
|
+
if (index >= sources.length)
|
|
322
|
+
return;
|
|
323
|
+
const source = sources[index];
|
|
324
|
+
try {
|
|
325
|
+
results[index] = /^https?:\/\//i.test(source)
|
|
326
|
+
? await loadRemoteImage(source, options.fetchImpl, options.resolveImpl, budget, skipDnsSafetyChecks)
|
|
327
|
+
: await loadLocalImage(source, budget);
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
firstError ??= error;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
await Promise.all(Array.from({ length: Math.min(concurrency, sources.length) }, worker));
|
|
335
|
+
if (firstError !== undefined)
|
|
336
|
+
throw firstError;
|
|
337
|
+
return results;
|
|
133
338
|
}
|
|
134
339
|
//# sourceMappingURL=imageInput.js.map
|
package/dist/imageInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageInput.js","sourceRoot":"","sources":["../src/imageInput.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"imageInput.js","sourceRoot":"","sources":["../src/imageInput.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,33 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { type LoadedImage } from "./imageInput.js";
|
|
5
|
-
declare const qualitySchema: z.ZodEnum<["auto", "low", "medium", "high"]>;
|
|
6
|
-
declare const outputFormatSchema: z.ZodEnum<["png", "jpeg", "webp"]>;
|
|
7
|
-
export interface ImageConfig {
|
|
8
|
-
apiKey: string;
|
|
9
|
-
baseUrl: string;
|
|
10
|
-
model: string;
|
|
11
|
-
}
|
|
12
|
-
export interface ImageGenerationResponse {
|
|
13
|
-
data?: Array<{
|
|
14
|
-
b64_json?: string;
|
|
15
|
-
}>;
|
|
16
|
-
}
|
|
17
|
-
export declare function resolveConfig(input: {
|
|
18
|
-
apiKey?: string;
|
|
19
|
-
baseUrl?: string;
|
|
20
|
-
model?: string;
|
|
21
|
-
}): ImageConfig;
|
|
22
|
-
export declare function requestImage(input: {
|
|
23
|
-
prompt: string;
|
|
24
|
-
config: ImageConfig;
|
|
25
|
-
size: string;
|
|
26
|
-
quality: z.infer<typeof qualitySchema>;
|
|
27
|
-
outputFormat: z.infer<typeof outputFormatSchema>;
|
|
28
|
-
inputImages?: LoadedImage[];
|
|
29
|
-
fetchImpl?: typeof fetch;
|
|
30
|
-
}): Promise<Buffer>;
|
|
31
3
|
export declare function saveImage(image: Buffer, outputPath: string): Promise<string>;
|
|
32
4
|
export declare function createServer(): McpServer;
|
|
33
|
-
export
|
|
5
|
+
export declare function isMainModule(entryPath?: string | undefined, moduleUrl?: string): boolean;
|