@nanogpt/mcp 1.1.6 → 1.3.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/dist/config.d.ts +5 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +22 -19
- package/dist/config.js.map +1 -1
- package/dist/httpClient.d.ts +13 -0
- package/dist/httpClient.d.ts.map +1 -1
- package/dist/httpClient.js +94 -4
- package/dist/httpClient.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -3
- package/dist/index.js.map +1 -1
- package/dist/resources.d.ts +9 -2
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +14 -5
- package/dist/resources.js.map +1 -1
- package/dist/tools/applicationScrapers.d.ts +922 -0
- package/dist/tools/applicationScrapers.d.ts.map +1 -0
- package/dist/tools/applicationScrapers.js +306 -0
- package/dist/tools/applicationScrapers.js.map +1 -0
- package/dist/tools/chat.d.ts.map +1 -1
- package/dist/tools/chat.js +4 -1
- package/dist/tools/chat.js.map +1 -1
- package/dist/tools/generationExtras.d.ts +432 -0
- package/dist/tools/generationExtras.d.ts.map +1 -0
- package/dist/tools/generationExtras.js +419 -0
- package/dist/tools/generationExtras.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/listModels.d.ts +2 -2
- package/dist/tools/researchTools.d.ts +88 -0
- package/dist/tools/researchTools.d.ts.map +1 -0
- package/dist/tools/researchTools.js +241 -0
- package/dist/tools/researchTools.js.map +1 -0
- package/dist/tools/webSearch.d.ts +100 -5
- package/dist/tools/webSearch.d.ts.map +1 -1
- package/dist/tools/webSearch.js +143 -8
- package/dist/tools/webSearch.js.map +1 -1
- package/package.json +11 -2
package/dist/config.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration management for NanoGPT MCP server
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* All configuration is read from environment variables.
|
|
5
5
|
* API keys are never logged or exposed.
|
|
6
6
|
*/
|
|
7
|
+
export type AuthMode = 'bearer' | 'x-api-key' | 'both';
|
|
7
8
|
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
8
9
|
export interface Config {
|
|
9
10
|
baseUrl: string;
|
|
10
11
|
apiKey: string;
|
|
12
|
+
authMode: AuthMode;
|
|
11
13
|
timeoutMs: number;
|
|
12
14
|
maxRetries: number;
|
|
13
|
-
defaultModel
|
|
15
|
+
defaultModel?: string;
|
|
14
16
|
visionModel: string;
|
|
15
17
|
logLevel: LogLevel;
|
|
16
18
|
maxInlineJsonChars: number;
|
|
@@ -20,7 +22,7 @@ export interface Config {
|
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* Validate and load configuration from environment variables.
|
|
23
|
-
*
|
|
25
|
+
* Fails fast with clear error messages (never prints API key).
|
|
24
26
|
*/
|
|
25
27
|
export declare function loadConfig(): Config;
|
|
26
28
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAID;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA6EnC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAWD;;GAEG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAsB1F"}
|
package/dist/config.js
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration management for NanoGPT MCP server
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* All configuration is read from environment variables.
|
|
5
5
|
* API keys are never logged or exposed.
|
|
6
6
|
*/
|
|
7
|
-
/** Default base URL for NanoGPT API (can be overridden via env) */
|
|
8
|
-
const DEFAULT_NANOGPT_BASE_URL = 'https://nano-gpt.com';
|
|
9
7
|
let config = null;
|
|
10
8
|
/**
|
|
11
9
|
* Validate and load configuration from environment variables.
|
|
12
|
-
*
|
|
10
|
+
* Fails fast with clear error messages (never prints API key).
|
|
13
11
|
*/
|
|
14
12
|
export function loadConfig() {
|
|
13
|
+
const baseUrl = process.env.NANOGPT_BASE_URL || 'https://nano-gpt.com';
|
|
15
14
|
const apiKey = process.env.NANOGPT_API_KEY;
|
|
16
|
-
// Required
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
// Required variables
|
|
16
|
+
const missing = [];
|
|
17
|
+
if (!apiKey)
|
|
18
|
+
missing.push('NANOGPT_API_KEY');
|
|
19
|
+
if (missing.length > 0) {
|
|
20
|
+
throw new Error(`Missing required environment variables: ${missing.join(', ')}`);
|
|
19
21
|
}
|
|
22
|
+
// Validate auth mode
|
|
23
|
+
const authModeRaw = process.env.NANOGPT_AUTH_MODE || 'bearer';
|
|
24
|
+
if (!['bearer', 'x-api-key', 'both'].includes(authModeRaw)) {
|
|
25
|
+
throw new Error(`Invalid NANOGPT_AUTH_MODE: ${authModeRaw}. Must be: bearer, x-api-key, or both`);
|
|
26
|
+
}
|
|
27
|
+
const authMode = authModeRaw;
|
|
20
28
|
// Validate log level
|
|
21
29
|
const logLevelRaw = process.env.NANOGPT_LOG_LEVEL || 'info';
|
|
22
30
|
if (!['debug', 'info', 'warn', 'error'].includes(logLevelRaw)) {
|
|
@@ -24,16 +32,16 @@ export function loadConfig() {
|
|
|
24
32
|
}
|
|
25
33
|
const logLevel = logLevelRaw;
|
|
26
34
|
// Parse numeric values with defaults
|
|
27
|
-
|
|
28
|
-
const timeoutMs = parseIntWithDefault(process.env.NANOGPT_TIMEOUT_MS, 600000);
|
|
35
|
+
const timeoutMs = parseIntWithDefault(process.env.NANOGPT_TIMEOUT_MS, 120000);
|
|
29
36
|
if (timeoutMs <= 0) {
|
|
30
37
|
throw new Error(`NANOGPT_TIMEOUT_MS must be positive, got: ${timeoutMs}`);
|
|
31
38
|
}
|
|
32
|
-
// Default: no retries (0) - paid endpoints should not auto-retry
|
|
33
39
|
const maxRetries = parseIntWithDefault(process.env.NANOGPT_MAX_RETRIES, 0);
|
|
34
40
|
if (maxRetries < 0) {
|
|
35
41
|
throw new Error(`NANOGPT_MAX_RETRIES must be non-negative, got: ${maxRetries}`);
|
|
36
42
|
}
|
|
43
|
+
const visionModelRaw = process.env.NANOGPT_VISION_MODEL;
|
|
44
|
+
const visionModel = visionModelRaw && visionModelRaw.trim().length > 0 ? visionModelRaw.trim() : 'Qwen/Qwen3-VL-235B-A22B-Instruct';
|
|
37
45
|
const maxInlineJsonChars = parseIntWithDefault(process.env.NANOGPT_MAX_INLINE_JSON_CHARS, 10000);
|
|
38
46
|
if (maxInlineJsonChars <= 0) {
|
|
39
47
|
throw new Error(`NANOGPT_MAX_INLINE_JSON_CHARS must be positive, got: ${maxInlineJsonChars}`);
|
|
@@ -50,18 +58,13 @@ export function loadConfig() {
|
|
|
50
58
|
if (scrapeMaxUrls <= 0) {
|
|
51
59
|
throw new Error(`NANOGPT_SCRAPE_MAX_URLS must be positive, got: ${scrapeMaxUrls}`);
|
|
52
60
|
}
|
|
53
|
-
// Base URL: allow override for testing/dev
|
|
54
|
-
const baseUrl = process.env.NANOGPT_BASE_URL || DEFAULT_NANOGPT_BASE_URL;
|
|
55
|
-
// Default model: Claude Sonnet 4.5
|
|
56
|
-
const defaultModel = process.env.NANOGPT_DEFAULT_MODEL || 'claude-sonnet-4-5-20250929';
|
|
57
|
-
// Vision model: default to Qwen VL
|
|
58
|
-
const visionModel = process.env.NANOGPT_VISION_MODEL || 'Qwen/Qwen3-VL-235B-A22B-Instruct';
|
|
59
61
|
config = {
|
|
60
|
-
baseUrl,
|
|
61
|
-
apiKey,
|
|
62
|
+
baseUrl: baseUrl.replace(/\/$/, ''), // Remove trailing slash
|
|
63
|
+
apiKey: apiKey,
|
|
64
|
+
authMode,
|
|
62
65
|
timeoutMs,
|
|
63
66
|
maxRetries,
|
|
64
|
-
defaultModel,
|
|
67
|
+
defaultModel: process.env.NANOGPT_DEFAULT_MODEL,
|
|
65
68
|
visionModel,
|
|
66
69
|
logLevel,
|
|
67
70
|
maxInlineJsonChars,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/httpClient.d.ts
CHANGED
|
@@ -14,6 +14,12 @@ export interface HttpResponse<T = unknown> {
|
|
|
14
14
|
headers: Record<string, string>;
|
|
15
15
|
json: T;
|
|
16
16
|
}
|
|
17
|
+
export interface RawHttpResponse {
|
|
18
|
+
status: number;
|
|
19
|
+
headers: Record<string, string>;
|
|
20
|
+
body: Buffer;
|
|
21
|
+
contentType: string;
|
|
22
|
+
}
|
|
17
23
|
export interface RequestOptions {
|
|
18
24
|
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
19
25
|
path: string;
|
|
@@ -21,10 +27,17 @@ export interface RequestOptions {
|
|
|
21
27
|
query?: Record<string, string>;
|
|
22
28
|
timeoutMs?: number;
|
|
23
29
|
}
|
|
30
|
+
export interface RawRequestOptions extends RequestOptions {
|
|
31
|
+
accept?: string;
|
|
32
|
+
}
|
|
24
33
|
/**
|
|
25
34
|
* Make an HTTP request to NanoGPT
|
|
26
35
|
*/
|
|
27
36
|
export declare function requestJson<T = unknown>({ method, path, body, query, timeoutMs, }: RequestOptions): Promise<HttpResponse<T>>;
|
|
37
|
+
/**
|
|
38
|
+
* Make an HTTP request to NanoGPT and return raw bytes.
|
|
39
|
+
*/
|
|
40
|
+
export declare function requestRaw({ method, path, body, query, timeoutMs, accept, }: RawRequestOptions): Promise<RawHttpResponse>;
|
|
28
41
|
/**
|
|
29
42
|
* Type guard for HttpError
|
|
30
43
|
*/
|
package/dist/httpClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgDD;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,EAC7C,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,SAAS,GACV,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAsH3C;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,SAAS,EACT,MAAM,GACP,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgF9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAS1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CA6BzD"}
|
package/dist/httpClient.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { getConfig } from './config.js';
|
|
8
8
|
import { registerRequest, unregisterRequest } from './activeRequests.js';
|
|
9
|
+
import { fetch as undiciFetch } from 'undici';
|
|
9
10
|
// Safe headers to expose in raw responses
|
|
10
11
|
const SAFE_RESPONSE_HEADERS = [
|
|
11
12
|
'x-request-id',
|
|
@@ -64,6 +65,7 @@ function extractErrorMessage(json) {
|
|
|
64
65
|
export async function requestJson({ method, path, body, query, timeoutMs, }) {
|
|
65
66
|
const config = getConfig();
|
|
66
67
|
const timeout = timeoutMs ?? config.timeoutMs;
|
|
68
|
+
const fetchImpl = (globalThis.fetch ?? undiciFetch);
|
|
67
69
|
// Build URL
|
|
68
70
|
const url = new URL(path, config.baseUrl);
|
|
69
71
|
if (query) {
|
|
@@ -71,19 +73,26 @@ export async function requestJson({ method, path, body, query, timeoutMs, }) {
|
|
|
71
73
|
url.searchParams.set(key, value);
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
|
-
// Build headers
|
|
76
|
+
// Build headers
|
|
75
77
|
const headers = {
|
|
76
78
|
'Content-Type': 'application/json',
|
|
77
|
-
'User-Agent': `@nanogpt/mcp/1.
|
|
78
|
-
'Authorization': `Bearer ${config.apiKey}`,
|
|
79
|
+
'User-Agent': `@nanogpt/mcp/1.3.0`,
|
|
79
80
|
};
|
|
81
|
+
// Add auth headers based on mode
|
|
82
|
+
const authMode = config.authMode;
|
|
83
|
+
if (authMode === 'bearer' || authMode === 'both') {
|
|
84
|
+
headers['Authorization'] = `Bearer ${config.apiKey}`;
|
|
85
|
+
}
|
|
86
|
+
if (authMode === 'x-api-key' || authMode === 'both') {
|
|
87
|
+
headers['x-api-key'] = config.apiKey;
|
|
88
|
+
}
|
|
80
89
|
// Setup abort controller for timeout and graceful shutdown
|
|
81
90
|
const controller = new AbortController();
|
|
82
91
|
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
83
92
|
// Register controller for graceful shutdown support
|
|
84
93
|
registerRequest(controller);
|
|
85
94
|
try {
|
|
86
|
-
const response = await
|
|
95
|
+
const response = await fetchImpl(url.toString(), {
|
|
87
96
|
method,
|
|
88
97
|
headers,
|
|
89
98
|
body: body ? JSON.stringify(body) : undefined,
|
|
@@ -159,6 +168,87 @@ export async function requestJson({ method, path, body, query, timeoutMs, }) {
|
|
|
159
168
|
unregisterRequest(controller);
|
|
160
169
|
}
|
|
161
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Make an HTTP request to NanoGPT and return raw bytes.
|
|
173
|
+
*/
|
|
174
|
+
export async function requestRaw({ method, path, body, query, timeoutMs, accept, }) {
|
|
175
|
+
const config = getConfig();
|
|
176
|
+
const timeout = timeoutMs ?? config.timeoutMs;
|
|
177
|
+
const fetchImpl = (globalThis.fetch ?? undiciFetch);
|
|
178
|
+
const url = new URL(path, config.baseUrl);
|
|
179
|
+
if (query) {
|
|
180
|
+
for (const [key, value] of Object.entries(query)) {
|
|
181
|
+
url.searchParams.set(key, value);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const headers = {
|
|
185
|
+
'Content-Type': 'application/json',
|
|
186
|
+
'User-Agent': `@nanogpt/mcp/1.3.0`,
|
|
187
|
+
};
|
|
188
|
+
if (accept)
|
|
189
|
+
headers.Accept = accept;
|
|
190
|
+
const authMode = config.authMode;
|
|
191
|
+
if (authMode === 'bearer' || authMode === 'both') {
|
|
192
|
+
headers.Authorization = `Bearer ${config.apiKey}`;
|
|
193
|
+
}
|
|
194
|
+
if (authMode === 'x-api-key' || authMode === 'both') {
|
|
195
|
+
headers['x-api-key'] = config.apiKey;
|
|
196
|
+
}
|
|
197
|
+
const controller = new AbortController();
|
|
198
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
199
|
+
registerRequest(controller);
|
|
200
|
+
try {
|
|
201
|
+
const response = await fetchImpl(url.toString(), {
|
|
202
|
+
method,
|
|
203
|
+
headers,
|
|
204
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
205
|
+
signal: controller.signal,
|
|
206
|
+
});
|
|
207
|
+
const safeHeaders = extractSafeHeaders(response.headers);
|
|
208
|
+
const contentType = response.headers.get('content-type') || 'application/octet-stream';
|
|
209
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
210
|
+
clearTimeout(timeoutId);
|
|
211
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
212
|
+
if (!response.ok) {
|
|
213
|
+
let parsed = null;
|
|
214
|
+
const text = buffer.toString('utf-8');
|
|
215
|
+
if (contentType.includes('application/json')) {
|
|
216
|
+
try {
|
|
217
|
+
parsed = JSON.parse(text);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
parsed = { text };
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
parsed = { text };
|
|
225
|
+
}
|
|
226
|
+
throw {
|
|
227
|
+
status: response.status,
|
|
228
|
+
message: extractErrorMessage(parsed),
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
status: response.status,
|
|
233
|
+
headers: safeHeaders,
|
|
234
|
+
body: buffer,
|
|
235
|
+
contentType,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
catch (err) {
|
|
239
|
+
clearTimeout(timeoutId);
|
|
240
|
+
if (err instanceof Error && err.name === 'AbortError') {
|
|
241
|
+
throw {
|
|
242
|
+
status: 408,
|
|
243
|
+
message: 'Request timed out',
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
throw err;
|
|
247
|
+
}
|
|
248
|
+
finally {
|
|
249
|
+
unregisterRequest(controller);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
162
252
|
/**
|
|
163
253
|
* Type guard for HttpError
|
|
164
254
|
*/
|
package/dist/httpClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
* - Image generation
|
|
8
8
|
* - Web search
|
|
9
9
|
* - URL scraping
|
|
10
|
+
* - Application scrapers
|
|
11
|
+
* - X Research and Hunter data tools
|
|
12
|
+
* - Embeddings, audio, image editing, AI QR, and AI detection
|
|
10
13
|
* - YouTube transcription
|
|
11
14
|
* - Model listing
|
|
12
15
|
*
|
|
@@ -19,7 +22,7 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
19
22
|
import { loadConfig, log } from './config.js';
|
|
20
23
|
import { read, clearCache } from './resources.js';
|
|
21
24
|
import { abortAllRequests, getActiveRequestCount } from './activeRequests.js';
|
|
22
|
-
import { balance, chat, imageGenerate, vision, webSearch, scrapeUrls, youtubeTranscribe, listTextModels, listImageModels, listAudioModels, listVideoModels, } from './tools/index.js';
|
|
25
|
+
import { balance, chat, imageGenerate, vision, webSearch, scrapeUrls, googleMaps, googleMapsReviews, instagramPosts, tiktok, hunter, xResearch, aiDetection, aiQr, audioTranscribe, embeddings, imageEdit, textToSpeech, youtubeTranscribe, listTextModels, listImageModels, listAudioModels, listVideoModels, } from './tools/index.js';
|
|
23
26
|
/**
|
|
24
27
|
* Main entry point
|
|
25
28
|
*/
|
|
@@ -30,7 +33,7 @@ async function main() {
|
|
|
30
33
|
// Create MCP server
|
|
31
34
|
const server = new McpServer({
|
|
32
35
|
name: 'nanogpt-mcp',
|
|
33
|
-
version: '1.
|
|
36
|
+
version: '1.3.0',
|
|
34
37
|
});
|
|
35
38
|
// Register tools
|
|
36
39
|
registerTools(server);
|
|
@@ -54,6 +57,18 @@ function registerTools(server) {
|
|
|
54
57
|
vision,
|
|
55
58
|
webSearch,
|
|
56
59
|
scrapeUrls,
|
|
60
|
+
googleMaps,
|
|
61
|
+
googleMapsReviews,
|
|
62
|
+
instagramPosts,
|
|
63
|
+
tiktok,
|
|
64
|
+
hunter,
|
|
65
|
+
xResearch,
|
|
66
|
+
aiDetection,
|
|
67
|
+
aiQr,
|
|
68
|
+
audioTranscribe,
|
|
69
|
+
embeddings,
|
|
70
|
+
imageEdit,
|
|
71
|
+
textToSpeech,
|
|
57
72
|
youtubeTranscribe,
|
|
58
73
|
listTextModels,
|
|
59
74
|
listImageModels,
|
|
@@ -65,6 +80,7 @@ function registerTools(server) {
|
|
|
65
80
|
description: tool.description,
|
|
66
81
|
// MCP SDK v1.23+ accepts Zod schemas and converts to JSON Schema internally
|
|
67
82
|
inputSchema: tool.inputSchema,
|
|
83
|
+
annotations: tool.annotations,
|
|
68
84
|
}, tool.handler);
|
|
69
85
|
}
|
|
70
86
|
log('info', `Registered ${tools.length} tools`);
|
|
@@ -131,7 +147,36 @@ function registerResources(server) {
|
|
|
131
147
|
],
|
|
132
148
|
};
|
|
133
149
|
});
|
|
134
|
-
|
|
150
|
+
// Resource template for generated media (audio/video)
|
|
151
|
+
const mediaTemplate = new ResourceTemplate('nanogpt://media/{id}', { list: undefined });
|
|
152
|
+
server.registerResource('nanogpt-media', mediaTemplate, {
|
|
153
|
+
description: 'Media generated by NanoGPT',
|
|
154
|
+
mimeType: 'application/octet-stream',
|
|
155
|
+
}, async (uri, _variables) => {
|
|
156
|
+
const uriString = uri.toString();
|
|
157
|
+
const result = read(uriString);
|
|
158
|
+
if (!result || !result.blob) {
|
|
159
|
+
return {
|
|
160
|
+
contents: [
|
|
161
|
+
{
|
|
162
|
+
uri: uriString,
|
|
163
|
+
mimeType: 'text/plain',
|
|
164
|
+
text: `Resource not found (may have been evicted): ${uriString}`,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
contents: [
|
|
171
|
+
{
|
|
172
|
+
uri: uriString,
|
|
173
|
+
mimeType: result.mimeType,
|
|
174
|
+
blob: result.blob,
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
log('info', 'Registered resource handlers for nanogpt://raw/*, nanogpt://image/*, and nanogpt://media/*');
|
|
135
180
|
}
|
|
136
181
|
/**
|
|
137
182
|
* Setup graceful shutdown handlers
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/resources.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-memory LRU resource cache for NanoGPT MCP server
|
|
3
3
|
*
|
|
4
|
-
* Stores large payloads (images, raw JSON) that are too big to inline.
|
|
4
|
+
* Stores large payloads (images, media, raw JSON) that are too big to inline.
|
|
5
5
|
* Resources are ephemeral and will be evicted when the cache is full.
|
|
6
6
|
*/
|
|
7
|
-
export type ResourceType = 'raw' | 'image';
|
|
7
|
+
export type ResourceType = 'raw' | 'image' | 'media';
|
|
8
8
|
/**
|
|
9
9
|
* Generate a resource URI
|
|
10
10
|
*/
|
|
@@ -30,6 +30,13 @@ export declare function putBlob(buffer: Buffer, mimeType: string): {
|
|
|
30
30
|
uri: string;
|
|
31
31
|
bytes: number;
|
|
32
32
|
} | null;
|
|
33
|
+
/**
|
|
34
|
+
* Store binary media data as a resource
|
|
35
|
+
*/
|
|
36
|
+
export declare function putMediaBlob(buffer: Buffer, mimeType: string): {
|
|
37
|
+
uri: string;
|
|
38
|
+
bytes: number;
|
|
39
|
+
} | null;
|
|
33
40
|
/**
|
|
34
41
|
* Store base64-encoded image data
|
|
35
42
|
*/
|
package/dist/resources.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AAerD;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO/E;AAwBD;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA2B,GACpC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BvC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAE/F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAEpG;AAqCD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgCvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAqB3D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAYtF;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CASrE"}
|
package/dist/resources.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-memory LRU resource cache for NanoGPT MCP server
|
|
3
3
|
*
|
|
4
|
-
* Stores large payloads (images, raw JSON) that are too big to inline.
|
|
4
|
+
* Stores large payloads (images, media, raw JSON) that are too big to inline.
|
|
5
5
|
* Resources are ephemeral and will be evicted when the cache is full.
|
|
6
6
|
*/
|
|
7
7
|
import { randomUUID } from 'crypto';
|
|
@@ -19,7 +19,7 @@ export function makeUri(type, id) {
|
|
|
19
19
|
* Parse a resource URI
|
|
20
20
|
*/
|
|
21
21
|
export function parseUri(uri) {
|
|
22
|
-
const match = uri.match(/^nanogpt:\/\/(raw|image)\/([a-f0-9-]+)$/);
|
|
22
|
+
const match = uri.match(/^nanogpt:\/\/(raw|image|media)\/([a-f0-9-]+)$/);
|
|
23
23
|
if (!match)
|
|
24
24
|
return null;
|
|
25
25
|
return {
|
|
@@ -79,6 +79,15 @@ export function putRawText(text, mimeType = 'application/json') {
|
|
|
79
79
|
* Store binary data (image) as a resource
|
|
80
80
|
*/
|
|
81
81
|
export function putBlob(buffer, mimeType) {
|
|
82
|
+
return putBinaryBlob(buffer, mimeType, 'image');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Store binary media data as a resource
|
|
86
|
+
*/
|
|
87
|
+
export function putMediaBlob(buffer, mimeType) {
|
|
88
|
+
return putBinaryBlob(buffer, mimeType, 'media');
|
|
89
|
+
}
|
|
90
|
+
function putBinaryBlob(buffer, mimeType, type) {
|
|
82
91
|
const config = getConfig();
|
|
83
92
|
// Convert to base64 first, then check size limit against actual stored size
|
|
84
93
|
// (base64 encoding expands data by ~33%)
|
|
@@ -93,7 +102,7 @@ export function putBlob(buffer, mimeType) {
|
|
|
93
102
|
const id = randomUUID();
|
|
94
103
|
const entry = {
|
|
95
104
|
id,
|
|
96
|
-
type
|
|
105
|
+
type,
|
|
97
106
|
mimeType,
|
|
98
107
|
data: base64Data,
|
|
99
108
|
bytes: storedBytes,
|
|
@@ -102,7 +111,7 @@ export function putBlob(buffer, mimeType) {
|
|
|
102
111
|
cache.set(id, entry);
|
|
103
112
|
updateAccessOrder(id);
|
|
104
113
|
return {
|
|
105
|
-
uri: makeUri(
|
|
114
|
+
uri: makeUri(type, id),
|
|
106
115
|
bytes: storedBytes,
|
|
107
116
|
};
|
|
108
117
|
}
|
|
@@ -169,7 +178,7 @@ export function listResources() {
|
|
|
169
178
|
for (const [id, entry] of cache.entries()) {
|
|
170
179
|
result.push({
|
|
171
180
|
uri: makeUri(entry.type, id),
|
|
172
|
-
name: entry.type === 'raw' ? 'Raw response' : 'Generated image',
|
|
181
|
+
name: entry.type === 'raw' ? 'Raw response' : entry.type === 'image' ? 'Generated image' : 'Generated media',
|
|
173
182
|
mimeType: entry.mimeType,
|
|
174
183
|
});
|
|
175
184
|
}
|
package/dist/resources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAaxC,sBAAsB;AACtB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;AAC/C,MAAM,WAAW,GAAa,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAkB,EAAE,EAAU;IACpD,OAAO,aAAa,IAAI,IAAI,EAAE,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|