@nanogpt/mcp 1.1.4 → 1.1.5

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.
@@ -1,155 +0,0 @@
1
- /**
2
- * nanogpt_vision tool
3
- *
4
- * Analyze images with a vision-capable model (default: zai-org/glm-4.6v).
5
- */
6
- import { z } from 'zod';
7
- import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
8
- import { requestJson } from '../httpClient.js';
9
- import { getConfig } from '../config.js';
10
- import { handleToolError, processRawResponse, buildContent, zodToJsonSchema } from '../toolUtils.js';
11
- // Input schema
12
- export const inputSchema = z.object({
13
- prompt: z.string().min(1),
14
- image_url: z.string().min(1).optional(),
15
- image_urls: z.array(z.string().min(1)).min(1).optional(),
16
- image_data_url: z.string().min(1).optional(),
17
- image_data_urls: z.array(z.string().min(1)).min(1).optional(),
18
- image_detail: z.enum(['low', 'high', 'auto']).optional(),
19
- model: z.string().optional(),
20
- temperature: z.number().min(0).max(2).optional(),
21
- max_tokens: z.number().min(1).optional(),
22
- include_usage: z.boolean().optional(),
23
- system_prompt: z.string().optional(),
24
- include_raw: z.boolean().optional().default(false),
25
- });
26
- // Output schema
27
- export const outputSchema = z.object({
28
- content: z.string(),
29
- message: z.record(z.unknown()),
30
- usage: z.record(z.unknown()).optional(),
31
- raw: z.union([z.record(z.unknown()), z.string()]).optional(),
32
- });
33
- // JSON Schemas for MCP registration
34
- export const inputJsonSchema = zodToJsonSchema(inputSchema);
35
- export const outputJsonSchema = zodToJsonSchema(outputSchema);
36
- // Tool metadata
37
- export const name = 'nanogpt_vision';
38
- export const description = 'Analyze images with a vision-capable model. Provide an image URL or data URL plus a prompt.';
39
- // Annotations
40
- export const annotations = {
41
- readOnlyHint: false,
42
- openWorldHint: true,
43
- };
44
- /**
45
- * Handler for nanogpt_vision
46
- */
47
- export async function handler(args) {
48
- try {
49
- // Validate input
50
- const input = inputSchema.parse(args);
51
- const config = getConfig();
52
- const imageSources = [];
53
- if (input.image_url)
54
- imageSources.push(input.image_url);
55
- if (input.image_data_url)
56
- imageSources.push(input.image_data_url);
57
- if (input.image_urls)
58
- imageSources.push(...input.image_urls);
59
- if (input.image_data_urls)
60
- imageSources.push(...input.image_data_urls);
61
- if (imageSources.length === 0) {
62
- throw new McpError(ErrorCode.InvalidParams, 'Provide at least one image via image_url/image_urls or image_data_url/image_data_urls.');
63
- }
64
- // Determine model
65
- const model = input.model || config.visionModel;
66
- if (!model) {
67
- throw new McpError(ErrorCode.InvalidRequest, 'No vision model specified. Provide "model" or set NANOGPT_VISION_MODEL.');
68
- }
69
- // Build content array (text + images)
70
- const content = [{ type: 'text', text: input.prompt }];
71
- const detail = input.image_detail;
72
- const addImage = (url) => {
73
- if (detail) {
74
- content.push({ type: 'image_url', image_url: { url, detail } });
75
- }
76
- else {
77
- content.push({ type: 'image_url', image_url: { url } });
78
- }
79
- };
80
- for (const url of imageSources) {
81
- addImage(url);
82
- }
83
- // Build messages
84
- const messages = [];
85
- if (input.system_prompt) {
86
- messages.push({ role: 'system', content: input.system_prompt });
87
- }
88
- messages.push({ role: 'user', content });
89
- // Build request body
90
- const requestBody = {
91
- model,
92
- messages,
93
- stream: false, // Force non-streaming for MCP v1
94
- };
95
- if (input.temperature !== undefined) {
96
- requestBody.temperature = input.temperature;
97
- }
98
- if (input.max_tokens !== undefined) {
99
- requestBody.max_tokens = input.max_tokens;
100
- }
101
- // Call NanoGPT API
102
- const response = await requestJson({
103
- method: 'POST',
104
- path: '/v1/chat/completions',
105
- body: requestBody,
106
- });
107
- const data = response.json;
108
- // Extract assistant message
109
- const choice = data.choices?.[0];
110
- if (!choice) {
111
- throw new McpError(ErrorCode.InternalError, 'No response from model');
112
- }
113
- const assistantMessage = choice.message;
114
- const rawContent = assistantMessage.content;
115
- let contentText = '';
116
- if (typeof rawContent === 'string') {
117
- contentText = rawContent;
118
- }
119
- else if (rawContent !== undefined) {
120
- contentText = JSON.stringify(rawContent);
121
- }
122
- // Build output
123
- const output = {
124
- content: contentText,
125
- message: assistantMessage,
126
- };
127
- if (input.include_usage && data.usage) {
128
- output.usage = data.usage;
129
- }
130
- // Process raw response
131
- const { raw, resourceLink } = processRawResponse({ status: response.status, headers: response.headers, body: data }, input.include_raw);
132
- if (raw !== undefined) {
133
- output.raw = raw;
134
- }
135
- // Build content
136
- let displayText;
137
- if (contentText) {
138
- displayText = contentText;
139
- }
140
- else if (assistantMessage.tool_calls) {
141
- displayText = `Assistant requested tool calls: ${JSON.stringify(assistantMessage.tool_calls)}`;
142
- }
143
- else {
144
- displayText = JSON.stringify(assistantMessage);
145
- }
146
- return {
147
- content: buildContent(displayText, resourceLink),
148
- structuredContent: output,
149
- };
150
- }
151
- catch (err) {
152
- return handleToolError(err);
153
- }
154
- }
155
- //# sourceMappingURL=vision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/tools/vision.ts"],"names":[],"mappings":"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"}