@nanogpt/mcp 1.0.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/activeRequests.d.ts +26 -0
- package/dist/activeRequests.d.ts.map +1 -0
- package/dist/activeRequests.js +39 -0
- package/dist/activeRequests.js.map +1 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +136 -0
- package/dist/config.js.map +1 -0
- package/dist/httpClient.d.ts +36 -0
- package/dist/httpClient.d.ts.map +1 -0
- package/dist/httpClient.js +211 -0
- package/dist/httpClient.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +168 -0
- package/dist/index.js.map +1 -0
- package/dist/resources.d.ts +68 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +198 -0
- package/dist/resources.js.map +1 -0
- package/dist/toolUtils.d.ts +115 -0
- package/dist/toolUtils.d.ts.map +1 -0
- package/dist/toolUtils.js +369 -0
- package/dist/toolUtils.js.map +1 -0
- package/dist/tools/balance.d.ts +48 -0
- package/dist/tools/balance.d.ts.map +1 -0
- package/dist/tools/balance.js +78 -0
- package/dist/tools/balance.js.map +1 -0
- package/dist/tools/chat.d.ts +89 -0
- package/dist/tools/chat.d.ts.map +1 -0
- package/dist/tools/chat.js +125 -0
- package/dist/tools/chat.js.map +1 -0
- package/dist/tools/imageGenerate.d.ts +116 -0
- package/dist/tools/imageGenerate.d.ts.map +1 -0
- package/dist/tools/imageGenerate.js +220 -0
- package/dist/tools/imageGenerate.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/listModels.d.ts +149 -0
- package/dist/tools/listModels.d.ts.map +1 -0
- package/dist/tools/listModels.js +224 -0
- package/dist/tools/listModels.js.map +1 -0
- package/dist/tools/scrapeUrls.d.ts +51 -0
- package/dist/tools/scrapeUrls.d.ts.map +1 -0
- package/dist/tools/scrapeUrls.js +100 -0
- package/dist/tools/scrapeUrls.js.map +1 -0
- package/dist/tools/webSearch.d.ts +69 -0
- package/dist/tools/webSearch.d.ts.map +1 -0
- package/dist/tools/webSearch.js +120 -0
- package/dist/tools/webSearch.js.map +1 -0
- package/dist/tools/youtubeTranscribe.d.ts +45 -0
- package/dist/tools/youtubeTranscribe.d.ts.map +1 -0
- package/dist/tools/youtubeTranscribe.js +88 -0
- package/dist/tools/youtubeTranscribe.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* nanogpt_youtube_transcribe tool
|
|
3
|
+
*
|
|
4
|
+
* Get transcripts from YouTube videos.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { requestJson } from '../httpClient.js';
|
|
8
|
+
import { handleToolError, processRawResponse, buildContent, zodToJsonSchema } from '../toolUtils.js';
|
|
9
|
+
// Input schema - max 10 URLs per the spec
|
|
10
|
+
export const inputSchema = z.object({
|
|
11
|
+
urls: z.array(z.string()).min(1).max(10),
|
|
12
|
+
include_raw: z.boolean().optional().default(false),
|
|
13
|
+
});
|
|
14
|
+
// Output schema
|
|
15
|
+
export const outputSchema = z.object({
|
|
16
|
+
transcripts: z.array(z.record(z.unknown())),
|
|
17
|
+
summary: z.record(z.unknown()),
|
|
18
|
+
raw: z.union([z.record(z.unknown()), z.string()]).optional(),
|
|
19
|
+
});
|
|
20
|
+
// JSON Schemas for MCP registration
|
|
21
|
+
export const inputJsonSchema = zodToJsonSchema(inputSchema);
|
|
22
|
+
export const outputJsonSchema = zodToJsonSchema(outputSchema);
|
|
23
|
+
// Tool metadata
|
|
24
|
+
export const name = 'nanogpt_youtube_transcribe';
|
|
25
|
+
export const description = 'Get transcripts from YouTube videos. Supports up to 10 URLs per request.';
|
|
26
|
+
// Annotations
|
|
27
|
+
export const annotations = {
|
|
28
|
+
readOnlyHint: false,
|
|
29
|
+
openWorldHint: true,
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Handler for nanogpt_youtube_transcribe
|
|
33
|
+
*/
|
|
34
|
+
export async function handler(args) {
|
|
35
|
+
try {
|
|
36
|
+
// Validate input
|
|
37
|
+
const input = inputSchema.parse(args);
|
|
38
|
+
// Build request body
|
|
39
|
+
// Build request body
|
|
40
|
+
const requestBody = {
|
|
41
|
+
urls: input.urls,
|
|
42
|
+
};
|
|
43
|
+
// Call NanoGPT API
|
|
44
|
+
const response = await requestJson({
|
|
45
|
+
method: 'POST',
|
|
46
|
+
path: '/api/youtube-transcribe',
|
|
47
|
+
body: requestBody,
|
|
48
|
+
});
|
|
49
|
+
const data = response.json;
|
|
50
|
+
// Build output
|
|
51
|
+
const output = {
|
|
52
|
+
transcripts: data.transcripts || [],
|
|
53
|
+
summary: data.summary || {},
|
|
54
|
+
};
|
|
55
|
+
// Process raw response
|
|
56
|
+
const { raw, resourceLink } = processRawResponse({ status: response.status, headers: response.headers, body: data }, input.include_raw);
|
|
57
|
+
if (raw !== undefined) {
|
|
58
|
+
output.raw = raw;
|
|
59
|
+
}
|
|
60
|
+
// Build human-readable content
|
|
61
|
+
const transcripts = data.transcripts || [];
|
|
62
|
+
const summary = data.summary || {};
|
|
63
|
+
let displayText = `Transcribed ${transcripts.length} video(s):`;
|
|
64
|
+
for (const result of transcripts) {
|
|
65
|
+
if (result.success) {
|
|
66
|
+
displayText += `\n- ${result.url}: ${result.title || 'No title'}`;
|
|
67
|
+
if (result.transcript) {
|
|
68
|
+
const preview = result.transcript.slice(0, 100);
|
|
69
|
+
displayText += ` (${preview}${result.transcript.length > 100 ? '...' : ''})`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
displayText += `\n- ${result.url}: FAILED - ${result.error || 'Unknown error'}`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (summary.successful !== undefined && summary.failed !== undefined) {
|
|
77
|
+
displayText += `\n\nSummary: ${summary.successful} succeeded, ${summary.failed} failed`;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
content: buildContent(displayText, resourceLink),
|
|
81
|
+
structuredContent: output,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
return handleToolError(err);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=youtubeTranscribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtubeTranscribe.js","sourceRoot":"","sources":["../../src/tools/youtubeTranscribe.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nanogpt/mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for NanoGPT API integration",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/Nano-GPT-com/nanogpt-mcp.git"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=22"
|
|
15
|
+
},
|
|
16
|
+
"main": "dist/index.js",
|
|
17
|
+
"bin": {
|
|
18
|
+
"nanogpt-mcp": "dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"prepublishOnly": "npm run build",
|
|
23
|
+
"start": "node dist/index.js",
|
|
24
|
+
"dev": "tsc --watch",
|
|
25
|
+
"test": "node --test tests/*.test.js",
|
|
26
|
+
"typecheck": "tsc --noEmit"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@modelcontextprotocol/sdk": "^1.24.3",
|
|
30
|
+
"zod": "^3.23.8",
|
|
31
|
+
"lru-cache": "^11.0.2"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^22.10.2",
|
|
35
|
+
"typescript": "^5.7.2"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist/**/*"
|
|
39
|
+
],
|
|
40
|
+
"keywords": [
|
|
41
|
+
"mcp",
|
|
42
|
+
"nanogpt",
|
|
43
|
+
"ai",
|
|
44
|
+
"llm",
|
|
45
|
+
"model-context-protocol"
|
|
46
|
+
],
|
|
47
|
+
"license": "MIT"
|
|
48
|
+
}
|