luma-mcp 1.3.4 → 1.3.6

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 CHANGED
@@ -1,714 +1,272 @@
1
- # Luma MCP
2
-
3
- 多模型视觉理解 MCP 服务器,为不支持图片理解的 AI 助手提供视觉能力。
4
-
5
- [English](./docs/README_EN.md) | 中文
6
-
7
- ## 特性
8
-
9
- - **多模型支持**: 支持五个视觉模型
10
- - GLM-4.6V(智谱清言)- 付费,中文理解优秀
11
- - DeepSeek-OCR(硅基流动)- **免费使用**,OCR 能力强
12
- - Qwen3-VL-Flash(阿里云通义千问)- 付费,速度快成本低,支持思考模式
13
- - Doubao-Seed-1.6(火山方舟)- 付费,性价比高,支持多种版本
14
- - Hunyuan-Vision-1.5(腾讯混元)- 付费,图文推理强,多语言表现优秀
15
- - **简单设计**: 单一 `analyze_image` 工具处理所有图片分析任务
16
- - **智能理解**: 自动识别代码、UI、错误等不同场景
17
- - **全面支持**: 代码截图、界面设计、错误诊断、OCR 文字识别
18
- - **标准 MCP 协议**: 无缝集成 Claude Desktop、Cline 等 MCP 客户端
19
- - **URL 支持**: 支持本地文件和远程图片 URL
20
- - **重试机制**: 内置指数退避重试,提高可靠性
21
-
22
- ## 快速开始
23
-
24
- ### 前置要求
25
-
26
- - Node.js >= 18.0.0
27
- - **选择一种模型**:
28
- - **方案 A**: 智谱 AI API Key ([获取地址](https://open.bigmodel.cn/)) - 中文理解优秀
29
- - **方案 B**: 硅基流动 API Key ([获取地址](https://cloud.siliconflow.cn/)) - **免费使用**,OCR 能力强
30
- - **方案 C**: 阿里云百炼 API Key ([获取地址](https://bailian.console.aliyun.com/)) - 速度快成本低,支持思考模式
31
- - **方案 D**: 火山方舟 API Key ([获取地址](https://console.volcengine.com/ark)) - 性价比高,支持多种版本
32
- - **方案 E**: 腾讯混元 API Key ([获取地址](https://cloud.tencent.com/product/hunyuan)) - 图文推理强,多语言表现优秀
33
-
34
- ### 安装
35
-
36
- #### 方式 1: 本地开发(推荐用于测试)
37
-
38
- ```bash
39
- git clone https://github.com/JochenYang/luma-mcp.git
40
- cd luma-mcp
41
- npm install
42
- npm run build
43
- ```
44
-
45
- #### 方式 2: 使用 npx(需要先发布到 npm)
46
-
47
- ```bash
48
- npx luma-mcp
49
- ```
50
-
51
- ### 配置
52
-
53
- #### Claude Desktop
54
-
55
- **方案 A: 使用智谱 GLM-4.6V**:
56
-
57
- ```json
58
- {
59
- "mcpServers": {
60
- "luma": {
61
- "command": "npx",
62
- "args": ["-y", "luma-mcp"],
63
- "env": {
64
- "ZHIPU_API_KEY": "your-zhipu-api-key"
65
- }
66
- }
67
- }
68
- }
69
- ```
70
-
71
- **方案 B: 使用硅基流动 DeepSeek-OCR(免费)**:
72
-
73
- ```json
74
- {
75
- "mcpServers": {
76
- "luma": {
77
- "command": "npx",
78
- "args": ["-y", "luma-mcp"],
79
- "env": {
80
- "MODEL_PROVIDER": "siliconflow",
81
- "SILICONFLOW_API_KEY": "your-siliconflow-api-key"
82
- }
83
- }
84
- }
85
- }
86
- ```
87
-
88
- **方案 C: 使用阿里云通义千问 Qwen3-VL-Flash**:
89
-
90
- ```json
91
- {
92
- "mcpServers": {
93
- "luma": {
94
- "command": "npx",
95
- "args": ["-y", "luma-mcp"],
96
- "env": {
97
- "MODEL_PROVIDER": "qwen",
98
- "DASHSCOPE_API_KEY": "your-dashscope-api-key"
99
- }
100
- }
101
- }
102
- }
103
- ```
104
-
105
- **方案 D: 使用火山方舟 Doubao-Seed-1.6**:
106
-
107
- ```json
108
- {
109
- "mcpServers": {
110
- "luma": {
111
- "command": "npx",
112
- "args": ["-y", "luma-mcp"],
113
- "env": {
114
- "MODEL_PROVIDER": "volcengine",
115
- "VOLCENGINE_API_KEY": "your-volcengine-api-key",
116
- "MODEL_NAME": "doubao-seed-1-6-flash-250828"
117
- }
118
- }
119
- }
120
- }
121
- ```
122
-
123
- **方案 E: 使用腾讯混元 Hunyuan-Vision-1.5**:
124
-
125
- MODEL_NAME 可选:`hunyuan-t1-vision-20250916`(默认)或 `HY-vision-1.5-instruct`
126
-
127
- ```json
128
- {
129
- "mcpServers": {
130
- "luma": {
131
- "command": "npx",
132
- "args": ["-y", "luma-mcp"],
133
- "env": {
134
- "MODEL_PROVIDER": "hunyuan",
135
- "HUNYUAN_API_KEY": "your-hunyuan-api-key",
136
- "MODEL_NAME": "hunyuan-t1-vision-20250916"
137
- }
138
- }
139
- }
140
- }
141
- ```
142
-
143
- **本地开发(智谱)**:
144
-
145
- ```json
146
- {
147
- "mcpServers": {
148
- "luma": {
149
- "command": "node",
150
- "args": ["D:\\codes\\luma-mcp\\build\\index.js"],
151
- "env": {
152
- "ZHIPU_API_KEY": "your-zhipu-api-key"
153
- }
154
- }
155
- }
156
- }
157
- ```
158
-
159
- **本地开发(硅基流动)**:
160
-
161
- ```json
162
- {
163
- "mcpServers": {
164
- "luma": {
165
- "command": "node",
166
- "args": ["D:\\codes\\luma-mcp\\build\\index.js"],
167
- "env": {
168
- "MODEL_PROVIDER": "siliconflow",
169
- "SILICONFLOW_API_KEY": "your-siliconflow-api-key"
170
- }
171
- }
172
- }
173
- }
174
- ```
175
-
176
- **本地开发(腾讯混元)**:
177
-
178
- ```json
179
- {
180
- "mcpServers": {
181
- "luma": {
182
- "command": "node",
183
- "args": ["D:\\codes\\luma-mcp\\build\\index.js"],
184
- "env": {
185
- "MODEL_PROVIDER": "hunyuan",
186
- "HUNYUAN_API_KEY": "your-hunyuan-api-key",
187
- "MODEL_NAME": "hunyuan-t1-vision-20250916"
188
- }
189
- }
190
- }
191
- }
192
- ```
193
-
194
- 配置完成后重启 Claude Desktop。
195
-
196
- #### Cline (VSCode)
197
-
198
- 在项目根目录或 `.vscode/` 目录下创建 `mcp.json`
199
-
200
- **方案 A: 使用智谱 GLM-4.6V**:
201
-
202
- ```json
203
- {
204
- "mcpServers": {
205
- "luma": {
206
- "command": "npx",
207
- "args": ["-y", "luma-mcp"],
208
- "env": {
209
- "ZHIPU_API_KEY": "your-zhipu-api-key"
210
- }
211
- }
212
- }
213
- }
214
- ```
215
-
216
- **方案 B: 使用硅基流动 DeepSeek-OCR(免费)**:
217
-
218
- ```json
219
- {
220
- "mcpServers": {
221
- "luma": {
222
- "command": "npx",
223
- "args": ["-y", "luma-mcp"],
224
- "env": {
225
- "MODEL_PROVIDER": "siliconflow",
226
- "SILICONFLOW_API_KEY": "your-siliconflow-api-key"
227
- }
228
- }
229
- }
230
- }
231
- ```
232
-
233
- **方案 C: 使用阿里云通义千问 Qwen3-VL-Flash**:
234
-
235
- ```json
236
- {
237
- "mcpServers": {
238
- "luma": {
239
- "command": "npx",
240
- "args": ["-y", "luma-mcp"],
241
- "env": {
242
- "MODEL_PROVIDER": "qwen",
243
- "DASHSCOPE_API_KEY": "your-dashscope-api-key"
244
- }
245
- }
246
- }
247
- }
248
- ```
249
-
250
- **方案 D: 使用火山方舟 Doubao-Seed-1.6**:
251
-
252
- ```json
253
- {
254
- "mcpServers": {
255
- "luma": {
256
- "command": "npx",
257
- "args": ["-y", "luma-mcp"],
258
- "env": {
259
- "MODEL_PROVIDER": "volcengine",
260
- "VOLCENGINE_API_KEY": "your-volcengine-api-key",
261
- "MODEL_NAME": "doubao-seed-1-6-flash-250828"
262
- }
263
- }
264
- }
265
- }
266
- ```
267
-
268
- **方案 E: 使用腾讯混元 Hunyuan-Vision-1.5**:
269
-
270
- MODEL_NAME 可选:`hunyuan-t1-vision-20250916`(默认)或 `HY-vision-1.5-instruct`
271
-
272
- ```json
273
- {
274
- "mcpServers": {
275
- "luma": {
276
- "command": "npx",
277
- "args": ["-y", "luma-mcp"],
278
- "env": {
279
- "MODEL_PROVIDER": "hunyuan",
280
- "HUNYUAN_API_KEY": "your-hunyuan-api-key",
281
- "MODEL_NAME": "hunyuan-t1-vision-20250916"
282
- }
283
- }
284
- }
285
- }
286
- ```
287
-
288
- #### Claude Code (命令行)
289
-
290
- **使用智谱 GLM-4.6V**:
291
-
292
- ```bash
293
- claude mcp add -s user luma-mcp --env ZHIPU_API_KEY=your-api-key -- npx -y luma-mcp
294
- ```
295
-
296
- **使用硅基流动 DeepSeek-OCR(免费)**:
297
-
298
- ```bash
299
- claude mcp add -s user luma-mcp --env MODEL_PROVIDER=siliconflow --env SILICONFLOW_API_KEY=your-api-key -- npx -y luma-mcp
300
- ```
301
-
302
- **使用阿里云通义千问 Qwen3-VL-Flash**:
303
-
304
- ```bash
305
- claude mcp add -s user luma-mcp --env MODEL_PROVIDER=qwen --env DASHSCOPE_API_KEY=your-api-key -- npx -y luma-mcp
306
- ```
307
-
308
- **使用火山方舟 Doubao-Seed-1.6**:
309
-
310
- ```bash
311
- claude mcp add -s user luma-mcp --env MODEL_PROVIDER=volcengine --env VOLCENGINE_API_KEY=your-api-key --env MODEL_NAME=doubao-seed-1-6-flash-250828 -- npx -y luma-mcp
312
- ```
313
-
314
- **使用腾讯混元 Hunyuan-Vision-1.5**:
315
-
316
- ```bash
317
- claude mcp add -s user luma-mcp --env MODEL_PROVIDER=hunyuan --env HUNYUAN_API_KEY=your-api-key --env MODEL_NAME=hunyuan-t1-vision-20250916 -- npx -y luma-mcp
318
- ```
319
-
320
- #### 其他工具
321
-
322
- 更多 MCP 客户端配置方法请参考[智谱官方文档](https://docs.bigmodel.cn/cn/coding-plan/mcp/vision-mcp-server#claude-code)
323
-
324
- ## 使用方法
325
-
326
- ### 重要提示
327
-
328
- **MCP 工具调用机制**:
329
-
330
- - MCP 工具需要 AI 模型**主动调用**才会执行
331
- - 如果使用的 AI 模型本身支持视觉(如 Claude 4.5 Sonnet),它会优先使用自己的视觉能力
332
- - Luma MCP 主要服务于**不支持视觉的模型**(如 GPT-4、Claude Opus 等文本模型)
333
-
334
- **如何确保工具被调用**:
335
-
336
- 1. 使用完整工具名:`使用 mcp__luma-mcp__analyze_image 工具分析这张图片`
337
- 2. 使用简化名称:`用 analyze_image 工具查看 ./screenshot.png`
338
- 3. 提供图片路径:`请用图片分析工具查看 ./screenshot.png 中的代码错误`
339
- 4. 明确提及服务器:`通过 luma-mcp 服务器分析这张图片`
340
-
341
- **注意**: 直接在聊天框粘贴图片,非视觉模型不会自动调用 Luma,需要明确指示。
342
-
343
- ### 在 Claude code 中使用
344
-
345
- 配置完成后,在 Claude 对话中可以这样使用:
346
-
347
- **推荐用法(明确指示)**:
348
-
349
- ```
350
- 用户: 使用 Luma 分析 ./code-error.png,这段代码为什么报错?
351
- Claude: [调用 Luma 分析图片,返回详细分析]
352
- ```
353
-
354
- **或提供图片路径**:
355
-
356
- ```
357
- 用户: 请分析 https://example.com/screenshot.jpg 中的界面问题
358
- Claude: [自动调用 analyze_image 工具]
359
- ```
360
-
361
- ### 本地测试
362
-
363
- 不需要 MCP 客户端即可测试:
364
-
365
- **测试智谱 GLM-4.6V**:
366
-
367
- ```bash
368
- # 设置 API Key
369
- export ZHIPU_API_KEY="your-api-key" # macOS/Linux
370
- $env:ZHIPU_API_KEY="your-api-key" # Windows PowerShell
371
-
372
- # 测试本地图片
373
- npm run test:local ./test.png
374
- ```
375
-
376
- **测试硅基流动 DeepSeek-OCR**:
377
-
378
- ```bash
379
- # 设置 API Key 和提供商
380
- export MODEL_PROVIDER=siliconflow
381
- export SILICONFLOW_API_KEY="your-api-key" # macOS/Linux
382
-
383
- $env:MODEL_PROVIDER="siliconflow"
384
- $env:SILICONFLOW_API_KEY="your-api-key" # Windows PowerShell
385
-
386
- # 测试本地图片
387
- npm run test:local ./test.png
388
- ```
389
-
390
- **测试阿里云通义千问 Qwen3-VL-Flash**:
391
-
392
- ```bash
393
- # 设置 API Key 和提供商
394
- export MODEL_PROVIDER=qwen
395
- export DASHSCOPE_API_KEY="your-api-key" # macOS/Linux
396
-
397
- $env:MODEL_PROVIDER="qwen"
398
- $env:DASHSCOPE_API_KEY="your-api-key" # Windows PowerShell
399
-
400
- # 测试本地图片
401
- npm run test:local ./test.png
402
- ```
403
-
404
- **测试腾讯混元 Hunyuan-Vision-1.5**:
405
-
406
- ```bash
407
- # 设置 API Key 和提供商
408
- export MODEL_PROVIDER=hunyuan
409
- export HUNYUAN_API_KEY="your-api-key" # macOS/Linux
410
-
411
- $env:MODEL_PROVIDER="hunyuan"
412
- $env:HUNYUAN_API_KEY="your-api-key" # Windows PowerShell
413
-
414
- # 测试本地图片
415
- npm run test:local ./test.png
416
- ```
417
-
418
- **其他测试命令**:
419
-
420
- ```bash
421
- # 测试并提问
422
- npm run test:local ./code-error.png "这段代码有什么问题?"
423
-
424
- # 测试远程URL
425
- npm run test:local https://example.com/image.jpg
426
- ```
427
-
428
- ## 工具说明
429
-
430
- ### analyze_image
431
-
432
- 分析图片内容的通用工具。
433
-
434
- **参数**:
435
-
436
- - `image_source` (必需): 图片来源,支持三种格式
437
- - **本地文件**: 绝对路径或相对路径(例:`./image.png`, `C:\Users\...\image.jpg`)
438
- - **远程 URL**: https:// 开头的 URL(例:`https://example.com/pic.jpg`)
439
- - **Data URI**: Base64 编码的图片数据(例:`data:image/png;base64,iVBORw0KGg...`)
440
- - 支持格式: JPG, PNG, WebP, GIF
441
- - `prompt` (必需): 分析指令或问题
442
-
443
- **示例**:
444
-
445
- ```typescript
446
- // 通用分析
447
- analyze_image({
448
- image_source: "./screenshot.png",
449
- prompt: "请详细分析这张图片的内容",
450
- });
451
-
452
- // 代码分析
453
- analyze_image({
454
- image_source: "./code-error.png",
455
- prompt: "这段代码为什么报错?请提供修复建议",
456
- });
457
-
458
- // UI 分析
459
- analyze_image({
460
- image_source: "https://example.com/ui.png",
461
- prompt: "分析这个界面的布局和可用性问题",
462
- });
463
-
464
- // Data URI (当客户端支持时)
465
- analyze_image({
466
- image_source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...",
467
- prompt: "识别图片中的所有文字",
468
- });
469
- ```
470
-
471
- ## 环境变量
472
-
473
- ### 通用配置
474
-
475
- | 变量名 | 必需 | 默认值 | 说明 |
476
- |------------------------|------|---------|----------------------------------------------------------------|
477
- | `MODEL_PROVIDER` | 否 | `zhipu` | 模型提供商:`zhipu`、`siliconflow`、`qwen`、`volcengine`、`hunyuan` |
478
- | `MODEL_NAME` | 否 | 见下文 | 模型名称(自动根据提供商选择) |
479
- | `MAX_TOKENS` | 否 | `16384` | 最大生成 tokens |
480
- | `TEMPERATURE` | 否 | `0.7` | 温度参数 (0-1) |
481
- | `TOP_P` | 否 | `0.7` | Top-p 参数 (0-1) |
482
- | `ENABLE_THINKING` | 否 | `true` | 是否启用思考模式(GLM-4.6V、Qwen3-VL-Flash、Doubao-Seed-1.6) |
483
- | `MULTI_CROP` | 否 | `true` | 是否启用多裁剪分析(大图文字场景) |
484
- | `MULTI_CROP_MAX_TILES` | 否 | `5` | 多裁剪最大分片数(含原图) |
485
-
486
- ### 智谱 GLM-4.6V 专用
487
-
488
- | 变量名 | 必需 | 默认值 | 说明 |
489
- |-----------------|----------------|--------|---------------------|
490
- | `ZHIPU_API_KEY` | 是(使用智谱时) | - | 智谱 AI 的 API 密钥 |
491
-
492
- 默认模型:`glm-4.6v`
493
-
494
- ### 硅基流动 DeepSeek-OCR 专用
495
-
496
- | 变量名 | 必需 | 默认值 | 说明 |
497
- |-----------------------|--------------------|--------|---------------------|
498
- | `SILICONFLOW_API_KEY` | 是(使用硅基流动时) | - | 硅基流动的 API 密钥 |
499
-
500
- 默认模型:`deepseek-ai/DeepSeek-OCR`
501
-
502
- ### 阿里云通义千问 Qwen3-VL-Flash 专用
503
-
504
- | 变量名 | 必需 | 默认值 | 说明 |
505
- |---------------------|----------------|--------|-----------------------|
506
- | `DASHSCOPE_API_KEY` | 是(使用千问时) | - | 阿里云百炼的 API 密钥 |
507
-
508
- 默认模型:`qwen3-vl-flash`
509
-
510
- ### 腾讯混元 Hunyuan-Vision-1.5 专用
511
-
512
- | 变量名 | 必需 | 默认值 | 说明 |
513
- |-------------------|----------------|--------|-------------------|
514
- | `HUNYUAN_API_KEY` | 是(使用混元时) | - | 腾讯混元 API 密钥 |
515
-
516
- 默认模型:`hunyuan-t1-vision-20250916`
517
-
518
- 可选模型:`HY-vision-1.5-instruct`
519
-
520
- **思考模式说明**:
521
-
522
- - 默认开启,提高图片分析的准确性和详细程度
523
- - 如需关闭(提高速度、降低成本),请在配置文件中设置:
524
- ```json
525
- {
526
- "mcpServers": {
527
- "luma": {
528
- "command": "npx",
529
- "args": ["-y", "luma-mcp"],
530
- "env": {
531
- "ZHIPU_API_KEY": "your-api-key",
532
- "ENABLE_THINKING": "false"
533
- }
534
- }
535
- }
536
- }
537
- ```
538
- - 关闭后可节省 20-30% tokens 消耗,响应速度提升约 30%
539
-
540
- ## 开发
541
-
542
- ```bash
543
- # 开发模式(监听文件变化)
544
- npm run watch
545
-
546
- # 构建
547
- npm run build
548
-
549
- # 本地测试
550
- npm run test:local <图片路径> [问题]
551
- ```
552
-
553
- ## 项目结构
554
-
555
- ```
556
- luma-mcp/
557
- ├── src/
558
- │ ├── index.ts # MCP 服务器入口
559
- │ ├── config.ts # 配置管理(支持多模型)
560
- │ ├── vision-client.ts # 视觉模型客户端接口
561
- │ ├── zhipu-client.ts # GLM-4.6V API 客户端
562
- │ ├── siliconflow-client.ts # DeepSeek-OCR API 客户端
563
- │ ├── qwen-client.ts # Qwen3-VL API 客户端
564
- │ ├── volcengine-client.ts # Doubao-Seed-1.6 API 客户端
565
- │ ├── hunyuan-client.ts # Hunyuan-Vision-1.5 API 客户端
566
- │ ├── image-processor.ts # 图片处理
567
- │ └── utils/
568
- │ ├── logger.ts # 日志工具
569
- │ └── helpers.ts # 工具函数
570
- ├── test/
571
- │ ├── test-local.ts # 本地测试脚本
572
- │ ├── test-qwen.ts # Qwen 测试脚本
573
- │ ├── test-deepseek-raw.ts # DeepSeek 原始测试脚本
574
- │ └── test-data-uri.ts # Data URI 测试脚本
575
- ├── docs/
576
- │ ├── design.md # 设计文档
577
- │ ├── installation.md # 安装指南
578
- │ └── README_EN.md # 英文文档
579
- ├── build/ # 编译输出
580
- └── package.json
581
- ```
582
-
583
- ## 常见问题
584
-
585
- ### 如何获取 API Key?
586
-
587
- **智谱 GLM-4.6V**:
588
-
589
- 1. 访问 [智谱开放平台](https://open.bigmodel.cn/)
590
- 2. 注册/登录账号
591
- 3. 进入控制台创建 API Key
592
- 4. 复制 API Key 到配置文件
593
-
594
- **硅基流动 DeepSeek-OCR(免费)**:
595
-
596
- 1. 访问 [硅基流动平台](https://cloud.siliconflow.cn/)
597
- 2. 注册/登录账号
598
- 3. 进入 API 管理创建 API Key
599
- 4. 复制 API Key 到配置文件
600
-
601
- **阿里云通义千问 Qwen3-VL-Flash**:
602
-
603
- 1. 访问 [阿里云百炼平台](https://bailian.console.aliyun.com/)
604
- 2. 注册/登录账号
605
- 3. 进入 API-KEY 管理创建 API Key
606
- 4. 复制 API Key 到配置文件
607
-
608
- **腾讯混元 Hunyuan-Vision-1.5**:
609
-
610
- 1. 访问 [腾讯混元控制台](https://cloud.tencent.com/product/hunyuan)
611
- 2. 注册/登录账号
612
- 3. 进入 API Key 管理创建 API Key
613
- 4. 复制 API Key 到配置文件
614
-
615
- ### 支持哪些图片格式?
616
-
617
- 支持 JPG、PNG、WebP、GIF 格式。建议使用 JPG 格式以获得更好的压缩率。
618
-
619
- ### 什么是 Data URI?
620
-
621
- Data URI 是一种将图片数据嵌入字符串的方式,格式为:
622
-
623
- ```
624
- data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...
625
- ```
626
-
627
- **使用场景**:
628
-
629
- - 当 MCP 客户端(如 Claude Desktop)支持时,可以直接传递用户粘贴的图片
630
- - 无需保存为临时文件,更加高效
631
- - 当前支持状态:**服务器已支持**,等待客户端实现
632
-
633
- ### 图片大小限制?
634
-
635
- - 最大文件大小: 10MB
636
- - 超过 2MB 的图片会自动压缩
637
- - 推荐分辨率: 800-2048 像素
638
-
639
- ### 如何查看日志?
640
-
641
- 日志文件位置: `~/.luma-mcp/luma-mcp-YYYY-MM-DD.log`
642
-
643
- ### API 调用失败怎么办?
644
-
645
- 1. 检查 API Key 是否正确
646
- 2. 确认账户余额充足(智谱/阿里云)
647
- 3. 检查网络连接
648
- 4. 查看日志文件了解详细错误信息
649
-
650
- ### 成本如何?
651
-
652
- **硅基流动 DeepSeek-OCR**: **完全免费**,无需付费!
653
-
654
- **智谱 GLM-4.6V**: 定价请参考[智谱官方定价](https://open.bigmodel.cn/pricing)。
655
-
656
- **阿里云通义千问 Qwen3-VL-Flash**: 定价请参考[阿里云百炼定价](https://help.aliyun.com/zh/model-studio/getting-started/models)。
657
-
658
- 典型场景估算(已启用思考模式):
659
-
660
- - 简单图片理解: 500-1000 tokens
661
- - 代码截图分析: 1500-2500 tokens
662
- - 详细 UI 分析: 2000-3000 tokens
663
-
664
- 关闭思考模式可节省约 20-30% tokens。如需关闭,请设置 `ENABLE_THINKING=false`。
665
-
666
- ### 如何选择模型?
667
-
668
- | 特性 | GLM-4.6V(智谱) | DeepSeek-OCR(硅基流动) | Qwen3-VL-Flash(阿里云) | Doubao-Seed-1.6(火山方舟) | Hunyuan-Vision-1.5(腾讯混元) |
669
- |---------------|----------------|------------------------|------------------------|---------------------------|------------------------------|
670
- | **费用** | 收费 | **完全免费** | 收费 | 收费 | 收费 |
671
- | **中文理解** | 优秀 | 良好 | **优秀** | 优秀 | **优秀** |
672
- | **OCR 能力** | 良好 | **优秀** | 优秀 | 良好 | 优秀 |
673
- | **思考模式** | 支持 | 不支持 | 支持 | 支持 | 默认思考版模型 |
674
- | **速度/成本** | 中等 | 免费 | **快速/低成本** | 高性价比 | 中等 |
675
- | **适用场景** | 通用图片分析 | OCR、文字识别 | 快速分析、3D 定位 | 高性价比通用分析 | 复杂图文推理、多语言理解 |
676
-
677
- **推荐**:
678
-
679
- - 需要 OCR 或文字识别:选择 **DeepSeek-OCR**(免费)
680
- - 需要快速低成本分析:选择 **Qwen3-VL-Flash**
681
- - 需要高性价比通用分析:选择 **Doubao-Seed-1.6**
682
- - 需要深度图片理解:选择 **GLM-4.6V**
683
- - 需要复杂图文推理或多语言理解:选择 **Hunyuan-Vision-1.5**
684
-
685
- ## 贡献
686
-
687
- 欢迎提交 Issue 和 Pull Request!
688
-
689
- ## 许可证
690
-
691
- MIT License
692
-
693
- ## 相关链接
694
-
695
- - [智谱 AI 开放平台](https://open.bigmodel.cn/)
696
- - [GLM-4.6V 文档](https://docs.bigmodel.cn/cn/guide/models/vlm/glm-4.6v)
697
- - [硅基流动平台](https://cloud.siliconflow.cn/)
698
- - [DeepSeek-OCR 文档](https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions)
699
- - [阿里云百炼平台](https://bailian.console.aliyun.com/)
700
- - [Qwen3-VL 文档](https://help.aliyun.com/zh/model-studio/getting-started/models)
701
- - [腾讯混元平台](https://cloud.tencent.com/product/hunyuan)
702
- - [MCP 协议文档](https://modelcontextprotocol.io/)
703
-
704
- ## 更新日志
705
-
706
- 更多更新历史请查看 [CHANGELOG.md](./CHANGELOG.md)
707
-
708
- ## 作者
709
-
710
- Jochen
711
-
712
- ---
713
-
714
- **注意**: 请勿在公开仓库中提交包含真实 API Key 的配置文件。
1
+ # Luma MCP
2
+
3
+ 多模型视觉理解 MCP 服务器,为不支持原生视觉能力的 AI 助手提供统一的图片分析能力。
4
+
5
+ [English](./docs/README_EN.md) | 中文
6
+
7
+ ## 特性
8
+
9
+ - 多模型支持:GLM-4.6V、DeepSeek-OCR、Qwen3-VL-Flash、Doubao-Seed-1.6、Hunyuan-Vision-1.5
10
+ - 单工具设计:统一通过 `image_understand` 完成图片理解
11
+ - 面向复杂截图优化:支持大图多裁剪、文本密集场景保真处理
12
+ - 统一预处理链路:本地文件、远程 URL、Data URI 都进入同一套处理流程
13
+ - 适用场景完整:代码截图、UI 截图、报错截图、文档截图、OCR
14
+ - 标准 MCP 协议:可接入 Claude Desktop、Cline、Claude Code 等客户端
15
+ - 内置重试:降低临时网络或模型请求失败带来的影响
16
+
17
+ ## 快速开始
18
+
19
+ ### 前置要求
20
+
21
+ - Node.js >= 18
22
+ - 任意一个模型提供商的 API Key
23
+
24
+ ### 安装
25
+
26
+ ```bash
27
+ git clone https://github.com/JochenYang/luma-mcp.git
28
+ cd luma-mcp
29
+ npm install
30
+ npm run build
31
+ ```
32
+
33
+ 也可以在 MCP 配置中直接使用:
34
+
35
+ ```bash
36
+ npx -y luma-mcp
37
+ ```
38
+
39
+ ## 配置
40
+
41
+ ### Claude Desktop 示例
42
+
43
+ ```json
44
+ {
45
+ "mcpServers": {
46
+ "luma": {
47
+ "command": "npx",
48
+ "args": ["-y", "luma-mcp"],
49
+ "env": {
50
+ "MODEL_PROVIDER": "zhipu",
51
+ "ZHIPU_API_KEY": "your-api-key"
52
+ }
53
+ }
54
+ }
55
+ }
56
+ ```
57
+
58
+ 把 `MODEL_PROVIDER` 和对应密钥替换为你实际使用的提供商:
59
+
60
+ - `zhipu` -> `ZHIPU_API_KEY`
61
+ - `siliconflow` -> `SILICONFLOW_API_KEY`
62
+ - `qwen` -> `DASHSCOPE_API_KEY`
63
+ - `volcengine` -> `VOLCENGINE_API_KEY`
64
+ - `hunyuan` -> `HUNYUAN_API_KEY`
65
+
66
+ 可选模型覆盖:
67
+
68
+ - `MODEL_NAME=doubao-seed-1-6-flash-250828`
69
+ - `MODEL_NAME=hunyuan-t1-vision-20250916`
70
+ - `MODEL_NAME=HY-vision-1.5-instruct`
71
+
72
+ ### 快捷配置命令
73
+
74
+ #### Claude Code
75
+
76
+ ```bash
77
+ # Zhipu
78
+ claude mcp add -s user luma-mcp --env MODEL_PROVIDER=zhipu --env ZHIPU_API_KEY=your-api-key -- npx -y luma-mcp
79
+
80
+ # SiliconFlow
81
+ claude mcp add -s user luma-mcp --env MODEL_PROVIDER=siliconflow --env SILICONFLOW_API_KEY=your-api-key -- npx -y luma-mcp
82
+
83
+ # Qwen
84
+ claude mcp add -s user luma-mcp --env MODEL_PROVIDER=qwen --env DASHSCOPE_API_KEY=your-api-key -- npx -y luma-mcp
85
+
86
+ # Volcengine
87
+ claude mcp add -s user luma-mcp --env MODEL_PROVIDER=volcengine --env VOLCENGINE_API_KEY=your-api-key --env MODEL_NAME=doubao-seed-1-6-flash-250828 -- npx -y luma-mcp
88
+
89
+ # Hunyuan
90
+ claude mcp add -s user luma-mcp --env MODEL_PROVIDER=hunyuan --env HUNYUAN_API_KEY=your-api-key --env MODEL_NAME=hunyuan-t1-vision-20250916 -- npx -y luma-mcp
91
+ ```
92
+
93
+ #### 本地开发模式
94
+
95
+ ```json
96
+ {
97
+ "mcpServers": {
98
+ "luma": {
99
+ "command": "node",
100
+ "args": ["D:\\codes\\luma-mcp\\build\\index.js"],
101
+ "env": {
102
+ "MODEL_PROVIDER": "zhipu",
103
+ "ZHIPU_API_KEY": "your-api-key"
104
+ }
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ #### Cline / VSCode
111
+
112
+ 在项目根目录或 `.vscode/` 下创建 `mcp.json`:
113
+
114
+ ```json
115
+ {
116
+ "mcpServers": {
117
+ "luma": {
118
+ "command": "npx",
119
+ "args": ["-y", "luma-mcp"],
120
+ "env": {
121
+ "MODEL_PROVIDER": "zhipu",
122
+ "ZHIPU_API_KEY": "your-api-key"
123
+ }
124
+ }
125
+ }
126
+ }
127
+ ```
128
+
129
+ ## 使用方式
130
+
131
+ ### `image_understand`
132
+
133
+ 参数:
134
+
135
+ - `image_source`:本地路径、HTTP(S) 图片 URL、Data URI
136
+ - `prompt`:用户对图片的原始问题
137
+
138
+ 示例:
139
+
140
+ ```typescript
141
+ image_understand({
142
+ image_source: "./screenshot.png",
143
+ prompt: "分析这个页面的布局和主要组件结构",
144
+ });
145
+
146
+ image_understand({
147
+ image_source: "./code-error.png",
148
+ prompt: "这段代码为什么报错?请给出修复建议",
149
+ });
150
+
151
+ image_understand({
152
+ image_source: "https://example.com/ui.png",
153
+ prompt: "找出这个界面的可用性问题",
154
+ });
155
+ ```
156
+
157
+ ### 使用建议
158
+
159
+ - 非视觉模型需要明确提示调用 MCP 工具
160
+ - 代码截图、OCR、长图、表格这类文本密集图片会自动启用更保真的处理方式
161
+ - 大图会按配置自动生成原图加裁剪图,提高细节理解能力
162
+
163
+ ## 环境变量
164
+
165
+ ### 通用配置
166
+
167
+ | 变量名 | 默认值 | 说明 |
168
+ | --- | --- | --- |
169
+ | `MODEL_PROVIDER` | `zhipu` | 模型提供商:`zhipu`、`siliconflow`、`qwen`、`volcengine`、`hunyuan` |
170
+ | `MODEL_NAME` | 自动选择 | 模型名称 |
171
+ | `MAX_TOKENS` | `16384` | 最大生成 token 数 |
172
+ | `TEMPERATURE` | `0.7` | 温度参数 |
173
+ | `TOP_P` | `0.7` | Top-p 参数 |
174
+ | `ENABLE_THINKING` | `true` | 启用思考模式(若模型支持) |
175
+ | `MULTI_CROP` | `true` | 启用大图多裁剪分析 |
176
+ | `MULTI_CROP_MAX_TILES` | `5` | 最大分片数(含原图) |
177
+ | `BASE_VISION_PROMPT` | 内置默认值 | 自定义基础视觉提示词 |
178
+
179
+ ### 提供商密钥
180
+
181
+ | 提供商 | 必填环境变量 | 默认模型 |
182
+ | --- | --- | --- |
183
+ | Zhipu | `ZHIPU_API_KEY` | `glm-4.6v` |
184
+ | SiliconFlow | `SILICONFLOW_API_KEY` | `deepseek-ai/DeepSeek-OCR` |
185
+ | Qwen | `DASHSCOPE_API_KEY` | `qwen3-vl-flash` |
186
+ | Volcengine | `VOLCENGINE_API_KEY` | `doubao-seed-1-6-flash-250828` |
187
+ | Hunyuan | `HUNYUAN_API_KEY` | `hunyuan-t1-vision-20250916` |
188
+
189
+ ## 本地测试
190
+
191
+ ```bash
192
+ # 基础测试
193
+ npm run test:local ./test.png
194
+
195
+ # 带问题测试
196
+ npm run test:local ./code-error.png "这段代码为什么报错?"
197
+
198
+ # 远程图片测试
199
+ npm run test:local https://example.com/image.jpg
200
+
201
+ # 检查源码和测试脚本类型
202
+ npm run typecheck
203
+ ```
204
+
205
+ ## 图片与处理限制
206
+
207
+ - 支持格式:JPG、PNG、WebP、GIF
208
+ - 最大输入大小:10MB
209
+ - 超过 2MB 的图片会自动压缩
210
+ - 远程 URL 会先拉取到统一预处理链路,再发送给模型
211
+
212
+ ## 项目结构
213
+
214
+ ```text
215
+ luma-mcp/
216
+ ├── src/
217
+ │ ├── index.ts # MCP 服务器入口
218
+ │ ├── config.ts # 配置管理
219
+ │ ├── vision-client.ts # 视觉模型客户端接口
220
+ │ ├── zhipu-client.ts # GLM-4.6V 客户端
221
+ │ ├── siliconflow-client.ts # DeepSeek-OCR 客户端
222
+ │ ├── qwen-client.ts # Qwen3-VL 客户端
223
+ │ ├── volcengine-client.ts # Doubao-Seed-1.6 客户端
224
+ │ ├── hunyuan-client.ts # Hunyuan-Vision-1.5 客户端
225
+ │ ├── image-processor.ts # 图片预处理与裁剪
226
+ │ └── utils/
227
+ │ ├── helpers.ts
228
+ │ └── logger.ts
229
+ ├── test/
230
+ │ ├── test-local.ts
231
+ │ ├── test-qwen.ts
232
+ │ ├── test-deepseek-raw.ts
233
+ │ └── test-data-uri.ts
234
+ ├── docs/
235
+ │ └── README_EN.md
236
+ ├── build/
237
+ ├── package.json
238
+ └── tsconfig.json
239
+ ```
240
+
241
+ ## 模型选择建议
242
+
243
+ - OCR、文字识别:DeepSeek-OCR
244
+ - 快速低成本通用分析:Qwen3-VL-Flash
245
+ - 高性价比通用分析:Doubao-Seed-1.6
246
+ - 深度图片理解:GLM-4.6V
247
+ - 复杂图文推理、多语言:Hunyuan-Vision-1.5
248
+
249
+ ## 开发
250
+
251
+ ```bash
252
+ npm run watch
253
+ npm run build
254
+ npm run typecheck
255
+ ```
256
+
257
+ ## 相关链接
258
+
259
+ - [智谱开放平台](https://open.bigmodel.cn/)
260
+ - [硅基流动平台](https://cloud.siliconflow.cn/)
261
+ - [阿里云百炼](https://bailian.console.aliyun.com/)
262
+ - [火山方舟](https://console.volcengine.com/ark)
263
+ - [腾讯混元](https://cloud.tencent.com/product/hunyuan)
264
+ - [MCP 协议](https://modelcontextprotocol.io/)
265
+
266
+ ## 更新历史
267
+
268
+ [CHANGELOG.md](./CHANGELOG.md)
269
+
270
+ ## 许可证
271
+
272
+ MIT