image-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 +4 -25
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/proxy/imageProxy.d.ts +1 -0
- package/dist/proxy/imageProxy.js +178 -90
- package/dist/proxy/imageProxy.js.map +1 -1
- package/dist/proxy/standaloneProxy.d.ts +2 -0
- package/dist/proxy/standaloneProxy.js +18 -0
- package/dist/proxy/standaloneProxy.js.map +1 -0
- package/dist/tools/describeClipboard.js +15 -0
- package/dist/tools/describeClipboard.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,8 +45,6 @@ MCP 工具和代理共享同一进程、同一份 Moonshot 配置,启动 MCP s
|
|
|
45
45
|
- Node.js >= 18
|
|
46
46
|
- Moonshot API Key(在 [platform.moonshot.cn](https://platform.moonshot.cn) 申请)
|
|
47
47
|
|
|
48
|
-
构建产物在 `dist/index.js`。
|
|
49
|
-
|
|
50
48
|
## 配置
|
|
51
49
|
|
|
52
50
|
### 1. 基础配置(启用 MCP 工具)
|
|
@@ -57,8 +55,8 @@ MCP 工具和代理共享同一进程、同一份 Moonshot 配置,启动 MCP s
|
|
|
57
55
|
{
|
|
58
56
|
"mcpServers": {
|
|
59
57
|
"vision-mcp": {
|
|
60
|
-
"command": "
|
|
61
|
-
"args": ["
|
|
58
|
+
"command": "npx",
|
|
59
|
+
"args": ["-y", "image-vision-mcp"],
|
|
62
60
|
"env": {
|
|
63
61
|
"MOONSHOT_API_KEY": "sk-你的-moonshot-api-key",
|
|
64
62
|
"MOONSHOT_BASE_URL": "https://api.kimi.com/coding/v1"
|
|
@@ -87,8 +85,8 @@ MCP 工具和代理共享同一进程、同一份 Moonshot 配置,启动 MCP s
|
|
|
87
85
|
{
|
|
88
86
|
"mcpServers": {
|
|
89
87
|
"vision-mcp": {
|
|
90
|
-
"command": "
|
|
91
|
-
"args": ["
|
|
88
|
+
"command": "npx",
|
|
89
|
+
"args": ["-y", "image-vision-mcp"],
|
|
92
90
|
"env": {
|
|
93
91
|
"MOONSHOT_API_KEY": "sk-你的-moonshot-key",
|
|
94
92
|
"MOONSHOT_BASE_URL": "https://api.kimi.com/coding/v1",
|
|
@@ -224,25 +222,6 @@ npm run clean # 清理构建产物
|
|
|
224
222
|
| macOS | `pngpaste`(`brew install pngpaste`) | `osascript` |
|
|
225
223
|
| Linux | `xclip` | `xsel`(`sudo apt install xclip`) |
|
|
226
224
|
|
|
227
|
-
## 安装
|
|
228
|
-
|
|
229
|
-
发布到 npm 后,直接在 MCP 配置里用 `npx` 启动。`-y` 表示自动下载并运行 `image-vision-mcp` 包:
|
|
230
|
-
|
|
231
|
-
```json
|
|
232
|
-
{
|
|
233
|
-
"mcpServers": {
|
|
234
|
-
"vision-mcp": {
|
|
235
|
-
"command": "npx",
|
|
236
|
-
"args": ["-y", "image-vision-mcp"],
|
|
237
|
-
"env": {
|
|
238
|
-
"MOONSHOT_API_KEY": "sk-你的-moonshot-api-key",
|
|
239
|
-
"MOONSHOT_BASE_URL": "https://api.moonshot.cn/v1"
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
225
|
## 贡献
|
|
247
226
|
|
|
248
227
|
欢迎提 issue 和 PR。当前只支持 Moonshot Kimi,后续计划扩展其他视觉模型(OpenAI、Gemini、通义千问等),架构上已预留扩展点。
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
14
14
|
import { registerDescribeImageTool } from "./tools/describeImage.js";
|
|
15
15
|
import { registerDescribeClipboardTool } from "./tools/describeClipboard.js";
|
|
16
|
-
import {
|
|
16
|
+
import { ensureImageProxyRunning } from "./proxy/imageProxy.js";
|
|
17
17
|
import { cleanupOldTempImages } from "./services/clipboard.js";
|
|
18
18
|
function getRequiredEnv(name, hint) {
|
|
19
19
|
const value = process.env[name]?.trim();
|
|
@@ -30,12 +30,13 @@ async function main() {
|
|
|
30
30
|
getRequiredEnv("MOONSHOT_BASE_URL", "请在 MCP 配置的 env 里设置 MOONSHOT_BASE_URL(如 https://api.moonshot.cn/v1)");
|
|
31
31
|
// 1. 清理上次进程异常退出残留的临时图片
|
|
32
32
|
await cleanupOldTempImages();
|
|
33
|
-
// 2.
|
|
33
|
+
// 2. 按需拉起独立常驻的 HTTP 图片拦截代理(与 MCP 进程解耦:
|
|
34
|
+
// 代理脱离任何会话独立运行,关掉任意窗口都不影响它)
|
|
34
35
|
try {
|
|
35
|
-
await
|
|
36
|
+
await ensureImageProxyRunning();
|
|
36
37
|
}
|
|
37
38
|
catch (err) {
|
|
38
|
-
console.error("[vision-mcp]
|
|
39
|
+
console.error("[vision-mcp] 代理拉起失败(不影响 MCP 功能):", err);
|
|
39
40
|
}
|
|
40
41
|
// 3. 启动 MCP 服务器
|
|
41
42
|
const server = new McpServer({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,yBAAyB;IACzB,MAAM,MAAM,GAAG,cAAc,CAC3B,kBAAkB,EAClB,qCAAqC,CACtC,CAAC;IACF,cAAc,CACZ,mBAAmB,EACnB,oEAAoE,CACrE,CAAC;IAEF,uBAAuB;IACvB,MAAM,oBAAoB,EAAE,CAAC;IAE7B,uCAAuC;IACvC,+BAA+B;IAC/B,IAAI,CAAC;QACH,MAAM,uBAAuB,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAChD,6BAA6B,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACzD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/proxy/imageProxy.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import http from "http";
|
|
2
2
|
import https from "https";
|
|
3
|
-
import { URL } from "url";
|
|
3
|
+
import { URL, fileURLToPath } from "url";
|
|
4
4
|
import zlib from "zlib";
|
|
5
5
|
import fs from "fs";
|
|
6
6
|
import path from "path";
|
|
7
7
|
import os from "os";
|
|
8
|
-
import {
|
|
8
|
+
import { spawn } from "child_process";
|
|
9
9
|
import { callMoonshot } from "../services/moonshot.js";
|
|
10
10
|
// ────────────────────── 日志 ──────────────────────
|
|
11
11
|
// 日志文件路径:优先用环境变量,否则放系统临时目录(跨平台、无需权限处理)
|
|
@@ -76,77 +76,75 @@ async function describeImage(base64Data, mimeType) {
|
|
|
76
76
|
}
|
|
77
77
|
return description;
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
79
|
+
// 处理单个 content block:图片类型识别后替换为文字,其余原样返回。
|
|
80
|
+
// 同层数组的多个图片块由调用方 Promise.all 并行触发,这里只负责单块转换。
|
|
81
|
+
async function describeBlock(block) {
|
|
82
|
+
// 格式1: Anthropic 标准 {"type":"image","source":{"type":"base64",...}}
|
|
83
|
+
if (block?.type === "image" && block.source?.type === "base64") {
|
|
84
|
+
const { media_type, data } = block.source;
|
|
85
|
+
try {
|
|
86
|
+
const description = await describeImage(data, media_type);
|
|
87
|
+
log(`[image-proxy] 图片已识别 (${media_type}, ${Math.round((data.length * 0.75) / 1024)} KB)`);
|
|
88
|
+
return {
|
|
89
|
+
type: "text",
|
|
90
|
+
text: `[以下是用户粘贴的图片内容描述]\n${description}\n[图片描述结束]`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
log(`[image-proxy] 图片识别失败: ${err.message}`);
|
|
95
|
+
return {
|
|
96
|
+
type: "text",
|
|
97
|
+
text: `[图片识别失败: ${err.message}]`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// 格式2: OpenAI 风格 {"type":"image_url","image_url":{"url":"data:image/png;base64,..."}}
|
|
102
|
+
if (block?.type === "image_url" &&
|
|
103
|
+
block.image_url?.url?.startsWith("data:image")) {
|
|
104
|
+
const url = block.image_url.url;
|
|
105
|
+
const match = url.match(/^data:(image\/[a-z+]+);base64,(.+)$/i);
|
|
106
|
+
if (match) {
|
|
107
|
+
const [, media_type, data] = match;
|
|
92
108
|
try {
|
|
93
109
|
const description = await describeImage(data, media_type);
|
|
94
|
-
|
|
110
|
+
log(`[image-proxy] image_url 图片已识别 (${media_type})`);
|
|
111
|
+
return {
|
|
95
112
|
type: "text",
|
|
96
|
-
text: `[
|
|
97
|
-
}
|
|
98
|
-
log(`[image-proxy] 图片已识别 (${media_type}, ${Math.round((data.length * 0.75) / 1024)} KB)`);
|
|
113
|
+
text: `[以下是截图内容描述]\n${description}\n[图片描述结束]`,
|
|
114
|
+
};
|
|
99
115
|
}
|
|
100
116
|
catch (err) {
|
|
101
|
-
log(`[image-proxy] 图片识别失败: ${err.message}`);
|
|
102
|
-
|
|
117
|
+
log(`[image-proxy] image_url 图片识别失败: ${err.message}`);
|
|
118
|
+
return {
|
|
103
119
|
type: "text",
|
|
104
120
|
text: `[图片识别失败: ${err.message}]`,
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// 格式2: OpenAI 风格 {"type":"image_url","image_url":{"url":"data:image/png;base64,..."}}
|
|
109
|
-
else if (block?.type === "image_url" &&
|
|
110
|
-
block.image_url?.url?.startsWith("data:image")) {
|
|
111
|
-
const url = block.image_url.url;
|
|
112
|
-
const match = url.match(/^data:(image\/[a-z+]+);base64,(.+)$/i);
|
|
113
|
-
if (match) {
|
|
114
|
-
const [, media_type, data] = match;
|
|
115
|
-
try {
|
|
116
|
-
const description = await describeImage(data, media_type);
|
|
117
|
-
newContent.push({
|
|
118
|
-
type: "text",
|
|
119
|
-
text: `[以下是截图内容描述]\n${description}\n[图片描述结束]`,
|
|
120
|
-
});
|
|
121
|
-
log(`[image-proxy] image_url 图片已识别 (${media_type})`);
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
log(`[image-proxy] image_url 图片识别失败: ${err.message}`);
|
|
125
|
-
newContent.push({
|
|
126
|
-
type: "text",
|
|
127
|
-
text: `[图片识别失败: ${err.message}]`,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
newContent.push(block);
|
|
121
|
+
};
|
|
133
122
|
}
|
|
134
123
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
log(`[image-proxy] 未识别的 image source type: ${block.source.type}`);
|
|
143
|
-
newContent.push(block);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
newContent.push(block);
|
|
147
|
-
}
|
|
124
|
+
return block;
|
|
125
|
+
}
|
|
126
|
+
// 格式3: tool_result 里嵌套图片(MCP 工具返回的截图)
|
|
127
|
+
if (block?.type === "tool_result" && Array.isArray(block.content)) {
|
|
128
|
+
const toolContent = block.content;
|
|
129
|
+
const processed = await processContent(toolContent);
|
|
130
|
+
return { ...block, content: processed };
|
|
148
131
|
}
|
|
149
|
-
|
|
132
|
+
// 其他未识别的 image source type
|
|
133
|
+
if (block?.type === "image" && block.source && !block.source.type?.startsWith("base64")) {
|
|
134
|
+
log(`[image-proxy] 未识别的 image source type: ${block.source.type}`);
|
|
135
|
+
}
|
|
136
|
+
return block;
|
|
137
|
+
}
|
|
138
|
+
async function processContent(content) {
|
|
139
|
+
if (typeof content === "string")
|
|
140
|
+
return content;
|
|
141
|
+
if (!Array.isArray(content))
|
|
142
|
+
return content;
|
|
143
|
+
// 日志:记录所有 block 类型,方便排查
|
|
144
|
+
const blockTypes = content.map((b) => b?.type || "unknown");
|
|
145
|
+
log(`[image-proxy] content blocks: ${JSON.stringify(blockTypes)}`);
|
|
146
|
+
// 并行识别同一层级的所有图片块,map 保持原顺序
|
|
147
|
+
return Promise.all(content.map((block) => describeBlock(block)));
|
|
150
148
|
}
|
|
151
149
|
async function processMessages(messages) {
|
|
152
150
|
if (!Array.isArray(messages))
|
|
@@ -205,30 +203,62 @@ function forwardRequest(req, res, body) {
|
|
|
205
203
|
}
|
|
206
204
|
proxyReq.end();
|
|
207
205
|
}
|
|
208
|
-
// ──────────────────────
|
|
209
|
-
|
|
206
|
+
// ────────────────────── 单例锁 ──────────────────────
|
|
207
|
+
// 锁文件路径:系统临时目录,跨平台无需权限处理
|
|
208
|
+
const LOCK_FILE = path.join(os.tmpdir(), "vision-mcp-proxy.lock");
|
|
209
|
+
// 检测 PID 对应的进程是否仍在运行(信号 0 不实际发信号,仅探测存活)
|
|
210
|
+
function isProcessAlive(pid) {
|
|
211
|
+
try {
|
|
212
|
+
process.kill(pid, 0);
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
// ESRCH: 进程不存在;EPERM: 存在但无权限。两者都视为"不可达",允许接管
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// 尝试获取单例锁:保证全局只有一个 vision-mcp 进程启动图片代理,
|
|
221
|
+
// 避免多个 MCP 进程互相 kill 对方占用的 8787 端口(会把正在处理请求的代理杀掉)。
|
|
222
|
+
// 返回 true 表示拿到锁、应由本进程启动代理;false 表示已有代理在运行,跳过。
|
|
223
|
+
function tryAcquireLock() {
|
|
210
224
|
try {
|
|
211
|
-
|
|
212
|
-
|
|
225
|
+
// O_EXCL (wx) 原子创建:文件已存在则抛 EEXIST
|
|
226
|
+
const fd = fs.openSync(LOCK_FILE, "wx");
|
|
227
|
+
fs.writeFileSync(fd, String(process.pid));
|
|
228
|
+
fs.closeSync(fd);
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
if (err.code !== "EEXIST") {
|
|
233
|
+
// 其他 IO 错误,保守起见不获取锁
|
|
234
|
+
return false;
|
|
213
235
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
236
|
+
// 锁文件已存在:检查持有者是否还活着
|
|
237
|
+
try {
|
|
238
|
+
const holderPid = parseInt(fs.readFileSync(LOCK_FILE, "utf8").trim(), 10);
|
|
239
|
+
if (holderPid && isProcessAlive(holderPid)) {
|
|
240
|
+
return false; // 持有者仍存活,复用已有代理
|
|
241
|
+
}
|
|
242
|
+
// 持有者已退出(崩溃未释放锁):清理僵尸锁后递归重试
|
|
243
|
+
fs.unlinkSync(LOCK_FILE);
|
|
244
|
+
return tryAcquireLock();
|
|
221
245
|
}
|
|
222
|
-
|
|
246
|
+
catch {
|
|
223
247
|
return false;
|
|
224
248
|
}
|
|
225
|
-
|
|
226
|
-
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// 释放锁:仅当锁文件登记的 PID 是本进程时才删除,避免误删他人的锁
|
|
252
|
+
function releaseLock() {
|
|
253
|
+
try {
|
|
254
|
+
const holderPid = parseInt(fs.readFileSync(LOCK_FILE, "utf8").trim(), 10);
|
|
255
|
+
if (holderPid === process.pid) {
|
|
256
|
+
fs.unlinkSync(LOCK_FILE);
|
|
257
|
+
}
|
|
227
258
|
}
|
|
228
259
|
catch {
|
|
229
|
-
//
|
|
260
|
+
// 忽略:文件可能已被删除
|
|
230
261
|
}
|
|
231
|
-
return false;
|
|
232
262
|
}
|
|
233
263
|
// ────────────────────── 启动代理 ──────────────────────
|
|
234
264
|
export function startImageProxy() {
|
|
@@ -238,6 +268,19 @@ export function startImageProxy() {
|
|
|
238
268
|
resolve();
|
|
239
269
|
return;
|
|
240
270
|
}
|
|
271
|
+
// 单例锁:保证全局只有一个代理进程。拿不到锁说明已有代理在运行,
|
|
272
|
+
// 直接复用,避免多 MCP 进程互相 kill 8787 端口导致正在处理的请求中断。
|
|
273
|
+
if (!tryAcquireLock()) {
|
|
274
|
+
log("[image-proxy] 已有代理进程在运行,跳过启动(复用已有代理,MCP 工具仍可用)");
|
|
275
|
+
resolve();
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
// 进程退出时释放锁,让其他 MCP 进程下次启动时能接管
|
|
279
|
+
const releaseOnExit = () => releaseLock();
|
|
280
|
+
process.on("SIGINT", releaseOnExit);
|
|
281
|
+
process.on("SIGTERM", releaseOnExit);
|
|
282
|
+
process.on("beforeExit", releaseOnExit);
|
|
283
|
+
process.on("exit", releaseOnExit);
|
|
241
284
|
const server = http.createServer(async (req, res) => {
|
|
242
285
|
const isMessagesEndpoint = req.method === "POST" && (req.url || "").includes("/v1/messages");
|
|
243
286
|
if (!isMessagesEndpoint) {
|
|
@@ -319,28 +362,73 @@ export function startImageProxy() {
|
|
|
319
362
|
log(`[image-proxy] 请求错误: ${err.message}`);
|
|
320
363
|
});
|
|
321
364
|
});
|
|
322
|
-
let retried = false;
|
|
323
365
|
server.on("error", (err) => {
|
|
324
366
|
const msg = err.message;
|
|
325
|
-
if (msg.includes("EADDRINUSE")
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
server.listen(PROXY_PORT, "127.0.0.1");
|
|
331
|
-
}, 1000);
|
|
367
|
+
if (msg.includes("EADDRINUSE")) {
|
|
368
|
+
// 端口已被占用。锁机制保证正常情况下只有一个本 MCP 代理在跑,
|
|
369
|
+
// 这里被占用说明是其他程序,或锁在极端情况下漏网。
|
|
370
|
+
// 不再 kill(避免杀掉正在处理请求的代理),直接放弃启动。
|
|
371
|
+
log(`[image-proxy] 端口 ${PROXY_PORT} 已被占用,放弃启动代理(MCP 工具仍可用)`);
|
|
332
372
|
}
|
|
333
373
|
else {
|
|
334
|
-
// 其他错误或重试仍失败,不阻塞 MCP 启动
|
|
335
374
|
log(`[image-proxy] 代理启动失败(MCP 工具仍可用): ${msg}`);
|
|
336
|
-
resolve();
|
|
337
375
|
}
|
|
376
|
+
releaseLock();
|
|
377
|
+
resolve();
|
|
338
378
|
});
|
|
339
379
|
server.listen(PROXY_PORT, "127.0.0.1", () => {
|
|
340
|
-
log(`[image-proxy] 代理已启动: http://127.0.0.1:${PROXY_PORT}`);
|
|
380
|
+
log(`[image-proxy] 代理已启动: http://127.0.0.1:${PROXY_PORT} (pid ${process.pid})`);
|
|
341
381
|
log(`[image-proxy] 上游 API: ${UPSTREAM_BASE_URL}`);
|
|
342
382
|
resolve();
|
|
343
383
|
});
|
|
344
384
|
});
|
|
345
385
|
}
|
|
386
|
+
// ────────────────────── MCP 端:按需拉起独立代理 ──────────────────────
|
|
387
|
+
// 独立代理入口脚本(与本文件同目录,编译后为 dist/proxy/standaloneProxy.js)
|
|
388
|
+
const STANDALONE_SCRIPT = fileURLToPath(new URL("standaloneProxy.js", import.meta.url));
|
|
389
|
+
// 读取锁文件里登记的代理 PID;不存在/无效返回 null
|
|
390
|
+
function readLockHolderPid() {
|
|
391
|
+
try {
|
|
392
|
+
const pid = parseInt(fs.readFileSync(LOCK_FILE, "utf8").trim(), 10);
|
|
393
|
+
return Number.isFinite(pid) && pid > 0 ? pid : null;
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
return null;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// MCP 进程调用:确保有一个独立常驻的图片代理在运行。
|
|
400
|
+
// - 锁持有者进程存活 → 复用已有代理
|
|
401
|
+
// - 否则 detached spawn 一个独立代理进程,与本 MCP 进程生命周期解耦
|
|
402
|
+
// 任何一个 Claude Code 会话退出都不影响代理,代理常驻至自身崩溃或被主动 kill。
|
|
403
|
+
export function ensureImageProxyRunning() {
|
|
404
|
+
return new Promise((resolve) => {
|
|
405
|
+
if (!UPSTREAM_BASE_URL) {
|
|
406
|
+
log("[image-proxy] 未设置 UPSTREAM_BASE_URL,代理功能不可用(MCP 工具仍可用)");
|
|
407
|
+
resolve();
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
// 1. 已有独立代理在运行则直接复用
|
|
411
|
+
const holderPid = readLockHolderPid();
|
|
412
|
+
if (holderPid !== null && isProcessAlive(holderPid)) {
|
|
413
|
+
log(`[image-proxy] 独立代理已在运行 (pid ${holderPid}),复用`);
|
|
414
|
+
resolve();
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
// 2. detached spawn 独立代理进程:stdio ignore + unref,独立于父进程生命周期
|
|
418
|
+
try {
|
|
419
|
+
const child = spawn(process.execPath, [STANDALONE_SCRIPT], {
|
|
420
|
+
detached: true,
|
|
421
|
+
stdio: "ignore",
|
|
422
|
+
env: { ...process.env },
|
|
423
|
+
});
|
|
424
|
+
child.unref();
|
|
425
|
+
log(`[image-proxy] 已拉起独立代理进程 (pid ${child.pid})`);
|
|
426
|
+
}
|
|
427
|
+
catch (err) {
|
|
428
|
+
log(`[image-proxy] 拉起独立代理进程失败: ${err.message}(MCP 工具仍可用)`);
|
|
429
|
+
}
|
|
430
|
+
// 不等待子进程 listen 完成即返回:MCP 工具不依赖代理,代理会在后台就绪
|
|
431
|
+
resolve();
|
|
432
|
+
});
|
|
433
|
+
}
|
|
346
434
|
//# sourceMappingURL=imageProxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageProxy.js","sourceRoot":"","sources":["../../src/proxy/imageProxy.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,mDAAmD;AAEnD,uCAAuC;AACvC,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC;AACjD,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,gBAAgB;AAEvD,SAAS,GAAG,CAAC,GAAW;IACtB,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3B,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC;YACzC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mDAAmD;AAEnD,qDAAqD;AACrD,qDAAqD;AACrD,SAAS,YAAY;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC/C,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;YACnC,IAAI,IAAI;gBAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;AAClC,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;AAC9D,MAAM,mBAAmB,GACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAC/B,OAAO,CAAC,GAAG,CAAC,oBAAoB;IAChC,EAAE,CAAC;AACL,MAAM,iBAAiB,GACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAC7B,4EAA4E,CAAC;AAE/E,qDAAqD;AAErD,KAAK,UAAU,aAAa,CAC1B,UAAkB,EAClB,QAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,QAAQ,WAAW,UAAU,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;QAClC,MAAM;QACN,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;oBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE;iBAC1C;aACF;SACF;QACD,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAmBD,KAAK,UAAU,cAAc,CAC3B,OAAgC;IAEhC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE5C,wBAAwB;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;IAC5D,GAAG,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,oEAAoE;QACpE,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAA8C,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC1D,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qBAAqB,WAAW,YAAY;iBACnD,CAAC,CAAC;gBACH,GAAG,CAAC,wBAAwB,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5F,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,yBAA0B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAa,GAAa,CAAC,OAAO,GAAG;iBAC5C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,sFAAsF;aACjF,IACH,KAAK,EAAE,IAAI,KAAK,WAAW;YAC3B,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,EAC9C,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC1D,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gBAAgB,WAAW,YAAY;qBAC9C,CAAC,CAAC;oBACH,GAAG,CAAC,kCAAkC,UAAU,GAAG,CAAC,CAAC;gBACvD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,mCAAoC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjE,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,YAAa,GAAa,CAAC,OAAO,GAAG;qBAC5C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,sCAAsC;aACjC,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACvE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAyB,CAAC;YACpD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAkB,CAAC,CAAC;QACpE,CAAC;aACI,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,yCAAyC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aACI,CAAC;YACJ,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAmB;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5E,OAAO,CAAC,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAA4B,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,qDAAqD;AAErD,SAAS,cAAc,CACrB,GAAyB,EACzB,GAAwB,EACxB,IAAmB;IAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnC,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAA4B,CAAC;IAC7D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjC,6CAA6C;IAC7C,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,IAAI,mBAAmB,EAAE,CAAC;QACxB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,mBAAmB,EAAE,CAAC;QAC3D,OAAO,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAyB;QACpC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,IAAI,EAAE,QAAQ;QACd,OAAO;KACR,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;QACjD,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QAClC,GAAG,CAAC,uBAAuB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CACzE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,EAAE,CAAC;QACT,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IACD,QAAQ,CAAC,GAAG,EAAE,CAAC;AACjB,CAAC;AAED,qDAAqD;AAErD,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,QAAQ,CACN,mEAAmE,IAAI,6HAA6H,EACpM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CACnC,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzE,0CAA0C;YAC1C,iCAAiC;YACjC,QAAQ,CAAC,aAAa,IAAI,kDAAkD,EAAE;gBAC5E,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;QACD,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qDAAqD;AAErD,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,GAAG,CAAC,wDAAwD,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAClD,MAAM,kBAAkB,GACtB,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEpE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAE9E,kDAAkD;gBAClD,IAAI,OAAe,CAAC;gBACpB,IAAI,CAAC;oBACH,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBACrC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACrD,CAAC;yBAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC/C,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtD,CAAC;yBAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1C,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC/D,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;wBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;wBAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE;yBACnD,CAAC,CACH,CAAC;oBACJ,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;oBACrB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACxC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;4BACvC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gCAC/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oCAChC,cAAc;oCACd,IACE,KAAK,EAAE,IAAI,KAAK,OAAO;wCACvB,KAAK,EAAE,IAAI,KAAK,WAAW;wCAC3B,CAAC,KAAK,EAAE,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAC/D,CAAC;wCACD,QAAQ,GAAG,IAAI,CAAC;wCAChB,MAAM;oCACR,CAAC;gCACH,CAAC;4BACH,CAAC;4BACD,IAAI,QAAQ;gCAAE,MAAM;wBACtB,CAAC;oBACH,CAAC;oBAED,IAAI,QAAQ,EAAE,CAAC;wBACb,GAAG,CAAC,6BAA6B,CAAC,CAAC;wBACnC,WAAW,CAAC,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;wBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;wBAC5C,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,uBAAwB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBACrD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;wBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;wBAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE;yBAChE,CAAC,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC7B,GAAG,CAAC,uBAAuB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;YACxB,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC3C,OAAO,GAAG,IAAI,CAAC;gBACf,GAAG,CAAC,oBAAoB,UAAU,kBAAkB,CAAC,CAAC;gBACtD,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC9B,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBACzC,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,GAAG,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;gBAC/C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE;YAC1C,GAAG,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,yBAAyB,iBAAiB,EAAE,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"imageProxy.js","sourceRoot":"","sources":["../../src/proxy/imageProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* 独立常驻的图片拦截代理进程入口。
|
|
4
|
+
*
|
|
5
|
+
* 由第一个 MCP 进程通过 detached spawn 拉起,此后独立于任何 Claude Code 会话
|
|
6
|
+
* 常驻运行:任一会话退出都不影响代理,代理持续服务至自身崩溃或被主动 kill。
|
|
7
|
+
*
|
|
8
|
+
* 启动语义(见 imageProxy.ts 的 startImageProxy):
|
|
9
|
+
* - 拿到单例锁且 listen 成功 → 常驻服务
|
|
10
|
+
* - 锁已被占(已有代理在跑)→ 安静退出,让在跑的那个继续服务
|
|
11
|
+
* - listen 失败(端口被占)→ 释放锁、退出
|
|
12
|
+
*/
|
|
13
|
+
import { startImageProxy } from "./imageProxy.js";
|
|
14
|
+
startImageProxy().catch((err) => {
|
|
15
|
+
console.error("[vision-mcp-proxy] fatal:", err);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=standaloneProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standaloneProxy.js","sourceRoot":"","sources":["../../src/proxy/standaloneProxy.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import os from "os";
|
|
3
|
+
import path from "path";
|
|
1
4
|
import { DescribeClipboardInputSchema } from "../schemas.js";
|
|
2
5
|
import { DEFAULT_MODEL, CHARACTER_LIMIT } from "../constants.js";
|
|
3
6
|
import { readClipboardImage } from "../services/clipboard.js";
|
|
4
7
|
import { callMoonshot, handleMoonshotError } from "../services/moonshot.js";
|
|
8
|
+
// 排查用日志:MCP 工具走 stdio,console 输出用户看不到,写文件方便排查耗时
|
|
9
|
+
const LOG_FILE = path.join(os.tmpdir(), "vision-mcp-clipboard.log");
|
|
10
|
+
function log(msg) {
|
|
11
|
+
const line = `[${new Date().toISOString()}] ${msg}\n`;
|
|
12
|
+
console.error(line.trim());
|
|
13
|
+
fs.appendFile(LOG_FILE, line, () => { });
|
|
14
|
+
}
|
|
5
15
|
export function registerDescribeClipboardTool(server, getApiKey) {
|
|
6
16
|
server.registerTool("kimi_describe_clipboard", {
|
|
7
17
|
title: "Kimi 识别剪贴板图片",
|
|
@@ -40,10 +50,12 @@ Error Handling:
|
|
|
40
50
|
},
|
|
41
51
|
}, async (params) => {
|
|
42
52
|
const apiKey = getApiKey();
|
|
53
|
+
const t0 = Date.now();
|
|
43
54
|
// 1. 从剪贴板读取图片
|
|
44
55
|
let imageResult;
|
|
45
56
|
try {
|
|
46
57
|
imageResult = await readClipboardImage();
|
|
58
|
+
log(`读取剪贴板耗时 ${Date.now() - t0}ms, 图片 ${(imageResult.sizeBytes / 1024).toFixed(1)} KB (${imageResult.mimeType})`);
|
|
47
59
|
}
|
|
48
60
|
catch (err) {
|
|
49
61
|
return {
|
|
@@ -62,6 +74,7 @@ Error Handling:
|
|
|
62
74
|
];
|
|
63
75
|
const messages = [{ role: "user", content }];
|
|
64
76
|
// 3. 调用 Moonshot API
|
|
77
|
+
const t1 = Date.now();
|
|
65
78
|
let response;
|
|
66
79
|
try {
|
|
67
80
|
response = await callMoonshot({
|
|
@@ -70,6 +83,7 @@ Error Handling:
|
|
|
70
83
|
messages,
|
|
71
84
|
maxTokens: params.max_tokens,
|
|
72
85
|
});
|
|
86
|
+
log(`Moonshot 调用耗时 ${Date.now() - t1}ms, completion_tokens=${response.usage?.completion_tokens ?? "?"}`);
|
|
73
87
|
}
|
|
74
88
|
catch (err) {
|
|
75
89
|
return {
|
|
@@ -98,6 +112,7 @@ Error Handling:
|
|
|
98
112
|
if (text.length > CHARACTER_LIMIT) {
|
|
99
113
|
text = text.slice(0, CHARACTER_LIMIT) + `\n\n[已截断,原文长度 ${text.length} 字符]`;
|
|
100
114
|
}
|
|
115
|
+
log(`总耗时 ${Date.now() - t0}ms`);
|
|
101
116
|
return {
|
|
102
117
|
content: [{ type: "text", text }],
|
|
103
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describeClipboard.js","sourceRoot":"","sources":["../../src/tools/describeClipboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI5E,MAAM,UAAU,6BAA6B,CAC3C,MAAiB,EACjB,SAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;0CAyBuB;QACpC,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAA8B,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"describeClipboard.js","sourceRoot":"","sources":["../../src/tools/describeClipboard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "image-vision-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "MCP server for image recognition via vision models (extensible to multiple providers), with an HTTP image-intercepting proxy that lets text-only LLMs accept image input in Claude Code.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|