text2image-mcp 2.0.1 → 2.2.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/README.md CHANGED
@@ -159,6 +159,68 @@ npx text2image-mcp
159
159
  # This creates a local .nano-banana-config.json file
160
160
  ```
161
161
 
162
+ ## 🌐 Remote Server Mode
163
+
164
+ Run text2image-mcp as an HTTP server so anyone can connect with their own Gemini API key — no local install needed.
165
+
166
+ ### Quick Start
167
+
168
+ ```bash
169
+ # Install and build
170
+ npm install && npm run build
171
+
172
+ # Start the remote server (default port 3000)
173
+ npm run start:remote
174
+
175
+ # Or with a custom port
176
+ PORT=8080 npm run start:remote
177
+ ```
178
+
179
+ ### Docker Deployment
180
+
181
+ ```bash
182
+ # Build the image
183
+ docker build -t text2image-mcp .
184
+
185
+ # Run the container
186
+ docker run -p 3000:3000 text2image-mcp
187
+ ```
188
+
189
+ Deploy to any container platform (Railway, Render, Fly.io, etc.) by pointing to the Dockerfile.
190
+
191
+ ### Client Configuration
192
+
193
+ Connect any MCP client using a URL and your Gemini API key as a Bearer token:
194
+
195
+ ```json
196
+ {
197
+ "mcpServers": {
198
+ "text2image": {
199
+ "url": "https://your-server.com/mcp",
200
+ "headers": {
201
+ "Authorization": "Bearer YOUR_GEMINI_API_KEY"
202
+ }
203
+ }
204
+ }
205
+ }
206
+ ```
207
+
208
+ ### Endpoints
209
+
210
+ | Method | Path | Description |
211
+ |--------|------|-------------|
212
+ | `POST` | `/mcp` | MCP JSON-RPC (initialize + tool calls) |
213
+ | `GET` | `/mcp` | SSE stream for existing sessions |
214
+ | `DELETE` | `/mcp` | Terminate a session |
215
+ | `GET` | `/health` | Health check + active session count |
216
+
217
+ ### How It Works
218
+
219
+ - **Auth**: Your Gemini API key is passed as `Authorization: Bearer <key>` — the server never stores it
220
+ - **Sessions**: Each connection gets an isolated server instance with independent state (chat history, last image, etc.)
221
+ - **Timeout**: Idle sessions are cleaned up after 30 minutes
222
+ - **Tools**: Remote mode exposes 4 tools (`generate_image`, `edit_image`, `continue_editing`, `get_last_image_info`) — config tools are excluded since the API key comes from the auth header
223
+
162
224
  ## 🛠️ Available Commands
163
225
 
164
226
  ### `generate_image`
package/dist/config.d.ts CHANGED
@@ -7,6 +7,7 @@ export declare class ConfigManager {
7
7
  configSource: ConfigSource;
8
8
  isConfigured(): boolean;
9
9
  load(): Promise<void>;
10
+ configureFromKey(apiKey: string): void;
10
11
  setApiKey(apiKey: string): Promise<void>;
11
12
  private save;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAIlD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE5E,qBAAa,aAAa;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IACjC,YAAY,EAAE,YAAY,CAAoB;IAE9C,YAAY,IAAI,OAAO;IAIjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BrB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhC,IAAI;CAMnB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAIlD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE5E,qBAAa,aAAa;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IACjC,YAAY,EAAE,YAAY,CAAoB;IAE9C,YAAY,IAAI,OAAO;IAIjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOhC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhC,IAAI;CAMnB"}
package/dist/config.js CHANGED
@@ -39,6 +39,12 @@ export class ConfigManager {
39
39
  this.configSource = "not_configured";
40
40
  }
41
41
  }
42
+ configureFromKey(apiKey) {
43
+ ConfigSchema.parse({ geminiApiKey: apiKey });
44
+ this.config = { geminiApiKey: apiKey };
45
+ this.genAI = new GoogleGenAI({ apiKey });
46
+ this.configSource = "environment";
47
+ }
42
48
  async setApiKey(apiKey) {
43
49
  ConfigSchema.parse({ geminiApiKey: apiKey });
44
50
  this.config = { geminiApiKey: apiKey };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAU,YAAY,EAAE,MAAM,YAAY,CAAC;AAElD,YAAY,EAAE,CAAC;AAIf,MAAM,OAAO,aAAa;IACxB,MAAM,GAAkB,IAAI,CAAC;IAC7B,KAAK,GAAuB,IAAI,CAAC;IACjC,YAAY,GAAiB,gBAAgB,CAAC;IAE9C,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,mCAAmC;QACnC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC7C,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;gBAClC,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;QACvC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;QAClC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACxE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-utils.d.ts","sourceRoot":"","sources":["../src/image-utils.ts"],"names":[],"mappings":"AAKA,wBAAgB,kBAAkB,IAAI,MAAM,CAa3C;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAC7B,OAAO,CAAC,UAAU,CAAC,CAarB;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAMD"}
1
+ {"version":3,"file":"image-utils.d.ts","sourceRoot":"","sources":["../src/image-utils.ts"],"names":[],"mappings":"AAKA,wBAAgB,kBAAkB,IAAI,MAAM,CAiB3C;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAC7B,OAAO,CAAC,UAAU,CAAC,CAarB;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAMD"}
@@ -3,6 +3,9 @@ import fs from "fs/promises";
3
3
  import path from "path";
4
4
  import os from "os";
5
5
  export function getImagesDirectory() {
6
+ if (process.env.IMAGE_OUTPUT_DIR) {
7
+ return process.env.IMAGE_OUTPUT_DIR;
8
+ }
6
9
  const platform = os.platform();
7
10
  if (platform === "win32") {
8
11
  return path.join(os.homedir(), "Documents", "nano-banana-images");
@@ -1 +1 @@
1
- {"version":3,"file":"image-utils.js","sourceRoot":"","sources":["../src/image-utils.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,MAA8B;IAE9B,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,SAAS,IAAI,QAAQ,MAAM,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IAIvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC;KACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"image-utils.js","sourceRoot":"","sources":["../src/image-utils.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,MAA8B;IAE9B,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,SAAS,IAAI,QAAQ,MAAM,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IAIvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC;KACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":""}
package/dist/remote.js ADDED
@@ -0,0 +1,127 @@
1
+ #!/usr/bin/env node
2
+ // src/remote.ts
3
+ import express from "express";
4
+ import cors from "cors";
5
+ import { randomUUID } from "crypto";
6
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
7
+ import { NanoBananaMCP } from "./server.js";
8
+ const SESSION_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
9
+ const sessions = new Map();
10
+ // --- Cleanup stale sessions ---
11
+ const cleanupInterval = setInterval(() => {
12
+ const now = Date.now();
13
+ for (const [id, session] of sessions) {
14
+ if (now - session.lastActivity > SESSION_TIMEOUT_MS) {
15
+ session.transport.close();
16
+ sessions.delete(id);
17
+ }
18
+ }
19
+ }, 60_000);
20
+ // --- Express app ---
21
+ const app = express();
22
+ app.use(cors());
23
+ app.use(express.json());
24
+ // --- Health endpoint ---
25
+ app.get("/health", (_req, res) => {
26
+ res.json({ status: "ok", sessions: sessions.size });
27
+ });
28
+ // --- MCP endpoint ---
29
+ function extractApiKey(req) {
30
+ const auth = req.headers.authorization;
31
+ if (!auth?.startsWith("Bearer "))
32
+ return null;
33
+ return auth.slice(7).trim() || null;
34
+ }
35
+ function isInitializeRequest(body) {
36
+ if (Array.isArray(body)) {
37
+ return body.some((msg) => typeof msg === "object" && msg !== null && msg.method === "initialize");
38
+ }
39
+ return typeof body === "object" && body !== null && body.method === "initialize";
40
+ }
41
+ app.post("/mcp", async (req, res) => {
42
+ const apiKey = extractApiKey(req);
43
+ if (!apiKey) {
44
+ res.status(401).json({ error: "Missing Authorization: Bearer <GEMINI_API_KEY>" });
45
+ return;
46
+ }
47
+ // Check for existing session
48
+ const sessionId = req.headers["mcp-session-id"];
49
+ if (sessionId) {
50
+ const session = sessions.get(sessionId);
51
+ if (!session) {
52
+ res.status(404).json({ error: "Session not found. Send an initialize request to start a new session." });
53
+ return;
54
+ }
55
+ session.lastActivity = Date.now();
56
+ await session.transport.handleRequest(req, res, req.body);
57
+ return;
58
+ }
59
+ // No session ID — must be an initialize request
60
+ if (!isInitializeRequest(req.body)) {
61
+ res.status(400).json({ error: "Missing mcp-session-id header. Send an initialize request first." });
62
+ return;
63
+ }
64
+ // Create new session
65
+ const mcp = new NanoBananaMCP({ apiKey, isRemote: true });
66
+ const transport = new StreamableHTTPServerTransport({
67
+ sessionIdGenerator: () => randomUUID(),
68
+ onsessioninitialized: (newSessionId) => {
69
+ sessions.set(newSessionId, { transport, mcp, lastActivity: Date.now() });
70
+ },
71
+ onsessionclosed: (closedSessionId) => {
72
+ sessions.delete(closedSessionId);
73
+ },
74
+ });
75
+ await mcp.connectTransport(transport);
76
+ await transport.handleRequest(req, res, req.body);
77
+ });
78
+ app.get("/mcp", async (req, res) => {
79
+ const sessionId = req.headers["mcp-session-id"];
80
+ if (!sessionId) {
81
+ res.status(400).json({ error: "Missing mcp-session-id header." });
82
+ return;
83
+ }
84
+ const session = sessions.get(sessionId);
85
+ if (!session) {
86
+ res.status(404).json({ error: "Session not found." });
87
+ return;
88
+ }
89
+ session.lastActivity = Date.now();
90
+ await session.transport.handleRequest(req, res);
91
+ });
92
+ app.delete("/mcp", async (req, res) => {
93
+ const sessionId = req.headers["mcp-session-id"];
94
+ if (!sessionId) {
95
+ res.status(400).json({ error: "Missing mcp-session-id header." });
96
+ return;
97
+ }
98
+ const session = sessions.get(sessionId);
99
+ if (!session) {
100
+ res.status(404).json({ error: "Session not found." });
101
+ return;
102
+ }
103
+ await session.transport.handleRequest(req, res);
104
+ sessions.delete(sessionId);
105
+ });
106
+ // --- Start server ---
107
+ const PORT = parseInt(process.env.PORT || "3000", 10);
108
+ const server = app.listen(PORT, () => {
109
+ console.log(`text2image-mcp remote server listening on port ${PORT}`);
110
+ console.log(`Health: http://localhost:${PORT}/health`);
111
+ console.log(`MCP endpoint: http://localhost:${PORT}/mcp`);
112
+ });
113
+ // --- Graceful shutdown ---
114
+ function shutdown() {
115
+ console.log("\nShutting down...");
116
+ clearInterval(cleanupInterval);
117
+ for (const [id, session] of sessions) {
118
+ session.transport.close();
119
+ sessions.delete(id);
120
+ }
121
+ server.close(() => {
122
+ process.exit(0);
123
+ });
124
+ }
125
+ process.on("SIGINT", shutdown);
126
+ process.on("SIGTERM", shutdown);
127
+ //# sourceMappingURL=remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,11 +1,20 @@
1
+ import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
2
+ export interface NanoBananaMCPOptions {
3
+ apiKey?: string;
4
+ isRemote?: boolean;
5
+ }
1
6
  export declare class NanoBananaMCP {
2
7
  private server;
3
8
  private configManager;
4
9
  private chatSession;
5
10
  private lastImagePath;
6
- constructor();
11
+ private isRemote;
12
+ private injectedApiKey;
13
+ constructor(options?: NanoBananaMCPOptions);
7
14
  private setupHandlers;
15
+ private resolveViewerPath;
8
16
  private routeToolCall;
17
+ connectTransport(transport: Transport): Promise<void>;
9
18
  run(): Promise<void>;
10
19
  }
11
20
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAqBA,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,aAAa,CAAuB;;IAW5C,OAAO,CAAC,aAAa;YA2BP,aAAa;IAuDrB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAK3B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAe1E,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAqB;gBAE/B,OAAO,CAAC,EAAE,oBAAoB;IAW1C,OAAO,CAAC,aAAa;IAkErB,OAAO,CAAC,iBAAiB;YAMX,aAAa;IAyDrB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAI3B"}
package/dist/server.js CHANGED
@@ -1,37 +1,47 @@
1
1
  // src/server.ts
2
2
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
- import { CallToolRequestSchema, ListToolsRequestSchema, ErrorCode, McpError, } from "@modelcontextprotocol/sdk/types.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ErrorCode, McpError, } from "@modelcontextprotocol/sdk/types.js";
4
4
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
5
  import { ConfigManager } from "./config.js";
6
6
  import { ChatSessionManager } from "./chat-session.js";
7
+ import fs from "node:fs/promises";
8
+ import path from "node:path";
9
+ import { fileURLToPath } from "node:url";
7
10
  // Tool definitions & handlers
8
11
  import { configureGeminiTokenTool, getConfigurationStatusTool, handleConfigureToken, handleGetConfigStatus } from "./tools/config-tools.js";
9
12
  import { generateImageTool, handleGenerateImage } from "./tools/generate.js";
10
13
  import { editImageTool, handleEditImage } from "./tools/edit.js";
11
14
  import { continueEditingTool, handleContinueEditing } from "./tools/continue.js";
12
15
  import { getLastImageInfoTool, handleGetLastImageInfo } from "./tools/info.js";
16
+ const IMAGE_VIEWER_RESOURCE_URI = "ui://text2image/image-viewer.html";
13
17
  export class NanoBananaMCP {
14
18
  server;
15
19
  configManager;
16
20
  chatSession = null;
17
21
  lastImagePath = null;
18
- constructor() {
22
+ isRemote;
23
+ injectedApiKey;
24
+ constructor(options) {
25
+ this.isRemote = options?.isRemote ?? false;
26
+ this.injectedApiKey = options?.apiKey;
19
27
  this.configManager = new ConfigManager();
20
- this.server = new Server({ name: "text2image-mcp", version: "2.0.0" }, { capabilities: { tools: {} } });
28
+ this.server = new Server({ name: "text2image-mcp", version: "2.2.0" }, { capabilities: { tools: {}, resources: {} } });
21
29
  this.setupHandlers();
22
30
  }
23
31
  setupHandlers() {
24
- // List tools
25
- this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
26
- tools: [
27
- configureGeminiTokenTool,
28
- getConfigurationStatusTool,
32
+ // List tools — exclude config tools in remote mode
33
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
34
+ const tools = [
29
35
  generateImageTool,
30
36
  editImageTool,
31
37
  continueEditingTool,
32
38
  getLastImageInfoTool,
33
- ],
34
- }));
39
+ ];
40
+ if (!this.isRemote) {
41
+ tools.unshift(configureGeminiTokenTool, getConfigurationStatusTool);
42
+ }
43
+ return { tools };
44
+ });
35
45
  // Call tools
36
46
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
37
47
  try {
@@ -43,15 +53,53 @@ export class NanoBananaMCP {
43
53
  throw new McpError(ErrorCode.InternalError, `Tool execution failed: ${error instanceof Error ? error.message : String(error)}`);
44
54
  }
45
55
  });
56
+ // List resources — expose the image viewer UI
57
+ this.server.setRequestHandler(ListResourcesRequestSchema, async () => {
58
+ return {
59
+ resources: [
60
+ {
61
+ uri: IMAGE_VIEWER_RESOURCE_URI,
62
+ name: "Image Viewer",
63
+ description: "Interactive image viewer with zoom, pan, and metadata display",
64
+ mimeType: "text/html",
65
+ },
66
+ ],
67
+ };
68
+ });
69
+ // Read resource — return the bundled HTML file
70
+ this.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
71
+ const { uri } = request.params;
72
+ if (uri !== IMAGE_VIEWER_RESOURCE_URI) {
73
+ throw new McpError(ErrorCode.InvalidRequest, `Unknown resource: ${uri}`);
74
+ }
75
+ const htmlPath = this.resolveViewerPath();
76
+ const html = await fs.readFile(htmlPath, "utf-8");
77
+ return {
78
+ contents: [
79
+ {
80
+ uri: IMAGE_VIEWER_RESOURCE_URI,
81
+ mimeType: "text/html",
82
+ text: html,
83
+ },
84
+ ],
85
+ };
86
+ });
87
+ }
88
+ resolveViewerPath() {
89
+ // Resolve relative to the compiled JS location (dist/server.js → dist/ui/image-viewer.html)
90
+ const thisDir = path.dirname(fileURLToPath(import.meta.url));
91
+ return path.resolve(thisDir, "ui", "image-viewer.html");
46
92
  }
47
93
  async routeToolCall(request) {
48
94
  const { name } = request.params;
49
- // Config tools don't need API key
50
- if (name === "configure_gemini_token") {
51
- return handleConfigureToken(request, this.configManager);
52
- }
53
- if (name === "get_configuration_status") {
54
- return handleGetConfigStatus(this.configManager);
95
+ // Config tools don't need API key (local mode only)
96
+ if (!this.isRemote) {
97
+ if (name === "configure_gemini_token") {
98
+ return handleConfigureToken(request, this.configManager);
99
+ }
100
+ if (name === "get_configuration_status") {
101
+ return handleGetConfigStatus(this.configManager);
102
+ }
55
103
  }
56
104
  // All other tools need configured API
57
105
  if (!this.configManager.isConfigured()) {
@@ -89,10 +137,18 @@ export class NanoBananaMCP {
89
137
  throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
90
138
  }
91
139
  }
140
+ async connectTransport(transport) {
141
+ if (this.injectedApiKey) {
142
+ this.configManager.configureFromKey(this.injectedApiKey);
143
+ }
144
+ else {
145
+ await this.configManager.load();
146
+ }
147
+ await this.server.connect(transport);
148
+ }
92
149
  async run() {
93
- await this.configManager.load();
94
150
  const transport = new StdioServerTransport();
95
- await this.server.connect(transport);
151
+ await this.connectTransport(transport);
96
152
  }
97
153
  }
98
154
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/tools/continue.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAAE,cAAc,EAAuB,IAAI,EAC3D,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,eAAO,MAAM,mBAAmB,EAAE,IA6BjC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,kBAAkB,EAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAmD/D"}
1
+ {"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/tools/continue.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAAE,cAAc,EAAuB,IAAI,EAC3D,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,eAAO,MAAM,mBAAmB,EAAE,IAgCjC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,kBAAkB,EAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAmD/D"}
@@ -2,9 +2,13 @@
2
2
  import { ErrorCode, McpError, } from "@modelcontextprotocol/sdk/types.js";
3
3
  import { ASPECT_RATIOS, RESOLUTIONS } from "../types.js";
4
4
  import { saveImageFromBase64, readImageAsBase64 } from "../image-utils.js";
5
+ const IMAGE_VIEWER_RESOURCE_URI = "ui://text2image/image-viewer.html";
5
6
  export const continueEditingTool = {
6
7
  name: "continue_editing",
7
8
  description: "Continue editing the LAST generated/edited image using multi-turn conversation. The model remembers previous context. Supports reference images, aspect ratio, and resolution changes.",
9
+ _meta: {
10
+ ui: { resourceUri: IMAGE_VIEWER_RESOURCE_URI },
11
+ },
8
12
  inputSchema: {
9
13
  type: "object",
10
14
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/tools/continue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/tools/continue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAAE,cAAc,EAAE,IAAI,EACtC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,eAAO,MAAM,aAAa,EAAE,IAsC3B,CAAC;AAEF,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA6F/D"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAAE,cAAc,EAAE,IAAI,EACtC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,eAAO,MAAM,aAAa,EAAE,IAyC3B,CAAC;AAEF,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA6F/D"}
@@ -1,8 +1,12 @@
1
1
  import { MODELS, ASPECT_RATIOS, RESOLUTIONS } from "../types.js";
2
2
  import { saveImageFromBase64, readImageAsBase64 } from "../image-utils.js";
3
+ const IMAGE_VIEWER_RESOURCE_URI = "ui://text2image/image-viewer.html";
3
4
  export const editImageTool = {
4
5
  name: "edit_image",
5
6
  description: "Edit a SPECIFIC existing image file with text prompts. Supports optional reference images, model selection, aspect ratios, and resolution.",
7
+ _meta: {
8
+ ui: { resourceUri: IMAGE_VIEWER_RESOURCE_URI },
9
+ },
6
10
  inputSchema: {
7
11
  type: "object",
8
12
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAAE,cAAc,EAAE,IAAI,EACtC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,eAAO,MAAM,iBAAiB,EAAE,IAiC/B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAiF/D"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAAE,cAAc,EAAE,IAAI,EACtC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,eAAO,MAAM,iBAAiB,EAAE,IAoC/B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAiF/D"}
@@ -1,8 +1,12 @@
1
1
  import { MODELS, ASPECT_RATIOS, RESOLUTIONS } from "../types.js";
2
2
  import { saveImageFromBase64 } from "../image-utils.js";
3
+ const IMAGE_VIEWER_RESOURCE_URI = "ui://text2image/image-viewer.html";
3
4
  export const generateImageTool = {
4
5
  name: "generate_image",
5
6
  description: "Generate a NEW image from a text prompt. Supports model selection, aspect ratios, and resolution control. Use 'pro' model for higher quality, 4K resolution, and Google Search grounding.",
7
+ _meta: {
8
+ ui: { resourceUri: IMAGE_VIEWER_RESOURCE_URI },
9
+ },
6
10
  inputSchema: {
7
11
  type: "object",
8
12
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}