@houtini/gemini-mcp 1.4.2 → 1.4.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/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Gemini MCP Server
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@houtini/gemini-mcp.svg?style=flat-square)](https://www.npmjs.com/package/@houtini/gemini-mcp)
4
+ [![Known Vulnerabilities](https://snyk.io/test/github/houtini-ai/gemini-mcp/badge.svg)](https://snyk.io/test/github/houtini-ai/gemini-mcp)
4
5
  [![MCP Registry](https://img.shields.io/badge/MCP-Registry-blue?style=flat-square)](https://registry.modelcontextprotocol.io)
5
6
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](https://opensource.org/licenses/Apache-2.0)
6
7
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/)
@@ -155,6 +156,55 @@ After updating the config, restart Claude Desktop. The server loads on startup.
155
156
  | `GEMINI_API_KEY` | *required* | Your Google AI Studio API key |
156
157
  | `LOG_LEVEL` | `info` | Logging detail: `debug`, `info`, `warn`, `error` |
157
158
  | `GEMINI_ALLOW_EXPERIMENTAL` | `false` | Include experimental models (set `true` to enable) |
159
+ | `GEMINI_MCP_LOG_FILE` | `false` | Enable file logging (see Logging section below) |
160
+ | `DEBUG_MCP` | `false` | Enable console debugging output (stderr) |
161
+
162
+ ### Logging Configuration
163
+
164
+ By default, the server operates with minimal logging to avoid interfering with MCP stdio communication. File logging is disabled unless explicitly enabled.
165
+
166
+ **Enable File Logging:**
167
+
168
+ Add `GEMINI_MCP_LOG_FILE=true` to your environment configuration:
169
+
170
+ ```json
171
+ {
172
+ "mcpServers": {
173
+ "gemini": {
174
+ "command": "npx",
175
+ "args": ["@houtini/gemini-mcp"],
176
+ "env": {
177
+ "GEMINI_API_KEY": "your-api-key-here",
178
+ "GEMINI_MCP_LOG_FILE": "true"
179
+ }
180
+ }
181
+ }
182
+ }
183
+ ```
184
+
185
+ When enabled, logs are written to:
186
+ - **Unix/macOS**: `~/.gemini-mcp/logs/`
187
+ - **Windows**: `C:\Users\[username]\.gemini-mcp\logs\`
188
+
189
+ Log files:
190
+ - `error.log` - Error level messages only
191
+ - `combined.log` - All log levels
192
+ - Maximum 5MB per file, 5 files retained
193
+
194
+ **Debug Mode:**
195
+
196
+ For development or troubleshooting, enable console output (stderr):
197
+
198
+ ```json
199
+ {
200
+ "env": {
201
+ "GEMINI_API_KEY": "your-api-key-here",
202
+ "DEBUG_MCP": "true"
203
+ }
204
+ }
205
+ ```
206
+
207
+ This outputs to stderr to avoid corrupting MCP stdio communication.
158
208
 
159
209
  ## Dynamic Model Discovery
160
210
 
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAkBnC,QAAA,MAAM,MAAM,gBAWV,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AA+DnC,QAAA,MAAM,MAAM,gBAWV,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -1,17 +1,51 @@
1
1
  import * as winston from 'winston';
2
2
  import { config } from '../config/index.js';
3
- const transports = [
4
- new winston.transports.File({
5
- filename: 'logs/error.log',
6
- level: 'error'
7
- }),
8
- new winston.transports.File({
9
- filename: 'logs/combined.log'
10
- })
11
- ];
12
- // Only add console logging if not running as MCP server (stdout must be clean)
3
+ import * as os from 'os';
4
+ import * as path from 'path';
5
+ import * as fs from 'fs';
6
+ // Determine if we should use file logging
7
+ // Only enable file logging if explicitly requested via environment variable
8
+ const shouldUseFileLogging = process.env.GEMINI_MCP_LOG_FILE === 'true';
9
+ const transports = [];
10
+ // File logging (optional, disabled by default for MCP stdio servers)
11
+ if (shouldUseFileLogging) {
12
+ // Use user home directory for cross-platform compatibility
13
+ // ~/.gemini-mcp/logs/ on Unix-like systems
14
+ // C:\Users\username\.gemini-mcp\logs\ on Windows
15
+ const logDir = path.join(os.homedir(), '.gemini-mcp', 'logs');
16
+ try {
17
+ // Ensure log directory exists
18
+ fs.mkdirSync(logDir, { recursive: true, mode: 0o755 });
19
+ transports.push(new winston.transports.File({
20
+ filename: path.join(logDir, 'error.log'),
21
+ level: 'error',
22
+ maxsize: 5242880, // 5MB
23
+ maxFiles: 5,
24
+ }), new winston.transports.File({
25
+ filename: path.join(logDir, 'combined.log'),
26
+ maxsize: 5242880, // 5MB
27
+ maxFiles: 5,
28
+ }));
29
+ }
30
+ catch (error) {
31
+ // Fallback to console only if directory creation fails
32
+ process.stderr.write(`Warning: Could not create log directory at ${logDir}. File logging disabled.\n`);
33
+ }
34
+ }
35
+ // Console logging (stderr to avoid polluting stdout for MCP)
36
+ // Only add if in development mode or DEBUG_MCP is enabled
13
37
  if (process.env.NODE_ENV === 'development' || process.env.DEBUG_MCP === 'true') {
14
- transports.push(new winston.transports.Console());
38
+ transports.push(new winston.transports.Console({
39
+ stderrLevels: ['error', 'warn', 'info', 'debug'], // All levels to stderr
40
+ }));
41
+ }
42
+ // Fallback: If no transports configured, add a minimal Console transport to stderr
43
+ // This ensures errors are visible even when file logging fails
44
+ if (transports.length === 0) {
45
+ transports.push(new winston.transports.Console({
46
+ level: 'error',
47
+ stderrLevels: ['error', 'warn', 'info', 'debug'],
48
+ }));
15
49
  }
16
50
  const logger = winston.createLogger({
17
51
  level: config.logging.level,
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,UAAU,GAAwB;IACtC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,EAAE,OAAO;KACf,CAAC;IACF,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,mBAAmB;KAC9B,CAAC;CACH,CAAC;AAEF,+EAA+E;AAC/E,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;IAC/E,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;IAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7D,OAAO,GAAG,SAAS,KAAK,KAAK,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3E,CAAC,CAAC,CACH;IACD,UAAU;CACX,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@houtini/gemini-mcp",
3
- "version": "1.4.2",
3
+ "version": "1.4.5",
4
4
  "mcpName": "io.github.houtini-ai/gemini",
5
5
  "type": "module",
6
6
  "description": "Professional Model Context Protocol server for Google Gemini AI models with enterprise-grade features",
@@ -49,7 +49,7 @@
49
49
  ],
50
50
  "author": "Houtini",
51
51
  "license": "Apache-2.0",
52
- "homepage": "https://github.com/houtini-ai/gemini-mcp#readme",
52
+ "homepage": "https://houtini.com/gemini-mcp/",
53
53
  "repository": {
54
54
  "type": "git",
55
55
  "url": "git+https://github.com/houtini-ai/gemini-mcp.git"
@@ -83,6 +83,8 @@
83
83
  "dist/**/*",
84
84
  "README.md",
85
85
  "LICENSE",
86
+ "houtini-logo.jpg",
87
+ "server.json",
86
88
  ".env.example",
87
89
  "claude_desktop_config_example.json"
88
90
  ],
package/server.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.houtini-ai/gemini",
4
+ "description": "Model Context Protocol server for Google Gemini AI with chat, research, and grounding",
5
+ "repository": {
6
+ "url": "https://github.com/houtini-ai/gemini-mcp",
7
+ "source": "github"
8
+ },
9
+ "version": "1.4.2",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "identifier": "@houtini/gemini-mcp",
14
+ "version": "1.4.2",
15
+ "transport": {
16
+ "type": "stdio"
17
+ },
18
+ "environmentVariables": [
19
+ {
20
+ "name": "GEMINI_API_KEY",
21
+ "description": "Google AI Studio API key (get from https://aistudio.google.com/apikey)",
22
+ "isRequired": true,
23
+ "format": "string",
24
+ "isSecret": true
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }