@lutery/vision-mcp 1.0.0 → 1.0.1
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 +136 -337
- package/dist/adapters/gemini-adapter.d.ts +73 -0
- package/dist/adapters/gemini-adapter.d.ts.map +1 -0
- package/dist/adapters/gemini-adapter.js +406 -0
- package/dist/adapters/gemini-adapter.js.map +1 -0
- package/dist/providers/provider-registry.d.ts.map +1 -1
- package/dist/providers/provider-registry.js +23 -1
- package/dist/providers/provider-registry.js.map +1 -1
- package/dist/utils/errors.d.ts +12 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +44 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/logger.d.ts +13 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +56 -9
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/thinking-extractors.d.ts +11 -0
- package/dist/utils/thinking-extractors.d.ts.map +1 -1
- package/dist/utils/thinking-extractors.js +47 -0
- package/dist/utils/thinking-extractors.js.map +1 -1
- package/dist/utils/thinking-filter.d.ts.map +1 -1
- package/dist/utils/thinking-filter.js +2 -1
- package/dist/utils/thinking-filter.js.map +1 -1
- package/package.json +2 -2
package/dist/utils/logger.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Logger Utility
|
|
3
3
|
*
|
|
4
|
-
* @description 统一的日志工具,确保只使用
|
|
4
|
+
* @description 统一的日志工具,确保只使用 stderr 输出
|
|
5
5
|
* 符合 MCP 协议要求:stdout 用于 JSON-RPC 通信,日志使用 stderr
|
|
6
6
|
*/
|
|
7
7
|
export var LogLevel;
|
|
@@ -31,6 +31,49 @@ export class Logger {
|
|
|
31
31
|
this.logLevel = LogLevel.INFO;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* 脱敏可能包含敏感信息的字符串(如 URL 中的 API key)
|
|
36
|
+
* @param text - 可能包含敏感信息的文本
|
|
37
|
+
* @returns 脱敏后的文本
|
|
38
|
+
*/
|
|
39
|
+
sanitizeForLogging(text) {
|
|
40
|
+
if (!text || typeof text !== 'string') {
|
|
41
|
+
return text;
|
|
42
|
+
}
|
|
43
|
+
// 匹配 URL 中的敏感查询参数
|
|
44
|
+
// 支持: ?key=, ?api_key=, ?apikey=, ?token=, ?access_token=, ?api-key=
|
|
45
|
+
// 正确捕获: 第1组捕获 "key=" 前缀,第2组捕获值(不使用),替换为 "$1***"
|
|
46
|
+
return text.replace(/([?&](?:key|api_key|apikey|token|access_token|api-key)=)([^&\s'"\\]+)/gi, '$1***');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 递归脱敏对象中的所有字符串值
|
|
50
|
+
* @param obj - 要脱敏的对象
|
|
51
|
+
* @returns 脱敏后的对象
|
|
52
|
+
*/
|
|
53
|
+
sanitizeObject(obj) {
|
|
54
|
+
if (!obj || typeof obj !== 'object') {
|
|
55
|
+
return obj;
|
|
56
|
+
}
|
|
57
|
+
if (Array.isArray(obj)) {
|
|
58
|
+
return obj.map(item => this.sanitizeObject(item));
|
|
59
|
+
}
|
|
60
|
+
const sanitized = {};
|
|
61
|
+
for (const key in obj) {
|
|
62
|
+
if (obj.hasOwnProperty(key)) {
|
|
63
|
+
const value = obj[key];
|
|
64
|
+
if (typeof value === 'string') {
|
|
65
|
+
sanitized[key] = this.sanitizeForLogging(value);
|
|
66
|
+
}
|
|
67
|
+
else if (typeof value === 'object' && value !== null) {
|
|
68
|
+
sanitized[key] = this.sanitizeObject(value);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
sanitized[key] = value;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return sanitized;
|
|
76
|
+
}
|
|
34
77
|
static getInstance() {
|
|
35
78
|
if (!Logger.instance) {
|
|
36
79
|
Logger.instance = new Logger();
|
|
@@ -54,7 +97,7 @@ export class Logger {
|
|
|
54
97
|
timestamp: new Date().toISOString(),
|
|
55
98
|
level: 'DEBUG',
|
|
56
99
|
message,
|
|
57
|
-
...meta
|
|
100
|
+
...(meta ? this.sanitizeObject(meta) : {})
|
|
58
101
|
});
|
|
59
102
|
}
|
|
60
103
|
}
|
|
@@ -67,7 +110,7 @@ export class Logger {
|
|
|
67
110
|
timestamp: new Date().toISOString(),
|
|
68
111
|
level: 'INFO',
|
|
69
112
|
message,
|
|
70
|
-
...meta
|
|
113
|
+
...(meta ? this.sanitizeObject(meta) : {})
|
|
71
114
|
});
|
|
72
115
|
}
|
|
73
116
|
}
|
|
@@ -80,7 +123,7 @@ export class Logger {
|
|
|
80
123
|
timestamp: new Date().toISOString(),
|
|
81
124
|
level: 'WARN',
|
|
82
125
|
message,
|
|
83
|
-
...meta
|
|
126
|
+
...(meta ? this.sanitizeObject(meta) : {})
|
|
84
127
|
});
|
|
85
128
|
}
|
|
86
129
|
}
|
|
@@ -93,18 +136,22 @@ export class Logger {
|
|
|
93
136
|
timestamp: new Date().toISOString(),
|
|
94
137
|
level: 'ERROR',
|
|
95
138
|
message,
|
|
96
|
-
...meta
|
|
139
|
+
...(meta ? this.sanitizeObject(meta) : {})
|
|
97
140
|
};
|
|
98
141
|
if (error) {
|
|
99
142
|
if (error instanceof Error) {
|
|
100
|
-
|
|
143
|
+
const errorObj = {
|
|
101
144
|
name: error.name,
|
|
102
|
-
message: error.message
|
|
103
|
-
stack: error.stack
|
|
145
|
+
message: this.sanitizeForLogging(error.message)
|
|
104
146
|
};
|
|
147
|
+
// Stack trace may not be available in all environments
|
|
148
|
+
if (error.stack) {
|
|
149
|
+
errorObj.stack = this.sanitizeForLogging(error.stack);
|
|
150
|
+
}
|
|
151
|
+
logEntry.error = errorObj;
|
|
105
152
|
}
|
|
106
153
|
else {
|
|
107
|
-
logEntry.error = String(error);
|
|
154
|
+
logEntry.error = this.sanitizeForLogging(String(error));
|
|
108
155
|
}
|
|
109
156
|
}
|
|
110
157
|
this.write(logEntry);
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAYD,MAAM,OAAO,MAAM;IACT,MAAM,CAAC,QAAQ,CAAS;IACxB,QAAQ,CAAW;IAE3B;QACE,uBAAuB;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QACtD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC/B,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC9B,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC/B,MAAM;YACR;gBACE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,KAAe;QAC3B,4CAA4C;QAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAe,EAAE,IAA0B;QACtD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC;gBACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,KAAK,EAAE,OAAO;gBACd,OAAO;gBACP,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,11 @@ export interface ModelResponseEnvelope {
|
|
|
13
13
|
reasoning?: string;
|
|
14
14
|
thinking?: string;
|
|
15
15
|
rawResponse?: unknown;
|
|
16
|
+
usage?: {
|
|
17
|
+
promptTokens?: number;
|
|
18
|
+
completionTokens?: number;
|
|
19
|
+
totalTokens?: number;
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* Type for extracting thinking content from raw model responses
|
|
@@ -31,4 +36,10 @@ export declare function extractOpenAIThinking(rawResponse: unknown): ModelRespon
|
|
|
31
36
|
* Claude response format: { content: [{type: "text", text: "..."}], usage: {...} }
|
|
32
37
|
*/
|
|
33
38
|
export declare function extractClaudeThinking(rawResponse: unknown): ModelResponseEnvelope;
|
|
39
|
+
/**
|
|
40
|
+
* Extracts thinking content from Gemini generateContent responses
|
|
41
|
+
* Gemini response format: { candidates: [{ content: { parts: [{ text: "..." }] } }] }
|
|
42
|
+
* Supports both official format (content.parts) and proxy format (output.parts)
|
|
43
|
+
*/
|
|
44
|
+
export declare function extractGeminiThinking(rawResponse: unknown): ModelResponseEnvelope;
|
|
34
45
|
//# sourceMappingURL=thinking-extractors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinking-extractors.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"thinking-extractors.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,qBAAqB,CAAC;AAEhF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAkB9E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAkBjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CA4BjF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAgDjF"}
|
|
@@ -80,4 +80,51 @@ export function extractClaudeThinking(rawResponse) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Extracts thinking content from Gemini generateContent responses
|
|
85
|
+
* Gemini response format: { candidates: [{ content: { parts: [{ text: "..." }] } }] }
|
|
86
|
+
* Supports both official format (content.parts) and proxy format (output.parts)
|
|
87
|
+
*/
|
|
88
|
+
export function extractGeminiThinking(rawResponse) {
|
|
89
|
+
try {
|
|
90
|
+
// @ts-ignore - Access response structure
|
|
91
|
+
const candidate = rawResponse?.candidates?.[0];
|
|
92
|
+
if (!candidate) {
|
|
93
|
+
logger.warn('No candidates in Gemini response');
|
|
94
|
+
return {
|
|
95
|
+
content: '',
|
|
96
|
+
rawResponse
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// Support two response formats:
|
|
100
|
+
// Official: candidates[0].content.parts[].text
|
|
101
|
+
// Proxy: candidates[0].output.parts[].text
|
|
102
|
+
const parts = candidate?.content?.parts || candidate?.output?.parts || [];
|
|
103
|
+
// Extract all text parts
|
|
104
|
+
const textParts = parts
|
|
105
|
+
.filter((part) => part?.text)
|
|
106
|
+
.map((part) => part.text);
|
|
107
|
+
const content = textParts.join('\n\n');
|
|
108
|
+
// Map usage metadata
|
|
109
|
+
const usageMetadata = rawResponse?.usageMetadata || rawResponse?.usage;
|
|
110
|
+
const usage = usageMetadata ? {
|
|
111
|
+
promptTokens: usageMetadata.promptTokenCount || usageMetadata.inputTokens,
|
|
112
|
+
completionTokens: usageMetadata.candidatesTokenCount || usageMetadata.outputTokens,
|
|
113
|
+
totalTokens: usageMetadata.totalTokens || ((usageMetadata.promptTokenCount || usageMetadata.inputTokens || 0) +
|
|
114
|
+
(usageMetadata.candidatesTokenCount || usageMetadata.outputTokens || 0))
|
|
115
|
+
} : undefined;
|
|
116
|
+
return {
|
|
117
|
+
content,
|
|
118
|
+
rawResponse,
|
|
119
|
+
usage
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
logger.warn('Failed to extract Gemini thinking content', { error });
|
|
124
|
+
return {
|
|
125
|
+
content: '',
|
|
126
|
+
rawResponse
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
83
130
|
//# sourceMappingURL=thinking-extractors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinking-extractors.js","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"thinking-extractors.js","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinking-filter.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"thinking-filter.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EAKlB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;AAsBzD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAQjE,CAAC;AAuCF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAiCrE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgCrF"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* content before returning to MCP client.
|
|
9
9
|
*/
|
|
10
10
|
import { logger } from './logger.js';
|
|
11
|
-
import { extractGLMThinking, extractOpenAIThinking, extractClaudeThinking } from './thinking-extractors.js';
|
|
11
|
+
import { extractGLMThinking, extractOpenAIThinking, extractClaudeThinking, extractGeminiThinking } from './thinking-extractors.js';
|
|
12
12
|
/**
|
|
13
13
|
* Thinking content patterns to filter from text
|
|
14
14
|
* These patterns match common thinking/reasoning content markers used by various models
|
|
@@ -38,6 +38,7 @@ export const THINKING_EXTRACTORS = {
|
|
|
38
38
|
'siliconflow': extractOpenAIThinking,
|
|
39
39
|
'openai': extractOpenAIThinking,
|
|
40
40
|
'claude': extractClaudeThinking,
|
|
41
|
+
'gemini': extractGeminiThinking,
|
|
41
42
|
// Add more model extractors as needed
|
|
42
43
|
};
|
|
43
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinking-filter.js","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thinking-filter.js","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lutery/vision-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "MCP Server providing vision capabilities for LLMs via GLM-4.6V, SiliconFlow, and ModelScope",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"prepublishOnly": "npm run build",
|
|
15
15
|
"test": "npm run build && node -r dotenv/config test/simple-test.js",
|
|
16
16
|
"test:complex": "npm run build && node -r dotenv/config test/run-tests.js",
|
|
17
|
-
"test:unit": "node test/thinking-filter.test.js && node test/data-url-parser.test.js && node test/thinking-extractors.test.js && node test/claude-adapter.test.js",
|
|
17
|
+
"test:unit": "node test/thinking-filter.test.js && node test/data-url-parser.test.js && node test/thinking-extractors.test.js && node test/claude-adapter.test.js && node test/gemini-adapter.test.js && node test/logger-sanitization.test.js",
|
|
18
18
|
"test:integration": "npm run build && node -r dotenv/config test/simple-test.js"
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|