@bashcat/ai-image-chat-mcp 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +76 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4,16 +4,19 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
4
4
|
import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import dotenv from "dotenv";
|
|
6
6
|
import axios from "axios";
|
|
7
|
+
import fs from "fs";
|
|
8
|
+
import path from "path";
|
|
7
9
|
// 載入環境變數
|
|
8
10
|
dotenv.config();
|
|
9
11
|
class AIImageChatMCPServer {
|
|
10
12
|
server;
|
|
11
13
|
apiKey;
|
|
12
14
|
baseUrl;
|
|
15
|
+
outputDir;
|
|
13
16
|
constructor() {
|
|
14
17
|
this.server = new Server({
|
|
15
18
|
name: "ai-image-chat-mcp-server",
|
|
16
|
-
version: "1.0.
|
|
19
|
+
version: "1.0.4",
|
|
17
20
|
}, {
|
|
18
21
|
capabilities: {
|
|
19
22
|
tools: {},
|
|
@@ -22,11 +25,26 @@ class AIImageChatMCPServer {
|
|
|
22
25
|
// 從環境變數獲取 API 配置
|
|
23
26
|
this.apiKey = process.env.AI_API_KEY || "";
|
|
24
27
|
this.baseUrl = process.env.AI_API_BASE_URL || "https://api.laozhang.ai/v1";
|
|
28
|
+
// 設定圖片輸出目錄,預設為當前工作目錄的 generated_images 資料夾
|
|
29
|
+
this.outputDir = process.env.IMAGE_OUTPUT_DIR || path.join(process.cwd(), "generated_images");
|
|
25
30
|
if (!this.apiKey) {
|
|
26
31
|
throw new Error("AI_API_KEY 環境變數未設定");
|
|
27
32
|
}
|
|
33
|
+
// 確保輸出目錄存在
|
|
34
|
+
this.ensureOutputDirectory();
|
|
28
35
|
this.setupToolHandlers();
|
|
29
36
|
}
|
|
37
|
+
ensureOutputDirectory() {
|
|
38
|
+
try {
|
|
39
|
+
if (!fs.existsSync(this.outputDir)) {
|
|
40
|
+
fs.mkdirSync(this.outputDir, { recursive: true });
|
|
41
|
+
console.error(`已建立圖片輸出目錄: ${this.outputDir}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(`無法建立輸出目錄: ${error}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
30
48
|
setupToolHandlers() {
|
|
31
49
|
// 列出可用工具
|
|
32
50
|
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
@@ -52,6 +70,11 @@ class AIImageChatMCPServer {
|
|
|
52
70
|
enum: ["gpt-image-1", "gpt-4o-image"],
|
|
53
71
|
default: "gpt-4o-image",
|
|
54
72
|
},
|
|
73
|
+
save_image: {
|
|
74
|
+
type: "boolean",
|
|
75
|
+
description: "是否自動保存圖片到本地(預設為 true)",
|
|
76
|
+
default: true,
|
|
77
|
+
},
|
|
55
78
|
},
|
|
56
79
|
required: ["prompt"],
|
|
57
80
|
},
|
|
@@ -103,8 +126,40 @@ class AIImageChatMCPServer {
|
|
|
103
126
|
}
|
|
104
127
|
});
|
|
105
128
|
}
|
|
129
|
+
async downloadAndSaveImage(imageUrl, filename) {
|
|
130
|
+
try {
|
|
131
|
+
const response = await axios.get(imageUrl, {
|
|
132
|
+
responseType: 'stream',
|
|
133
|
+
timeout: 30000,
|
|
134
|
+
});
|
|
135
|
+
// 生成檔案名稱
|
|
136
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
137
|
+
const finalFilename = filename || `ai-generated-${timestamp}.jpg`;
|
|
138
|
+
const filepath = path.join(this.outputDir, finalFilename);
|
|
139
|
+
// 建立寫入串流
|
|
140
|
+
const writer = fs.createWriteStream(filepath);
|
|
141
|
+
response.data.pipe(writer);
|
|
142
|
+
return new Promise((resolve, reject) => {
|
|
143
|
+
writer.on('finish', () => {
|
|
144
|
+
console.error(`圖片已保存至: ${filepath}`);
|
|
145
|
+
resolve(filepath);
|
|
146
|
+
});
|
|
147
|
+
writer.on('error', reject);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.error(`下載圖片失敗: ${error}`);
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
extractImageUrl(content) {
|
|
156
|
+
// 嘗試從回應中提取圖片 URL
|
|
157
|
+
const urlRegex = /https?:\/\/[^\s\)]+\.(jpg|jpeg|png|gif|webp)/gi;
|
|
158
|
+
const match = content.match(urlRegex);
|
|
159
|
+
return match ? match[0] : null;
|
|
160
|
+
}
|
|
106
161
|
async handleImageGeneration(args) {
|
|
107
|
-
const { prompt, system_prompt = "You are a helpful assistant that generates images.", model = "gpt-4o-image" } = args;
|
|
162
|
+
const { prompt, system_prompt = "You are a helpful assistant that generates images. Please provide the direct image URL in your response.", model = "gpt-4o-image", save_image = true } = args;
|
|
108
163
|
if (!prompt) {
|
|
109
164
|
throw new McpError(ErrorCode.InvalidParams, "需要提供 prompt 參數");
|
|
110
165
|
}
|
|
@@ -125,11 +180,29 @@ class AIImageChatMCPServer {
|
|
|
125
180
|
});
|
|
126
181
|
const result = response.data;
|
|
127
182
|
const generatedContent = result.choices[0]?.message?.content || "未生成內容";
|
|
183
|
+
let savedImagePath = null;
|
|
184
|
+
let resultText = `圖片生成結果:\n\n${generatedContent}`;
|
|
185
|
+
// 如果要求保存圖片,嘗試從回應中提取並下載圖片
|
|
186
|
+
if (save_image) {
|
|
187
|
+
const imageUrl = this.extractImageUrl(generatedContent);
|
|
188
|
+
if (imageUrl) {
|
|
189
|
+
try {
|
|
190
|
+
savedImagePath = await this.downloadAndSaveImage(imageUrl);
|
|
191
|
+
resultText += `\n\n✅ 圖片已自動保存至: ${savedImagePath}`;
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
resultText += `\n\n⚠️ 圖片下載失敗: ${error instanceof Error ? error.message : String(error)}`;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
resultText += `\n\n⚠️ 未在回應中找到有效的圖片 URL`;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
128
201
|
return {
|
|
129
202
|
content: [
|
|
130
203
|
{
|
|
131
204
|
type: "text",
|
|
132
|
-
text:
|
|
205
|
+
text: resultText,
|
|
133
206
|
},
|
|
134
207
|
],
|
|
135
208
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,sBAAsB,EACtB,QAAQ,GAET,MAAM,oCAAoC,CAAC;AAC5C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAqB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|