@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 +50 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +45 -11
- package/dist/utils/logger.js.map +1 -1
- package/houtini-logo.jpg +0 -0
- package/package.json +4 -2
- package/server.json +29 -0
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Gemini MCP Server
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@houtini/gemini-mcp)
|
|
4
|
+
[](https://snyk.io/test/github/houtini-ai/gemini-mcp)
|
|
4
5
|
[](https://registry.modelcontextprotocol.io)
|
|
5
6
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
6
7
|
[](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;
|
|
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"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,17 +1,51 @@
|
|
|
1
1
|
import * as winston from 'winston';
|
|
2
2
|
import { config } from '../config/index.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//
|
|
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,
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/houtini-logo.jpg
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@houtini/gemini-mcp",
|
|
3
|
-
"version": "1.4.
|
|
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://
|
|
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
|
+
}
|