volcengine-imagegen-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/LICENSE +21 -0
- package/README.md +339 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +418 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Volcengine ImageGen MCP Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
20
|
+
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
21
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# 🎨 VolcEngine Image Generation MCP Server
|
|
2
|
+
|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](https://www.npmjs.com/package/volcengine-imagegen-mcp)
|
|
5
|
+
[](https://modelcontextprotocol.io)
|
|
6
|
+
|
|
7
|
+
> 基于 Model Context Protocol (MCP) 的服务器,为 Claude Desktop、Cursor、Trae 等 AI 应用提供火山引擎豆包生图能力。
|
|
8
|
+
|
|
9
|
+
## ✨ 特性
|
|
10
|
+
|
|
11
|
+
- 🎨 **文生图**: 根据文本提示词生成图片
|
|
12
|
+
- 🖼️ **图生图**: 根据参考图片和文本生成新图片
|
|
13
|
+
- 📸 **组图生成**: 生成一组内容关联的图片(最多15张)
|
|
14
|
+
- 🎯 **多模型支持**: 支持 doubao-seedream 4.5/4.0/3.0 系列
|
|
15
|
+
- 📐 **多尺寸支持**: 2K, 4K, 1024x1024, 2048x2048
|
|
16
|
+
- 🔄 **灵活输出**: 支持返回 URL 或 Base64 格式
|
|
17
|
+
- 💧 **水印控制**: 可选择是否添加水印
|
|
18
|
+
|
|
19
|
+
## 📦 安装
|
|
20
|
+
|
|
21
|
+
### 1. 全局安装(推荐)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install -g volcengine-imagegen-mcp
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 2. 使用 npx 运行(无需安装)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx volcengine-imagegen-mcp
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 🔑 配置 API Key
|
|
34
|
+
|
|
35
|
+
在使用之前,需要设置火山引擎 API Key:
|
|
36
|
+
|
|
37
|
+
### Windows
|
|
38
|
+
|
|
39
|
+
```cmd
|
|
40
|
+
set ARK_API_KEY=你的火山引擎API密钥
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### PowerShell
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
$env:ARK_API_KEY="你的火山引擎API密钥"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Linux/macOS
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
export ARK_API_KEY="你的火山引擎API密钥"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 如何获取 API Key?
|
|
56
|
+
|
|
57
|
+
1. 访问 [火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview)
|
|
58
|
+
2. 登录火山引擎账号
|
|
59
|
+
3. 创建 API Key
|
|
60
|
+
4. 复制 API Key 并设置环境变量
|
|
61
|
+
|
|
62
|
+
## 🚀 使用方法
|
|
63
|
+
|
|
64
|
+
### 在 Claude Desktop 中使用
|
|
65
|
+
|
|
66
|
+
1. 打开 Claude Desktop 设置
|
|
67
|
+
2. 找到 MCP Servers 配置项
|
|
68
|
+
3. 添加新服务器:
|
|
69
|
+
- **名称**: `volcengine-imagegen-mcp`
|
|
70
|
+
- **命令**: `npx volcengine-imagegen-mcp`
|
|
71
|
+
- **环境变量**: `ARK_API_KEY=你的API密钥`
|
|
72
|
+
4. 保存配置并重启 Claude Desktop
|
|
73
|
+
|
|
74
|
+
### 在 Cursor 中使用
|
|
75
|
+
|
|
76
|
+
1. 打开 Cursor 设置
|
|
77
|
+
2. 找到 MCP 配置
|
|
78
|
+
3. 添加服务器:
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"name": "volcengine-imagegen",
|
|
82
|
+
"command": "npx",
|
|
83
|
+
"args": ["volcengine-imagegen-mcp"],
|
|
84
|
+
"env": {
|
|
85
|
+
"ARK_API_KEY": "你的API密钥"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 在 Trae 中使用
|
|
91
|
+
|
|
92
|
+
Trae 原生支持火山引擎 MCP 服务,可以直接在火山引擎 MCP 市场中选择使用。
|
|
93
|
+
|
|
94
|
+
## 🛠️ 可用工具
|
|
95
|
+
|
|
96
|
+
### 1. generate_image - 文生图
|
|
97
|
+
|
|
98
|
+
根据文本提示词生成图片。
|
|
99
|
+
|
|
100
|
+
**参数**:
|
|
101
|
+
- `model` (string): 模型 ID,默认 "doubao-seedream-4.5"
|
|
102
|
+
- `prompt` (string): 图片生成提示词(支持中英文)
|
|
103
|
+
- `size` (string): 图片尺寸,默认 "2K"(支持:2K, 4K, 1024x1024, 2048x2048)
|
|
104
|
+
- `guidance_scale` (number): 文本权重(1-10),默认 2.5
|
|
105
|
+
- `response_format` (string): 返回格式,默认 "url"(支持:url, b64_json)
|
|
106
|
+
- `watermark` (boolean): 是否添加水印,默认 false
|
|
107
|
+
- `count` (number): 生成图片数量(1-4张),默认 1
|
|
108
|
+
|
|
109
|
+
**示例提示**:
|
|
110
|
+
```
|
|
111
|
+
生成一张充满活力的特写肖像,模特眼神犀利
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 2. image_to_image - 图生图
|
|
115
|
+
|
|
116
|
+
根据参考图片和文本提示词生成新图片。
|
|
117
|
+
|
|
118
|
+
**参数**:
|
|
119
|
+
- `model` (string): 模型 ID,默认 "doubao-seedream-4.5"
|
|
120
|
+
- `prompt` (string): 图片生成提示词
|
|
121
|
+
- `image_urls` (array): 参考图片 URL 列表(最多14张)
|
|
122
|
+
- `size` (string): 图片尺寸,默认 "2K"
|
|
123
|
+
- `guidance_scale` (number): 文本权重(1-10),默认 2.5
|
|
124
|
+
- `response_format` (string): 返回格式,默认 "url"
|
|
125
|
+
- `watermark` (boolean): 是否添加水印,默认 false
|
|
126
|
+
|
|
127
|
+
**示例提示**:
|
|
128
|
+
```
|
|
129
|
+
根据这张图片的风格,生成一张新的城市夜景照片
|
|
130
|
+
[上传参考图片]
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 3. generate_image_set - 组图生成
|
|
134
|
+
|
|
135
|
+
生成一组内容关联的图片(最多15张)。
|
|
136
|
+
|
|
137
|
+
**参数**:
|
|
138
|
+
- `model` (string): 模型 ID,默认 "doubao-seedream-4.5"
|
|
139
|
+
- `prompt` (string): 图片生成提示词
|
|
140
|
+
- `count` (number): 生成图片数量(2-15张),默认 4
|
|
141
|
+
- `size` (string): 图片尺寸,默认 "2K"
|
|
142
|
+
- `guidance_scale` (number): 文本权重(1-10),默认 2.5
|
|
143
|
+
- `response_format` (string): 返回格式,默认 "url"
|
|
144
|
+
- `watermark` (boolean): 是否添加水印,默认 false
|
|
145
|
+
|
|
146
|
+
**示例提示**:
|
|
147
|
+
```
|
|
148
|
+
生成一组4张科幻风格的太空探索主题插画
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 4. list_models - 获取模型列表
|
|
152
|
+
|
|
153
|
+
获取所有支持的模型及其说明。
|
|
154
|
+
|
|
155
|
+
## 📋 支持的模型
|
|
156
|
+
|
|
157
|
+
| 模型 ID | 说明 | 支持的功能 |
|
|
158
|
+
|---------|------|-------------|
|
|
159
|
+
| `doubao-seedream-4.5` | 豆包生图 4.5(最新) | ✅ 文生图 ✅ 图生图 ✅ 组图 ✅ 多图生图 |
|
|
160
|
+
| `doubao-seedream-4.0` | 豆包生图 4.0 | ✅ 文生图 ✅ 图生图 ✅ 组图 ✅ 多图生图 |
|
|
161
|
+
| `doubao-seedream-3.0-t2i` | 豆包生图 3.0 文生图 | ✅ 仅文生图 |
|
|
162
|
+
| `doubao-seedream-3.0-i2i` | 豆包生图 3.0 图生图 | ✅ 仅图生图 |
|
|
163
|
+
|
|
164
|
+
## 📸 快速开始
|
|
165
|
+
|
|
166
|
+
### 1️⃣ 安装
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npm install -g volcengine-imagegen-mcp
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 2️⃣ 配置 API Key
|
|
173
|
+
|
|
174
|
+
访问 [火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview) 获取 API Key,然后设置环境变量:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Windows PowerShell
|
|
178
|
+
$env:ARK_API_KEY="your-api-key-here"
|
|
179
|
+
|
|
180
|
+
# Linux/macOS
|
|
181
|
+
export ARK_API_KEY="your-api-key-here"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 3️⃣ 配置 Claude Desktop
|
|
185
|
+
|
|
186
|
+
编辑 Claude Desktop 配置文件(`claude_desktop_config.json`):
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"mcpServers": {
|
|
191
|
+
"volcengine-imagegen": {
|
|
192
|
+
"command": "npx",
|
|
193
|
+
"args": ["volcengine-imagegen-mcp"],
|
|
194
|
+
"env": {
|
|
195
|
+
"ARK_API_KEY": "your-api-key-here"
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 4️⃣ 开始创作
|
|
203
|
+
|
|
204
|
+
重启 Claude Desktop,然后直接对话:
|
|
205
|
+
- "帮我生成一只赛博朋克风格的猫"
|
|
206
|
+
- "根据这张照片生成卡通版本"
|
|
207
|
+
- "生成一组 4 张太空主题插画"
|
|
208
|
+
|
|
209
|
+
## ⚙️ 高级配置
|
|
210
|
+
|
|
211
|
+
### 环境变量
|
|
212
|
+
|
|
213
|
+
| 变量名 | 说明 | 必需 |
|
|
214
|
+
|---------|------|-------|
|
|
215
|
+
| `ARK_API_KEY` | 火山引擎 API 密钥 | ✅ 是 |
|
|
216
|
+
|
|
217
|
+
### 返回格式选择
|
|
218
|
+
|
|
219
|
+
- **url**: 返回图片下载链接(24小时内有效)
|
|
220
|
+
- **b64_json**: 直接返回 Base64 编码的图片数据
|
|
221
|
+
|
|
222
|
+
**建议**:
|
|
223
|
+
- 需要快速预览或嵌入应用 → 使用 `b64_json`
|
|
224
|
+
- 需要高质量下载或长期保存 → 使用 `url`
|
|
225
|
+
|
|
226
|
+
## 🎯 使用建议
|
|
227
|
+
|
|
228
|
+
### 提示词编写技巧
|
|
229
|
+
|
|
230
|
+
1. **详细描述**: 包含主体、风格、颜色、构图等要素
|
|
231
|
+
2. **中英文混合**: 模型对中英文都有良好理解能力
|
|
232
|
+
3. **风格指定**: 明确指定想要的风格(如"写实风格"、"动漫风格"等)
|
|
233
|
+
4. **质量关键词**: 添加"高清"、"4K"、"专业"等关键词提升质量
|
|
234
|
+
|
|
235
|
+
### 参数调优建议
|
|
236
|
+
|
|
237
|
+
| 参数 | 低值 | 高值 | 效果 |
|
|
238
|
+
|------|-------|-------|------|
|
|
239
|
+
| `guidance_scale` | 1-3 | 7-10 | 低值更自由创作,高值更严格遵循提示词 |
|
|
240
|
+
| `size` | 2K, 1024x1024 | 4K, 2048x2048 | 大尺寸需要更多时间和算力 |
|
|
241
|
+
|
|
242
|
+
### 成本控制
|
|
243
|
+
|
|
244
|
+
- 图片链接 **24小时后失效**,请及时下载
|
|
245
|
+
- 组图生成(15张)需要较长时间,建议先用少量测试
|
|
246
|
+
- 4K 分辨率生成成本高于 2K
|
|
247
|
+
|
|
248
|
+
## 💡 使用示例
|
|
249
|
+
|
|
250
|
+
### 📝 文生图示例
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
用户: 帮我生成一张照片,内容是日落时分的埃菲尔铁塔,背景是巴黎城市景观
|
|
254
|
+
Claude: [调用 generate_image 工具]
|
|
255
|
+
✓ 生成完成!图片包含金色的阳光洒在埃菲尔铁塔上...
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### 🖼️ 图生图示例
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
用户: [上传一张风景照]
|
|
262
|
+
用户: 把这张照片改成宫崎骏动画风格
|
|
263
|
+
Claude: [调用 image_to_image 工具]
|
|
264
|
+
✓ 转换完成!已将照片转换为温馨的吉卜力动画风格...
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### 🎨 组图生成示例
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
用户: 帮我设计一套猫咪主题的表情包,要 6 张不同表情
|
|
271
|
+
Claude: [调用 generate_image_set 工具,count=6]
|
|
272
|
+
✓ 已生成 6 张猫咪表情包:开心、生气、惊讶、卖萌、睡觉、思考...
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## 🎯 应用场景
|
|
276
|
+
|
|
277
|
+
- **内容创作**: 快速生成配图、插画、海报素材
|
|
278
|
+
- **设计灵感**: 探索不同的视觉风格和创意方向
|
|
279
|
+
- **图片编辑**: 风格迁移、图片重绘、创意合成
|
|
280
|
+
- **原型设计**: 为产品快速生成视觉概念图
|
|
281
|
+
- **教育培训**: 生成教学插图和示例图片
|
|
282
|
+
|
|
283
|
+
## 🔧 开发
|
|
284
|
+
|
|
285
|
+
### 构建
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
npm install
|
|
289
|
+
npm run build
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 本地运行
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
npm run start
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### 开发模式
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
npm run dev
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## 📄 许可证
|
|
305
|
+
|
|
306
|
+
[MIT](LICENSE) © fucheng830
|
|
307
|
+
|
|
308
|
+
## 🤝 贡献
|
|
309
|
+
|
|
310
|
+
欢迎提交 Issue 和 Pull Request!
|
|
311
|
+
|
|
312
|
+
1. Fork 本仓库
|
|
313
|
+
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
314
|
+
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
|
315
|
+
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
|
316
|
+
5. 开启 Pull Request
|
|
317
|
+
|
|
318
|
+
## 📞 支持
|
|
319
|
+
|
|
320
|
+
- 🐛 [问题反馈](https://github.com/fucheng830/volcengine-imagegen-mcp/issues)
|
|
321
|
+
- 📖 [火山引擎文档](https://www.volcengine.com/docs/)
|
|
322
|
+
- 💬 [讨论区](https://github.com/fucheng830/volcengine-imagegen-mcp/discussions)
|
|
323
|
+
|
|
324
|
+
## 🔗 相关链接
|
|
325
|
+
|
|
326
|
+
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
|
327
|
+
- [火山方舟控制台](https://console.volcengine.com/ark/)
|
|
328
|
+
- [豆包生图 API 文档](https://www.volcengine.com/docs/82379/)
|
|
329
|
+
- [Claude Desktop](https://claude.ai/download)
|
|
330
|
+
|
|
331
|
+
## ⭐ Star History
|
|
332
|
+
|
|
333
|
+
如果这个项目对你有帮助,请给个 Star 支持一下!
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
<div align="center">
|
|
338
|
+
<sub>Built with ❤️ by <a href="https://github.com/fucheng830">fucheng830</a>
|
|
339
|
+
</div>
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 火山引擎 AI 生图 MCP 服务器
|
|
3
|
+
* 纯 Node.js + TypeScript 实现(不使用 zod)
|
|
4
|
+
*/
|
|
5
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
6
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
7
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import axios from "axios";
|
|
9
|
+
// 配置和常量
|
|
10
|
+
const API_BASE_URL = "https://ark.cn-beijing.volces.com/api/v3";
|
|
11
|
+
const API_KEY = process.env.ARK_API_KEY;
|
|
12
|
+
if (!API_KEY) {
|
|
13
|
+
console.error("错误:未设置 ARK_API_KEY 环境变量");
|
|
14
|
+
console.error("请设置火山引擎 API Key");
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const SUPPORTED_MODELS = {
|
|
18
|
+
"doubao-seedream-4-5-251128": "豆包生图 4.5 (最新,支持多格式)",
|
|
19
|
+
"doubao-seedream-4-0-250828": "豆包生图 4.0",
|
|
20
|
+
"doubao-seedream-3-0-t2i-250415": "豆包生图 3.0 文生图",
|
|
21
|
+
"doubao-seedream-3-0-i2i": "豆包生图 3.0 图生图",
|
|
22
|
+
};
|
|
23
|
+
const SUPPORTED_SIZES = ["2K", "4K", "1024x1024", "2048x2048"];
|
|
24
|
+
// API 调用函数
|
|
25
|
+
async function generateSingleImage(params) {
|
|
26
|
+
try {
|
|
27
|
+
const response = await axios.post(`${API_BASE_URL}/images/generations`, {
|
|
28
|
+
model: params.model || "doubao-seedream-4-5-251128",
|
|
29
|
+
prompt: params.prompt,
|
|
30
|
+
size: params.size || "2K",
|
|
31
|
+
guidance_scale: params.guidance_scale || 2.5,
|
|
32
|
+
watermark: params.watermark || false,
|
|
33
|
+
response_format: params.response_format || "url",
|
|
34
|
+
}, {
|
|
35
|
+
headers: {
|
|
36
|
+
"Content-Type": "application/json",
|
|
37
|
+
Authorization: `Bearer ${API_KEY}`,
|
|
38
|
+
},
|
|
39
|
+
timeout: 120000,
|
|
40
|
+
});
|
|
41
|
+
return response.data;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (axios.isAxiosError(error)) {
|
|
45
|
+
const errorData = error.response?.data;
|
|
46
|
+
const errorMessage = errorData?.error?.message || error.message;
|
|
47
|
+
throw new Error(`API 调用失败:${errorMessage}`);
|
|
48
|
+
}
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// 工具定义
|
|
53
|
+
const tools = [
|
|
54
|
+
{
|
|
55
|
+
name: "generate_image",
|
|
56
|
+
description: "生成图片(文生图)。使用文字描述生成一张图片。",
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
model: {
|
|
61
|
+
type: "string",
|
|
62
|
+
description: "使用的模型ID",
|
|
63
|
+
default: "doubao-seedream-4-5-251128",
|
|
64
|
+
},
|
|
65
|
+
prompt: {
|
|
66
|
+
type: "string",
|
|
67
|
+
description: "图片生成提示词(支持中英文)",
|
|
68
|
+
minLength: 1,
|
|
69
|
+
maxLength: 2000,
|
|
70
|
+
},
|
|
71
|
+
size: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "图片尺寸",
|
|
74
|
+
enum: SUPPORTED_SIZES,
|
|
75
|
+
default: "2K",
|
|
76
|
+
},
|
|
77
|
+
guidance_scale: {
|
|
78
|
+
type: "number",
|
|
79
|
+
description: "文本权重(1-10)",
|
|
80
|
+
minimum: 1,
|
|
81
|
+
maximum: 10,
|
|
82
|
+
default: 2.5,
|
|
83
|
+
},
|
|
84
|
+
watermark: {
|
|
85
|
+
type: "boolean",
|
|
86
|
+
description: "是否添加水印",
|
|
87
|
+
default: false,
|
|
88
|
+
},
|
|
89
|
+
count: {
|
|
90
|
+
type: "number",
|
|
91
|
+
description: "生成图片数量(当前仅支持1张)",
|
|
92
|
+
minimum: 1,
|
|
93
|
+
maximum: 1,
|
|
94
|
+
default: 1,
|
|
95
|
+
},
|
|
96
|
+
response_format: {
|
|
97
|
+
type: "string",
|
|
98
|
+
description: "响应格式:url 或 b64_json",
|
|
99
|
+
enum: ["url", "b64_json"],
|
|
100
|
+
default: "url",
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
required: ["prompt"],
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: "image_to_image",
|
|
108
|
+
description: "图生图。基于参考图片生成新图片。",
|
|
109
|
+
inputSchema: {
|
|
110
|
+
type: "object",
|
|
111
|
+
properties: {
|
|
112
|
+
model: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description: "使用的模型ID(仅支持 4.5/4.0)",
|
|
115
|
+
default: "doubao-seedream-4-5-251128",
|
|
116
|
+
},
|
|
117
|
+
prompt: {
|
|
118
|
+
type: "string",
|
|
119
|
+
description: "图片生成提示词",
|
|
120
|
+
minLength: 1,
|
|
121
|
+
maxLength: 2000,
|
|
122
|
+
},
|
|
123
|
+
image_urls: {
|
|
124
|
+
type: "array",
|
|
125
|
+
description: "参考图片 URL 列表(最多14张)",
|
|
126
|
+
items: {
|
|
127
|
+
type: "string",
|
|
128
|
+
format: "uri",
|
|
129
|
+
},
|
|
130
|
+
minItems: 1,
|
|
131
|
+
maxItems: 14,
|
|
132
|
+
},
|
|
133
|
+
size: {
|
|
134
|
+
type: "string",
|
|
135
|
+
description: "图片尺寸",
|
|
136
|
+
enum: SUPPORTED_SIZES,
|
|
137
|
+
default: "2K",
|
|
138
|
+
},
|
|
139
|
+
guidance_scale: {
|
|
140
|
+
type: "number",
|
|
141
|
+
description: "文本权重",
|
|
142
|
+
minimum: 1,
|
|
143
|
+
maximum: 10,
|
|
144
|
+
default: 2.5,
|
|
145
|
+
},
|
|
146
|
+
response_format: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description: "响应格式",
|
|
149
|
+
enum: ["url", "b64_json"],
|
|
150
|
+
default: "url",
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
required: ["prompt", "image_urls"],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: "generate_image_set",
|
|
158
|
+
description: "批量生成图片。生成多张内容相关的图片(通过多次调用实现)。",
|
|
159
|
+
inputSchema: {
|
|
160
|
+
type: "object",
|
|
161
|
+
properties: {
|
|
162
|
+
model: {
|
|
163
|
+
type: "string",
|
|
164
|
+
description: "使用的模型ID",
|
|
165
|
+
default: "doubao-seedream-4-5-251128",
|
|
166
|
+
},
|
|
167
|
+
prompt: {
|
|
168
|
+
type: "string",
|
|
169
|
+
description: "图片生成提示词",
|
|
170
|
+
minLength: 1,
|
|
171
|
+
maxLength: 2000,
|
|
172
|
+
},
|
|
173
|
+
count: {
|
|
174
|
+
type: "number",
|
|
175
|
+
description: "生成图片数量(2-15张)",
|
|
176
|
+
minimum: 1,
|
|
177
|
+
maximum: 15,
|
|
178
|
+
default: 4,
|
|
179
|
+
},
|
|
180
|
+
size: {
|
|
181
|
+
type: "string",
|
|
182
|
+
description: "图片尺寸",
|
|
183
|
+
enum: SUPPORTED_SIZES,
|
|
184
|
+
default: "2K",
|
|
185
|
+
},
|
|
186
|
+
guidance_scale: {
|
|
187
|
+
type: "number",
|
|
188
|
+
description: "文本权重",
|
|
189
|
+
minimum: 1,
|
|
190
|
+
maximum: 10,
|
|
191
|
+
default: 2.5,
|
|
192
|
+
},
|
|
193
|
+
response_format: {
|
|
194
|
+
type: "string",
|
|
195
|
+
description: "响应格式",
|
|
196
|
+
enum: ["url", "b64_json"],
|
|
197
|
+
default: "url",
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
required: ["prompt", "count"],
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: "list_models",
|
|
205
|
+
description: "获取支持的模型列表和功能说明",
|
|
206
|
+
inputSchema: {
|
|
207
|
+
type: "object",
|
|
208
|
+
properties: {},
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
];
|
|
212
|
+
// 服务器设置
|
|
213
|
+
async function main() {
|
|
214
|
+
console.log("✅ 火山引擎 AI 生图 MCP 服务器已启动!");
|
|
215
|
+
console.log("📋 可用工具:");
|
|
216
|
+
console.log(" - generate_image: 文生图");
|
|
217
|
+
console.log(" - image_to_image: 图生图");
|
|
218
|
+
console.log(" - generate_image_set: 批量生成");
|
|
219
|
+
console.log(" - list_models: 获取模型列表");
|
|
220
|
+
console.log("");
|
|
221
|
+
const server = new Server({
|
|
222
|
+
name: "volcengine-imagegen-mcp",
|
|
223
|
+
version: "1.0.0",
|
|
224
|
+
}, {
|
|
225
|
+
capabilities: {
|
|
226
|
+
tools: {},
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
230
|
+
return {
|
|
231
|
+
tools: tools,
|
|
232
|
+
};
|
|
233
|
+
});
|
|
234
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
235
|
+
const { name, arguments: args } = request.params;
|
|
236
|
+
try {
|
|
237
|
+
switch (name) {
|
|
238
|
+
case "generate_image": {
|
|
239
|
+
const response = await generateSingleImage(args);
|
|
240
|
+
const images = response.data;
|
|
241
|
+
const count = images.length;
|
|
242
|
+
if (args.response_format === "b64_json") {
|
|
243
|
+
return {
|
|
244
|
+
content: [
|
|
245
|
+
{
|
|
246
|
+
type: "image",
|
|
247
|
+
data: images[0].b64_json || "",
|
|
248
|
+
mimeType: "image/png",
|
|
249
|
+
},
|
|
250
|
+
],
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
const imageList = images
|
|
255
|
+
.map((img, idx) => `${idx + 1}. ${img.url}`)
|
|
256
|
+
.join("\n");
|
|
257
|
+
return {
|
|
258
|
+
content: [
|
|
259
|
+
{
|
|
260
|
+
type: "text",
|
|
261
|
+
text: `✅ 成功生成 ${count} 张图片!
|
|
262
|
+
|
|
263
|
+
**模型**: ${response.model}
|
|
264
|
+
**提示词**: ${args.prompt}
|
|
265
|
+
**尺寸**: ${args.size}
|
|
266
|
+
**文本权重**: ${args.guidance_scale}
|
|
267
|
+
**水印**: ${args.watermark ? "是" : "否"}
|
|
268
|
+
|
|
269
|
+
**图片链接**:
|
|
270
|
+
${imageList}
|
|
271
|
+
|
|
272
|
+
⚠️ 注意:图片链接 24 小时后失效。`,
|
|
273
|
+
},
|
|
274
|
+
],
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
case "image_to_image": {
|
|
279
|
+
const response = await generateSingleImage(args);
|
|
280
|
+
const images = response.data;
|
|
281
|
+
if (args.response_format === "b64_json") {
|
|
282
|
+
return {
|
|
283
|
+
content: [
|
|
284
|
+
{
|
|
285
|
+
type: "image",
|
|
286
|
+
data: images[0].b64_json || "",
|
|
287
|
+
mimeType: "image/png",
|
|
288
|
+
},
|
|
289
|
+
],
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
const imageList = images
|
|
294
|
+
.map((img, idx) => `${idx + 1}. ${img.url}`)
|
|
295
|
+
.join("\n");
|
|
296
|
+
return {
|
|
297
|
+
content: [
|
|
298
|
+
{
|
|
299
|
+
type: "text",
|
|
300
|
+
text: `✅ 成功生成 ${images.length} 张图片!
|
|
301
|
+
|
|
302
|
+
**模型**: ${response.model}
|
|
303
|
+
**提示词**: ${args.prompt}
|
|
304
|
+
**参考图片**: ${args.image_urls.length} 张
|
|
305
|
+
**尺寸**: ${args.size}
|
|
306
|
+
|
|
307
|
+
**图片链接**:
|
|
308
|
+
${imageList}`,
|
|
309
|
+
},
|
|
310
|
+
],
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
case "generate_image_set": {
|
|
315
|
+
const count = Math.min(args.count, 15);
|
|
316
|
+
const size = args.size;
|
|
317
|
+
const response_format = args.response_format || "url";
|
|
318
|
+
const images = [];
|
|
319
|
+
for (let i = 0; i < count; i++) {
|
|
320
|
+
const response = await generateSingleImage({
|
|
321
|
+
model: args.model,
|
|
322
|
+
prompt: args.prompt,
|
|
323
|
+
size: size,
|
|
324
|
+
guidance_scale: args.guidance_scale,
|
|
325
|
+
response_format: response_format,
|
|
326
|
+
});
|
|
327
|
+
images.push(...response.data);
|
|
328
|
+
}
|
|
329
|
+
if (response_format === "b64_json") {
|
|
330
|
+
return {
|
|
331
|
+
content: [
|
|
332
|
+
{
|
|
333
|
+
type: "image",
|
|
334
|
+
data: images[0].b64_json || "",
|
|
335
|
+
mimeType: "image/png",
|
|
336
|
+
},
|
|
337
|
+
],
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
const imageList = images
|
|
342
|
+
.map((img, idx) => `${idx + 1}. ${img.url}`)
|
|
343
|
+
.join("\n");
|
|
344
|
+
return {
|
|
345
|
+
content: [
|
|
346
|
+
{
|
|
347
|
+
type: "text",
|
|
348
|
+
text: `✅ 成功生成 ${images.length} 张图片!
|
|
349
|
+
|
|
350
|
+
**模型**: ${args.model}
|
|
351
|
+
**提示词**: ${args.prompt}
|
|
352
|
+
**数量**: ${images.length} 张
|
|
353
|
+
**尺寸**: ${args.size}
|
|
354
|
+
**文本权重**: ${args.guidance_scale}
|
|
355
|
+
|
|
356
|
+
**图片链接**:
|
|
357
|
+
${imageList}
|
|
358
|
+
|
|
359
|
+
⚠️ 注意:图片链接 24 小时后失效。
|
|
360
|
+
💡 提示:当前通过 ${images.length} 次调用实现批量生成。`,
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
case "list_models": {
|
|
367
|
+
const modelsList = Object.entries(SUPPORTED_MODELS)
|
|
368
|
+
.map(([k, v]) => `- **${k}**\n ${v}`)
|
|
369
|
+
.join("\n");
|
|
370
|
+
const sizesList = SUPPORTED_SIZES.map((s) => `- ${s}`).join("\n");
|
|
371
|
+
return {
|
|
372
|
+
content: [
|
|
373
|
+
{
|
|
374
|
+
type: "text",
|
|
375
|
+
text: `📋 火山引擎豆包生图 - 支持的模型列表
|
|
376
|
+
|
|
377
|
+
${modelsList}
|
|
378
|
+
|
|
379
|
+
🎨 支持的尺寸:
|
|
380
|
+
${sizesList}
|
|
381
|
+
|
|
382
|
+
💡 提示:
|
|
383
|
+
- doubao-seedream-3.0-t2i 仅支持文生图
|
|
384
|
+
- doubao-seedream-3.0-i2i 仅支持图生图
|
|
385
|
+
- doubao-seedream-4.0/4.5 支持文生图、图生图、组图生成
|
|
386
|
+
|
|
387
|
+
📊 注意事项:
|
|
388
|
+
- 批量生成功能通过多次调用 API 实现
|
|
389
|
+
- count 参数当前仅支持 1 张`,
|
|
390
|
+
},
|
|
391
|
+
],
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
default: {
|
|
395
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
return {
|
|
401
|
+
content: [
|
|
402
|
+
{
|
|
403
|
+
type: "text",
|
|
404
|
+
text: `❌ 错误:${error.message}`,
|
|
405
|
+
},
|
|
406
|
+
],
|
|
407
|
+
isError: true,
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
const transport = new StdioServerTransport();
|
|
412
|
+
await server.connect(transport);
|
|
413
|
+
}
|
|
414
|
+
main().catch((error) => {
|
|
415
|
+
console.error("❌ 服务器启动失败:", error);
|
|
416
|
+
process.exit(1);
|
|
417
|
+
});
|
|
418
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "volcengine-imagegen-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for Volcengine AI image generation (豆包生图)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"volcengine-imagegen-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"mcp",
|
|
17
|
+
"model-context-protocol",
|
|
18
|
+
"volcengine",
|
|
19
|
+
"image-generation",
|
|
20
|
+
"doubao",
|
|
21
|
+
"火山引擎"
|
|
22
|
+
],
|
|
23
|
+
"author": "fucheng830",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/fucheng830/volcengine-imagegen-mcp.git"
|
|
28
|
+
},
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/fucheng830/volcengine-imagegen-mcp/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/fucheng830/volcengine-imagegen-mcp#readme",
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"README.md",
|
|
36
|
+
"LICENSE",
|
|
37
|
+
"package.json"
|
|
38
|
+
],
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
41
|
+
"axios": "^1.7.9"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^22.10.5",
|
|
45
|
+
"typescript": "^5.7.3"
|
|
46
|
+
},
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=18.0.0"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
}
|
|
53
|
+
}
|