@houtini/gemini-mcp 1.0.0 → 1.0.2

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,442 +1,546 @@
1
- # Gemini MCP Server
2
-
3
- [![npm version](https://badge.fury.io/js/@houtini/gemini-mcp.svg)](https://badge.fury.io/js/@houtini/gemini-mcp)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
- [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](https://www.typescriptlang.org/)
6
-
7
- A professional, production-ready Model Context Protocol (MCP) server that provides seamless integration with Google's Gemini AI models. Built with TypeScript and designed for enterprise use, this package offers robust error handling, comprehensive logging, and easy deployment.
8
-
9
- ## 🚀 Quick Start
10
-
11
- ```bash
12
- # Install globally
13
- npm install -g @houtini/gemini-mcp
14
-
15
- # Or install locally
16
- npm install @houtini/gemini-mcp
17
-
18
- # Set your API key
19
- export GEMINI_API_KEY="your-api-key-here"
20
-
21
- # Run the server
22
- gemini-mcp
23
- ```
24
-
25
- ## 📋 Table of Contents
26
-
27
- - [Features](#-features)
28
- - [Installation](#-installation)
29
- - [Configuration](#-configuration)
30
- - [Usage Examples](#-usage-examples)
31
- - [API Reference](#-api-reference)
32
- - [Development](#-development)
33
- - [Troubleshooting](#-troubleshooting)
34
- - [Contributing](#-contributing)
35
-
36
- ## Features
37
-
38
- ### Core Functionality
39
- - **🤖 Multi-Model Support** - Access to 6 Gemini models including the latest Gemini 2.5 Flash
40
- - **💬 Chat Interface** - Advanced chat functionality with customisable parameters
41
- - **📊 Model Information** - Detailed model capabilities and specifications
42
- - **🎛️ Fine-Grained Control** - Temperature, token limits, and system prompts
43
-
44
- ### Enterprise Features
45
- - **🏗️ Professional Architecture** - Modular services-based design
46
- - **🛡️ Robust Error Handling** - Comprehensive error handling with detailed logging
47
- - **📝 Winston Logging** - Production-ready logging with file rotation
48
- - **🔒 Security Focused** - No hardcoded credentials, environment-based configuration
49
- - **🏷️ Full TypeScript** - Complete type safety and IntelliSense support
50
- - **⚡ High Performance** - Optimised for minimal latency and resource usage
51
-
52
- ## 📦 Installation
53
-
54
- ### Prerequisites
55
-
56
- - **Node.js** 18.0.0 or higher (you're running v24.6.0 ✅)
57
- - **Google AI Studio API Key** ([Get your key here](https://makersuite.google.com/app/apikey))
58
-
59
- ### Global Installation (Recommended)
60
-
61
- ```bash
62
- npm install -g @houtini/gemini-mcp
63
- ```
64
-
65
- ### Local Installation
66
-
67
- ```bash
68
- npm install @houtini/gemini-mcp
69
- ```
70
-
71
- ### From Source
72
-
73
- ```bash
74
- git clone https://github.com/houtini-ai/gemini-mcp.git
75
- cd gemini-mcp
76
- npm install
77
- npm run build
78
- ```
79
-
80
- ## ⚙️ Configuration
81
-
82
- ### Environment Variables
83
-
84
- The simplest way to configure the server is through environment variables:
85
-
86
- ```bash
87
- # Required
88
- export GEMINI_API_KEY="your-api-key-here"
89
-
90
- # Optional
91
- export LOG_LEVEL="info" # debug, info, warn, error
92
- ```
93
-
94
- ### Using .env File
95
-
96
- Create a `.env` file in your project directory:
97
-
98
- ```env
99
- # Google Gemini Configuration
100
- GEMINI_API_KEY=your-api-key-here
101
-
102
- # Logging Configuration
103
- LOG_LEVEL=info
104
-
105
- # Optional server configuration
106
- SERVER_NAME=gemini-mcp
107
- SERVER_VERSION=1.0.0
108
- ```
109
-
110
- ### Claude Desktop Configuration
111
-
112
- Add to your Claude Desktop configuration file:
113
-
114
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
115
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
116
-
117
- #### For Global Installation:
118
- ```json
119
- {
120
- "mcpServers": {
121
- "gemini": {
122
- "command": "gemini-mcp",
123
- "env": {
124
- "GEMINI_API_KEY": "your-api-key-here",
125
- "LOG_LEVEL": "info"
126
- }
127
- }
128
- }
129
- }
130
- ```
131
-
132
- #### For Local Installation:
133
- ```json
134
- {
135
- "mcpServers": {
136
- "gemini": {
137
- "command": "node",
138
- "args": ["./node_modules/@houtini/gemini-mcp/dist/index.js"],
139
- "env": {
140
- "GEMINI_API_KEY": "your-api-key-here"
141
- }
142
- }
143
- }
144
- }
145
- ```
146
-
147
- #### For Development:
148
- ```json
149
- {
150
- "mcpServers": {
151
- "gemini": {
152
- "command": "node",
153
- "args": ["C:\\path\\to\\gemini-mcp\\dist\\index.js"],
154
- "env": {
155
- "GEMINI_API_KEY": "your-api-key-here"
156
- }
157
- }
158
- }
159
- }
160
- ```
161
-
162
- ## 💡 Usage Examples
163
-
164
- ### Basic Chat
165
-
166
- Ask Claude to use Gemini:
167
-
168
- ```
169
- Can you help me understand quantum computing using Gemini?
170
- ```
171
-
172
- Claude will automatically use the `gemini_chat` tool to get a response from Gemini.
173
-
174
- ### Creative Writing
175
-
176
- ```
177
- Use Gemini to write a short story about artificial intelligence discovering creativity.
178
- ```
179
-
180
- ### Technical Analysis
181
-
182
- ```
183
- Can you use Gemini Pro to explain the differences between various machine learning algorithms?
184
- ```
185
-
186
- ### Model Selection
187
-
188
- ```
189
- Use Gemini 1.5 Pro to analyse this code and suggest improvements.
190
- ```
191
-
192
- ### Getting Model Information
193
-
194
- ```
195
- Show me all available Gemini models and their capabilities.
196
- ```
197
-
198
- ## 🔧 API Reference
199
-
200
- ### Available Tools
201
-
202
- #### `gemini_chat`
203
-
204
- Chat with Gemini models to generate text responses.
205
-
206
- **Parameters:**
207
-
208
- | Parameter | Type | Required | Default | Description |
209
- |-----------|------|----------|---------|-------------|
210
- | `message` | string | ✅ | - | The message to send to Gemini |
211
- | `model` | string | ❌ | "gemini-2.5-flash" | Model to use |
212
- | `temperature` | number | ❌ | 0.7 | Controls randomness (0.0-1.0) |
213
- | `max_tokens` | integer | | 2048 | Maximum tokens in response (1-8192) |
214
- | `system_prompt` | string | ❌ | - | System instruction to guide the model |
215
-
216
- **Example:**
217
- ```json
218
- {
219
- "message": "Explain machine learning in simple terms",
220
- "model": "gemini-1.5-pro",
221
- "temperature": 0.5,
222
- "max_tokens": 1000,
223
- "system_prompt": "You are a helpful teaching assistant. Explain concepts clearly and use analogies where appropriate."
224
- }
225
- ```
226
-
227
- #### `gemini_list_models`
228
-
229
- Retrieve information about all available Gemini models.
230
-
231
- **Parameters:** None required
232
-
233
- **Example:**
234
- ```json
235
- {}
236
- ```
237
-
238
- **Response includes:**
239
- - Model names and display names
240
- - Descriptions of each model's strengths
241
- - Recommended use cases
242
-
243
- ### Available Models
244
-
245
- | Model | Best For | Description |
246
- |-------|----------|-------------|
247
- | **gemini-2.5-flash** | General use, latest features | Latest Gemini 2.5 Flash - Fast, versatile performance |
248
- | **gemini-2.0-flash** | Speed-optimised tasks | Gemini 2.0 Flash - Fast, efficient model |
249
- | **gemini-1.5-flash** | Quick responses | Gemini 1.5 Flash - Fast, efficient model |
250
- | **gemini-1.5-pro** | Complex reasoning | Gemini 1.5 Pro - Advanced reasoning capabilities |
251
- | **gemini-pro** | Balanced performance | Gemini Pro - Balanced performance for most tasks |
252
- | **gemini-pro-vision** | Multimodal tasks | Gemini Pro Vision - Text and image understanding |
253
-
254
- ## 🛠️ Development
255
-
256
- ### Building from Source
257
-
258
- ```bash
259
- # Clone the repository
260
- git clone https://github.com/houtini-ai/gemini-mcp.git
261
- cd gemini-mcp
262
-
263
- # Install dependencies
264
- npm install
265
-
266
- # Build the project
267
- npm run build
268
-
269
- # Run in development mode
270
- npm run dev
271
- ```
272
-
273
- ### Scripts
274
-
275
- | Command | Description |
276
- |---------|-------------|
277
- | `npm run build` | Compile TypeScript to JavaScript |
278
- | `npm run dev` | Run in development mode with live reload |
279
- | `npm start` | Run the compiled server |
280
- | `npm test` | Run test suite |
281
- | `npm run lint` | Check code style |
282
- | `npm run lint:fix` | Fix linting issues automatically |
283
-
284
- ### Project Structure
285
-
286
- ```
287
- src/
288
- ├── config/ # Configuration management
289
- │ ├── index.ts # Main configuration
290
- │ └── types.ts # Configuration types
291
- ├── services/ # Core business logic
292
- │ ├── base-service.ts
293
- │ └── gemini/ # Gemini service implementation
294
- │ ├── index.ts
295
- │ └── types.ts
296
- ├── tools/ # MCP tool implementations
297
- │ ├── gemini-chat.ts
298
- │ └── gemini-list-models.ts
299
- ├── utils/ # Utility functions
300
- │ ├── logger.ts # Winston logging setup
301
- │ └── error-handler.ts
302
- ├── cli.ts # CLI entry point
303
- └── index.ts # Main server implementation
304
- ```
305
-
306
- ### Architecture
307
-
308
- The server follows a clean, layered architecture:
309
-
310
- 1. **CLI Layer** (`cli.ts`) - Command-line interface
311
- 2. **Server Layer** (`index.ts`) - MCP protocol handling
312
- 3. **Tools Layer** (`tools/`) - MCP tool implementations
313
- 4. **Service Layer** (`services/`) - Business logic and API integration
314
- 5. **Utility Layer** (`utils/`) - Cross-cutting concerns
315
-
316
- ## 🐛 Troubleshooting
317
-
318
- ### Common Issues
319
-
320
- #### "GEMINI_API_KEY environment variable not set"
321
-
322
- **Solution:**
323
- ```bash
324
- export GEMINI_API_KEY="your-actual-api-key"
325
- ```
326
-
327
- Or create a `.env` file with your API key.
328
-
329
- #### Server not appearing in Claude Desktop
330
-
331
- **Solutions:**
332
- 1. Restart Claude Desktop after updating configuration
333
- 2. Check that the path in your configuration is correct
334
- 3. Ensure the built files exist in the `dist` directory
335
- 4. Verify your API key is valid
336
-
337
- #### "Module not found" errors
338
-
339
- **Solutions:**
340
- ```bash
341
- # Reinstall dependencies
342
- npm install
343
-
344
- # Rebuild the project
345
- npm run build
346
-
347
- # Check Node.js version (requires 18.0.0+)
348
- node --version
349
- ```
350
-
351
- #### TypeScript compilation errors
352
-
353
- **Solution:**
354
- ```bash
355
- # Clean and rebuild
356
- rm -rf dist
357
- npm run build
358
- ```
359
-
360
- ### Debug Mode
361
-
362
- Enable detailed logging:
363
-
364
- ```bash
365
- export LOG_LEVEL=debug
366
- npm start
367
- ```
368
-
369
- ### Log Files
370
-
371
- Logs are written to:
372
- - **Console output** (stdout/stderr)
373
- - **`logs/combined.log`** - All log levels
374
- - **`logs/error.log`** - Error logs only
375
-
376
- ### Testing Your Setup
377
-
378
- Test the server with these Claude queries:
379
-
380
- 1. **Basic connectivity**: "Can you list the available Gemini models?"
381
- 2. **Simple chat**: "Use Gemini to explain photosynthesis."
382
- 3. **Advanced features**: "Use Gemini 1.5 Pro with temperature 0.9 to write a creative poem about coding."
383
-
384
- ### Performance Tuning
385
-
386
- For better performance:
387
-
388
- 1. **Adjust token limits** based on your use case
389
- 2. **Use appropriate models** (Flash for speed, Pro for complex tasks)
390
- 3. **Monitor logs** for rate limiting or API issues
391
- 4. **Set reasonable temperature values** (0.7 for balanced, 0.3 for focused, 0.9 for creative)
392
-
393
- ## 🤝 Contributing
394
-
395
- Contributions are welcome! Please follow these steps:
396
-
397
- 1. **Fork the repository**
398
- 2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
399
- 3. **Make your changes** and add tests if applicable
400
- 4. **Ensure all tests pass**: `npm test`
401
- 5. **Lint your code**: `npm run lint:fix`
402
- 6. **Build the project**: `npm run build`
403
- 7. **Commit your changes**: `git commit -m 'Add amazing feature'`
404
- 8. **Push to the branch**: `git push origin feature/amazing-feature`
405
- 9. **Open a Pull Request**
406
-
407
- ### Development Guidelines
408
-
409
- - **Follow TypeScript best practices**
410
- - **Add tests for new functionality**
411
- - **Update documentation as needed**
412
- - **Use conventional commit messages**
413
- - **Ensure backwards compatibility**
414
-
415
- ## 📄 License
416
-
417
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
418
-
419
- ## 🆘 Support
420
-
421
- - **GitHub Issues**: [Report bugs or request features](https://github.com/houtini-ai/gemini-mcp/issues)
422
- - **GitHub Discussions**: [Ask questions or share ideas](https://github.com/houtini-ai/gemini-mcp/discussions)
423
-
424
- ## 📈 Changelog
425
-
426
- ### v1.0.0
427
-
428
- **Initial Release**
429
- - Complete Node.js/TypeScript rewrite from Python
430
- - Professional modular architecture with services pattern
431
- - Comprehensive error handling and logging system
432
- - Full MCP protocol compliance
433
- - Support for 6 Gemini models
434
- - NPM package distribution ready
435
- - Enterprise-grade configuration management
436
- - Production-ready build system
437
-
438
- ---
439
-
440
- **Built with ❤️ for the Model Context Protocol community**
441
-
442
- For more information about MCP, visit [modelcontextprotocol.io](https://modelcontextprotocol.io)
1
+ # Gemini MCP Server
2
+
3
+ [![npm version](https://badge.fury.io/js/@houtini/gemini-mcp.svg)](https://badge.fury.io/js/@houtini/gemini-mcp)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](https://www.typescriptlang.org/)
6
+
7
+ A professional, production-ready Model Context Protocol (MCP) server that provides seamless integration with Google's Gemini AI models. Built with TypeScript and designed for enterprise use, this package offers robust error handling, comprehensive logging, and easy deployment.
8
+
9
+ ## 🚀 Quick Start
10
+
11
+ The easiest way to get started is using `npx` - no installation required:
12
+
13
+ ```bash
14
+ # Get your API key from Google AI Studio
15
+ # https://makersuite.google.com/app/apikey
16
+
17
+ # Test the server (optional)
18
+ npx @houtini/gemini-mcp
19
+
20
+ # Add to Claude Desktop (see configuration below)
21
+ ```
22
+
23
+ ## 📋 Table of Contents
24
+
25
+ - [Features](#-features)
26
+ - [Installation](#-installation)
27
+ - [Configuration](#-configuration)
28
+ - [Usage Examples](#-usage-examples)
29
+ - [API Reference](#-api-reference)
30
+ - [Development](#-development)
31
+ - [Troubleshooting](#-troubleshooting)
32
+ - [Contributing](#-contributing)
33
+
34
+ ## ✨ Features
35
+
36
+ ### Core Functionality
37
+ - **🤖 Multi-Model Support** - Access to 6 Gemini models including the latest Gemini 2.5 Flash
38
+ - **💬 Chat Interface** - Advanced chat functionality with customisable parameters
39
+ - **🌐 Google Search Grounding** - Real-time web search integration enabled by default for current information
40
+ - **📊 Model Information** - Detailed model capabilities and specifications
41
+ - **🎛️ Fine-Grained Control** - Temperature, token limits, and system prompts
42
+
43
+ ### Enterprise Features
44
+ - **🏗️ Professional Architecture** - Modular services-based design
45
+ - **🛡️ Robust Error Handling** - Comprehensive error handling with detailed logging
46
+ - **📝 Winston Logging** - Production-ready logging with file rotation
47
+ - **🔒 Security Focused** - No hardcoded credentials, environment-based configuration
48
+ - **🏷️ Full TypeScript** - Complete type safety and IntelliSense support
49
+ - **⚡ High Performance** - Optimised for minimal latency and resource usage
50
+
51
+ ## 📦 Installation
52
+
53
+ ### Prerequisites
54
+
55
+ - **Node.js** v24.0.0
56
+ - **Google AI Studio API Key** ([Get your key here](https://makersuite.google.com/app/apikey))
57
+
58
+ ### Recommended: No Installation Required
59
+
60
+ The simplest approach uses `npx` to run the latest version automatically:
61
+
62
+ ```bash
63
+ # No installation needed - npx handles everything
64
+ npx @houtini/gemini-mcp
65
+ ```
66
+
67
+ ### Alternative Installation Methods
68
+
69
+ #### Global Installation
70
+ ```bash
71
+ # Install once, use anywhere
72
+ npm install -g @houtini/gemini-mcp
73
+ gemini-mcp
74
+ ```
75
+
76
+ #### Local Project Installation
77
+ ```bash
78
+ # Install in your project
79
+ npm install @houtini/gemini-mcp
80
+
81
+ # Run with npx
82
+ npx @houtini/gemini-mcp
83
+ ```
84
+
85
+ #### From Source (Developers)
86
+ ```bash
87
+ git clone https://github.com/houtini-ai/gemini-mcp.git
88
+ cd gemini-mcp
89
+ npm install
90
+ npm run build
91
+ npm start
92
+ ```
93
+
94
+ ## ⚙️ Configuration
95
+
96
+ ### Step 1: Get Your API Key
97
+
98
+ Visit [Google AI Studio](https://makersuite.google.com/app/apikey) to create your free API key.
99
+
100
+ ### Step 2: Configure Claude Desktop
101
+
102
+ Add this configuration to your Claude Desktop config file:
103
+
104
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
105
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
106
+
107
+ #### ✅ Recommended Configuration (using npx)
108
+
109
+ ```json
110
+ {
111
+ "mcpServers": {
112
+ "gemini": {
113
+ "command": "npx",
114
+ "args": ["@houtini/gemini-mcp"],
115
+ "env": {
116
+ "GEMINI_API_KEY": "your-api-key-here"
117
+ }
118
+ }
119
+ }
120
+ }
121
+ ```
122
+
123
+ **Benefits of this approach:**
124
+ - ✅ No global installation required
125
+ - ✅ Always uses the latest version
126
+ - ✅ Cleaner system (no global packages)
127
+ - ✅ Works out of the box
128
+
129
+ #### Alternative: Global Installation
130
+
131
+ ```json
132
+ {
133
+ "mcpServers": {
134
+ "gemini": {
135
+ "command": "gemini-mcp",
136
+ "env": {
137
+ "GEMINI_API_KEY": "your-api-key-here"
138
+ }
139
+ }
140
+ }
141
+ }
142
+ ```
143
+
144
+ *Note: Requires `npm install -g @houtini/gemini-mcp` first*
145
+
146
+ #### Alternative: Local Installation
147
+
148
+ ```json
149
+ {
150
+ "mcpServers": {
151
+ "gemini": {
152
+ "command": "node",
153
+ "args": ["./node_modules/@houtini/gemini-mcp/dist/index.js"],
154
+ "env": {
155
+ "GEMINI_API_KEY": "your-api-key-here"
156
+ }
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ *Note: Only works if installed locally in the current directory*
163
+
164
+ ### Step 3: Restart Claude Desktop
165
+
166
+ After updating the configuration file, restart Claude Desktop to load the new MCP server.
167
+
168
+ ### Optional Configuration
169
+
170
+ You can add additional environment variables for more control:
171
+
172
+ ```json
173
+ {
174
+ "mcpServers": {
175
+ "gemini": {
176
+ "command": "npx",
177
+ "args": ["@houtini/gemini-mcp"],
178
+ "env": {
179
+ "GEMINI_API_KEY": "your-api-key-here",
180
+ "LOG_LEVEL": "info"
181
+ }
182
+ }
183
+ }
184
+ }
185
+ ```
186
+
187
+ **Available Environment Variables:**
188
+
189
+ | Variable | Default | Description |
190
+ |----------|---------|-------------|
191
+ | `GEMINI_API_KEY` | *required* | Your Google AI Studio API key |
192
+ | `LOG_LEVEL` | `info` | Logging level: `debug`, `info`, `warn`, `error` |
193
+
194
+ ### Using .env File (Development)
195
+
196
+ For development or testing, create a `.env` file:
197
+
198
+ ```env
199
+ # Google Gemini Configuration
200
+ GEMINI_API_KEY=your-api-key-here
201
+
202
+ # Logging Configuration (optional)
203
+ LOG_LEVEL=info
204
+ ```
205
+
206
+ ## 💡 Usage Examples
207
+
208
+ ### Basic Chat
209
+
210
+ Ask Claude to use Gemini:
211
+
212
+ ```
213
+ Can you help me understand quantum computing using Gemini?
214
+ ```
215
+
216
+ Claude will automatically use the `gemini_chat` tool to get a response from Gemini.
217
+
218
+ ### Creative Writing
219
+
220
+ ```
221
+ Use Gemini to write a short story about artificial intelligence discovering creativity.
222
+ ```
223
+
224
+ ### Technical Analysis
225
+
226
+ ```
227
+ Can you use Gemini Pro to explain the differences between various machine learning algorithms?
228
+ ```
229
+
230
+ ### Model Selection
231
+
232
+ ```
233
+ Use Gemini 1.5 Pro to analyse this code and suggest improvements.
234
+ ```
235
+
236
+ ### Getting Model Information
237
+
238
+ ```
239
+ Show me all available Gemini models and their capabilities.
240
+ ```
241
+
242
+ ## 🌐 Google Search Grounding
243
+
244
+ This server includes **Google Search grounding** enabled by default, providing Gemini models with real-time access to current web information. This powerful feature enhances responses with up-to-date facts, recent developments, and current events that wouldn't be available in the model's training data.
245
+
246
+ ### How It Works
247
+
248
+ Google Search grounding automatically supplements Gemini's responses with:
249
+ - **Real-time information** - Current news, stock prices, weather, and events
250
+ - **Factual accuracy** - Reduces hallucinations by grounding responses in web sources
251
+ - **Source citations** - Provides metadata about search queries and sources used
252
+ - **Seamless integration** - Works transparently without changing your workflow
253
+
254
+ ### Usage Examples
255
+
256
+ Ask questions that benefit from current information:
257
+
258
+ ```
259
+ What are the latest developments in renewable energy this month?
260
+ What's the current stock price of major tech companies?
261
+ What are the recent breakthroughs in quantum computing?
262
+ What's happening in the 2025 climate summit?
263
+ ```
264
+
265
+ ### Controlling Grounding
266
+
267
+ **Default behaviour**: Grounding is **enabled by default** for optimal results.
268
+
269
+ **To disable grounding** for a specific request (useful for creative tasks):
270
+ ```
271
+ Use Gemini without web search to write a fictional story about space exploration.
272
+ ```
273
+
274
+ **Technical control**: When using the API directly, set `grounding: false` to disable:
275
+ ```json
276
+ {
277
+ "message": "Write a creative poem about dreams",
278
+ "grounding": false
279
+ }
280
+
281
+ ## 🔧 API Reference
282
+
283
+ ### Available Tools
284
+
285
+ #### `gemini_chat`
286
+
287
+ Chat with Gemini models to generate text responses.
288
+
289
+ **Parameters:**
290
+
291
+ | Parameter | Type | Required | Default | Description |
292
+ |-----------|------|----------|---------|-------------|
293
+ | `message` | string | ✅ | - | The message to send to Gemini |
294
+ | `model` | string | ❌ | "gemini-2.5-flash" | Model to use |
295
+ | `temperature` | number | ❌ | 0.7 | Controls randomness (0.0-1.0) |
296
+ | `max_tokens` | integer | ❌ | 2048 | Maximum tokens in response (1-8192) |
297
+ | `system_prompt` | string | ❌ | - | System instruction to guide the model |
298
+ | `grounding` | boolean | ❌ | true | Enable Google Search grounding for real-time information |
299
+
300
+ **Example:**
301
+ ```json
302
+ {
303
+ "message": "What are the latest developments in quantum computing?",
304
+ "model": "gemini-1.5-pro",
305
+ "temperature": 0.5,
306
+ "max_tokens": 1000,
307
+ "system_prompt": "You are a helpful technology expert. Provide current, factual information with sources where possible.",
308
+ "grounding": true
309
+ }
310
+ ```
311
+
312
+ #### `gemini_list_models`
313
+
314
+ Retrieve information about all available Gemini models.
315
+
316
+ **Parameters:** None required
317
+
318
+ **Example:**
319
+ ```json
320
+ {}
321
+ ```
322
+
323
+ **Response includes:**
324
+ - Model names and display names
325
+ - Descriptions of each model's strengths
326
+ - Recommended use cases
327
+
328
+ ### Available Models
329
+
330
+ | Model | Best For | Description |
331
+ |-------|----------|-------------|
332
+ | **gemini-2.5-flash** | General use, latest features | Latest Gemini 2.5 Flash - Fast, versatile performance |
333
+ | **gemini-2.0-flash** | Speed-optimised tasks | Gemini 2.0 Flash - Fast, efficient model |
334
+ | **gemini-1.5-flash** | Quick responses | Gemini 1.5 Flash - Fast, efficient model |
335
+ | **gemini-1.5-pro** | Complex reasoning | Gemini 1.5 Pro - Advanced reasoning capabilities |
336
+ | **gemini-pro** | Balanced performance | Gemini Pro - Balanced performance for most tasks |
337
+ | **gemini-pro-vision** | Multimodal tasks | Gemini Pro Vision - Text and image understanding |
338
+
339
+ ## 🛠️ Development
340
+
341
+ ### Building from Source
342
+
343
+ ```bash
344
+ # Clone the repository
345
+ git clone https://github.com/houtini-ai/gemini-mcp.git
346
+ cd gemini-mcp
347
+
348
+ # Install dependencies
349
+ npm install
350
+
351
+ # Build the project
352
+ npm run build
353
+
354
+ # Run in development mode
355
+ npm run dev
356
+ ```
357
+
358
+ ### Scripts
359
+
360
+ | Command | Description |
361
+ |---------|-------------|
362
+ | `npm run build` | Compile TypeScript to JavaScript |
363
+ | `npm run dev` | Run in development mode with live reload |
364
+ | `npm start` | Run the compiled server |
365
+ | `npm test` | Run test suite |
366
+ | `npm run lint` | Check code style |
367
+ | `npm run lint:fix` | Fix linting issues automatically |
368
+
369
+ ### Project Structure
370
+
371
+ ```
372
+ src/
373
+ ├── config/ # Configuration management
374
+ │ ├── index.ts # Main configuration
375
+ │ └── types.ts # Configuration types
376
+ ├── services/ # Core business logic
377
+ │ ├── base-service.ts
378
+ │ └── gemini/ # Gemini service implementation
379
+ │ ├── index.ts
380
+ │ └── types.ts
381
+ ├── tools/ # MCP tool implementations
382
+ │ ├── gemini-chat.ts
383
+ │ └── gemini-list-models.ts
384
+ ├── utils/ # Utility functions
385
+ │ ├── logger.ts # Winston logging setup
386
+ │ └── error-handler.ts
387
+ ├── cli.ts # CLI entry point
388
+ └── index.ts # Main server implementation
389
+ ```
390
+
391
+ ### Architecture
392
+
393
+ The server follows a clean, layered architecture:
394
+
395
+ 1. **CLI Layer** (`cli.ts`) - Command-line interface
396
+ 2. **Server Layer** (`index.ts`) - MCP protocol handling
397
+ 3. **Tools Layer** (`tools/`) - MCP tool implementations
398
+ 4. **Service Layer** (`services/`) - Business logic and API integration
399
+ 5. **Utility Layer** (`utils/`) - Cross-cutting concerns
400
+
401
+ ## 🐛 Troubleshooting
402
+
403
+ ### Common Issues
404
+
405
+ #### "GEMINI_API_KEY environment variable not set"
406
+
407
+ **Solution:**
408
+ ```bash
409
+ # Make sure your API key is set in the Claude Desktop configuration
410
+ # See the Configuration section above
411
+ ```
412
+
413
+ #### Server not appearing in Claude Desktop
414
+
415
+ **Solutions:**
416
+ 1. **Restart Claude Desktop** after updating configuration
417
+ 2. **Check your configuration file path**:
418
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
419
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
420
+ 3. **Verify JSON syntax** - use a JSON validator if needed
421
+ 4. **Ensure your API key is valid** - test at [Google AI Studio](https://makersuite.google.com/app/apikey)
422
+
423
+ #### "Module not found" errors with npx
424
+
425
+ **Solutions:**
426
+ ```bash
427
+ # Clear npx cache and try again
428
+ npx --yes @houtini/gemini-mcp
429
+
430
+ # Or install globally if preferred
431
+ npm install -g @houtini/gemini-mcp
432
+ ```
433
+
434
+ #### Node.js version issues
435
+
436
+ **Solution:**
437
+ ```bash
438
+ # Check your Node.js version
439
+ node --version
440
+
441
+ # Should be v24.0.0 or higher
442
+ # Install latest Node.js from https://nodejs.org
443
+ ```
444
+
445
+ ### Debug Mode
446
+
447
+ Enable detailed logging by setting `LOG_LEVEL=debug` in your Claude Desktop configuration:
448
+
449
+ ```json
450
+ {
451
+ "mcpServers": {
452
+ "gemini": {
453
+ "command": "npx",
454
+ "args": ["@houtini/gemini-mcp"],
455
+ "env": {
456
+ "GEMINI_API_KEY": "your-api-key-here",
457
+ "LOG_LEVEL": "debug"
458
+ }
459
+ }
460
+ }
461
+ }
462
+ ```
463
+
464
+ ### Log Files
465
+
466
+ Logs are written to:
467
+ - **Console output** (visible in Claude Desktop developer tools)
468
+ - **`logs/combined.log`** - All log levels
469
+ - **`logs/error.log`** - Error logs only
470
+
471
+ ### Testing Your Setup
472
+
473
+ Test the server with these Claude queries:
474
+
475
+ 1. **Basic connectivity**: "Can you list the available Gemini models?"
476
+ 2. **Simple chat**: "Use Gemini to explain photosynthesis."
477
+ 3. **Advanced features**: "Use Gemini 1.5 Pro with temperature 0.9 to write a creative poem about coding."
478
+
479
+ ### Performance Tuning
480
+
481
+ For better performance:
482
+
483
+ 1. **Adjust token limits** based on your use case
484
+ 2. **Use appropriate models** (Flash for speed, Pro for complex tasks)
485
+ 3. **Monitor logs** for rate limiting or API issues
486
+ 4. **Set reasonable temperature values** (0.7 for balanced, 0.3 for focused, 0.9 for creative)
487
+
488
+ ## 🤝 Contributing
489
+
490
+ Contributions are welcome! Please follow these steps:
491
+
492
+ 1. **Fork the repository**
493
+ 2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
494
+ 3. **Make your changes** and add tests if applicable
495
+ 4. **Ensure all tests pass**: `npm test`
496
+ 5. **Lint your code**: `npm run lint:fix`
497
+ 6. **Build the project**: `npm run build`
498
+ 7. **Commit your changes**: `git commit -m 'Add amazing feature'`
499
+ 8. **Push to the branch**: `git push origin feature/amazing-feature`
500
+ 9. **Open a Pull Request**
501
+
502
+ ### Development Guidelines
503
+
504
+ - **Follow TypeScript best practices**
505
+ - **Add tests for new functionality**
506
+ - **Update documentation as needed**
507
+ - **Use conventional commit messages**
508
+ - **Ensure backwards compatibility**
509
+
510
+ ## 📄 License
511
+
512
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
513
+
514
+ ## 🆘 Support
515
+
516
+ - **GitHub Issues**: [Report bugs or request features](https://github.com/houtini-ai/gemini-mcp/issues)
517
+ - **GitHub Discussions**: [Ask questions or share ideas](https://github.com/houtini-ai/gemini-mcp/discussions)
518
+
519
+ ## 📈 Changelog
520
+
521
+ ### v1.0.2
522
+
523
+ **Google Search Grounding**
524
+ - Added Google Search grounding functionality enabled by default
525
+ - Real-time web search integration for current information and facts
526
+ - Grounding metadata in responses with source citations
527
+ - Configurable grounding parameter in chat requests
528
+ - Enhanced accuracy for current events, news, and factual queries
529
+
530
+ ### v1.0.0
531
+
532
+ **Initial Release**
533
+ - Complete Node.js/TypeScript rewrite from Python
534
+ - Professional modular architecture with services pattern
535
+ - Comprehensive error handling and logging system
536
+ - Full MCP protocol compliance
537
+ - Support for 6 Gemini models
538
+ - NPM package distribution ready
539
+ - Enterprise-grade configuration management
540
+ - Production-ready build system
541
+
542
+ ---
543
+
544
+ **Built with ❤️ for the Model Context Protocol community**
545
+
546
+ For more information about MCP, visit [modelcontextprotocol.io](https://modelcontextprotocol.io)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMjC,eAAO,MAAM,MAAM,EAAE,MAiCpB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAOrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMjC,eAAO,MAAM,MAAM,EAAE,MAkCpB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAOrC"}
@@ -61,7 +61,8 @@ exports.config = {
61
61
  ],
62
62
  defaultModel: 'gemini-2.5-flash',
63
63
  maxTokens: 8192,
64
- temperature: 0.7
64
+ temperature: 0.7,
65
+ defaultGrounding: true
65
66
  },
66
67
  server: {
67
68
  name: 'gemini-mcp',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,wCAOC;AA/CD,+CAAiC;AAEjC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEH,QAAA,MAAM,GAAW;IAC5B,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,cAAc,EAAE;YACd;gBACE,QAAQ,EAAE,0BAA0B;gBACpC,SAAS,EAAE,YAAY;aACxB;YACD;gBACE,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE,YAAY;aACxB;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,YAAY;aACxB;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,YAAY;aACxB;SACF;QACD,YAAY,EAAE,kBAAkB;QAChC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,GAAG;KACjB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,MAAM,EAAE,UAAU;KACnB;CACF,CAAC;AAEF,SAAgB,cAAc;IAC5B,IAAI,CAAC,cAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC/C,yEAAyE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,wCAOC;AAhDD,+CAAiC;AAEjC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEH,QAAA,MAAM,GAAW;IAC5B,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,cAAc,EAAE;YACd;gBACE,QAAQ,EAAE,0BAA0B;gBACpC,SAAS,EAAE,YAAY;aACxB;YACD;gBACE,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE,YAAY;aACxB;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,YAAY;aACxB;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,YAAY;aACxB;SACF;QACD,YAAY,EAAE,kBAAkB;QAChC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,GAAG;QAChB,gBAAgB,EAAE,IAAI;KACvB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,MAAM,EAAE,UAAU;KACnB;CACF,CAAC;AAEF,SAAgB,cAAc;IAC5B,IAAI,CAAC,cAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC/C,yEAAyE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -8,6 +8,7 @@ export interface GeminiConfig {
8
8
  defaultModel: string;
9
9
  maxTokens: number;
10
10
  temperature: number;
11
+ defaultGrounding: boolean;
11
12
  }
12
13
  export interface ServerConfig {
13
14
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAGjB,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CA+B9B;gBAEU,MAAM,EAAE,YAAY;IAY1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA8FjD,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAazC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAwBxC,OAAO,CAAC,iBAAiB;IAqBzB,kBAAkB,IAAI,MAAM,EAAE;CAG/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAGjB,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CA+B9B;gBAEU,MAAM,EAAE,YAAY;IAY1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA+GjD,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAazC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAwBxC,OAAO,CAAC,iBAAiB;IAqBzB,kBAAkB,IAAI,MAAM,EAAE;CAG/B"}
@@ -51,22 +51,30 @@ class GeminiService extends base_service_1.BaseService {
51
51
  }
52
52
  async chat(request) {
53
53
  try {
54
- this.logInfo(`Chat request to ${request.model || this.config.defaultModel}`, {
54
+ // Determine if grounding should be used
55
+ const shouldUseGrounding = request.grounding ?? this.config.defaultGrounding;
56
+ const modelName = request.model || this.config.defaultModel;
57
+ this.logInfo(`Chat request to ${modelName}`, {
55
58
  messageLength: request.message.length,
56
- hasSystemPrompt: !!request.systemPrompt
59
+ hasSystemPrompt: !!request.systemPrompt,
60
+ grounding: shouldUseGrounding
57
61
  });
58
- const modelName = request.model || this.config.defaultModel;
59
62
  // Configure generation parameters
60
63
  const generationConfig = {
61
64
  temperature: request.temperature ?? this.config.temperature,
62
65
  maxOutputTokens: request.maxTokens ?? this.config.maxTokens
63
66
  };
64
- // Initialize model with safety settings
65
- const model = this.genAI.getGenerativeModel({
67
+ // Initialize model with safety settings and optional grounding
68
+ const modelConfig = {
66
69
  model: modelName,
67
70
  safetySettings: this.mapSafetySettings(),
68
71
  generationConfig
69
- });
72
+ };
73
+ // Add grounding tool if enabled
74
+ if (shouldUseGrounding) {
75
+ modelConfig.tools = [{ googleSearch: {} }];
76
+ }
77
+ const model = this.genAI.getGenerativeModel(modelConfig);
70
78
  // Prepare prompt
71
79
  const prompt = request.systemPrompt
72
80
  ? `${request.systemPrompt}\n\nUser: ${request.message}\n\nAssistant:`
@@ -103,16 +111,22 @@ class GeminiService extends base_service_1.BaseService {
103
111
  }
104
112
  throw new error_handler_1.GeminiError('No text content in response. The model may have filtered the content.');
105
113
  }
114
+ // Extract grounding metadata if available
115
+ const candidate = response.candidates?.[0];
116
+ const groundingMetadata = candidate?.groundingMetadata;
106
117
  const chatResponse = {
107
118
  content: responseText,
108
119
  model: modelName,
109
120
  timestamp: new Date().toISOString(),
110
- finishReason: response.candidates?.[0]?.finishReason?.toString()
121
+ finishReason: response.candidates?.[0]?.finishReason?.toString(),
122
+ groundingMetadata
111
123
  };
112
124
  this.logInfo('Chat response generated successfully', {
113
125
  model: modelName,
114
126
  responseLength: responseText.length,
115
- finishReason: chatResponse.finishReason
127
+ finishReason: chatResponse.finishReason,
128
+ hasGroundingMetadata: !!groundingMetadata,
129
+ searchQueries: groundingMetadata?.webSearchQueries?.length || 0
116
130
  });
117
131
  return chatResponse;
118
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/gemini/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/gemini/index.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
+ import { GroundingMetadata } from '@google/generative-ai';
1
2
  export interface ChatRequest {
2
3
  message: string;
3
4
  model?: string;
4
5
  temperature?: number;
5
6
  maxTokens?: number;
6
7
  systemPrompt?: string;
8
+ grounding?: boolean;
7
9
  }
8
10
  export interface ChatResponse {
9
11
  content: string;
10
12
  model: string;
11
13
  timestamp: string;
12
14
  finishReason?: string;
15
+ groundingMetadata?: GroundingMetadata;
13
16
  }
14
17
  export interface ModelInfo {
15
18
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-chat.d.ts","sourceRoot":"","sources":["../../src/tools/gemini-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,WAAW,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,qBAAa,cAAc;IACb,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD,aAAa,IAAI,IAAI;IAyCf,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CA+BjD"}
1
+ {"version":3,"file":"gemini-chat.d.ts","sourceRoot":"","sources":["../../src/tools/gemini-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,WAAW,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,qBAAa,cAAc;IACb,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD,aAAa,IAAI,IAAI;IA8Cf,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAgCjD"}
@@ -45,6 +45,11 @@ class GeminiChatTool {
45
45
  system_prompt: {
46
46
  type: 'string',
47
47
  description: 'Optional system instruction'
48
+ },
49
+ grounding: {
50
+ type: 'boolean',
51
+ default: true,
52
+ description: 'Enable Google Search grounding for real-time information'
48
53
  }
49
54
  },
50
55
  required: ['message']
@@ -65,7 +70,8 @@ class GeminiChatTool {
65
70
  model: args.model,
66
71
  temperature: args.temperature,
67
72
  maxTokens: args.max_tokens,
68
- systemPrompt: args.system_prompt
73
+ systemPrompt: args.system_prompt,
74
+ grounding: args.grounding
69
75
  });
70
76
  return (0, error_handler_1.createToolResult)(true, response.content);
71
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-chat.js","sourceRoot":"","sources":["../../src/tools/gemini-chat.ts"],"names":[],"mappings":";;;;;;AAEA,0DAAoE;AACpE,6DAAqC;AAErC,MAAa,cAAc;IACL;IAApB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD,aAAa;QACX,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,gCAAgC;YAC7C,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,qBAAqB;qBACnC;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,kBAAkB;wBAC3B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;wBAC7C,WAAW,EAAE,cAAc;qBAC5B;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,GAAG;wBACZ,WAAW,EAAE,kCAAkC;qBAChD;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,CAAC;wBACV,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,4BAA4B;qBAC1C;oBACD,aAAa,EAAE;wBACb,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6BAA6B;qBAC3C;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAS;QACrB,IAAI,CAAC;YACH,gBAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACxC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,wBAAQ,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC7C,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC,CAAC;YAEH,OAAO,IAAA,gCAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7D,IAAI,KAAK,YAAY,wBAAQ,EAAE,CAAC;gBAC9B,OAAO,IAAA,gCAAgB,EAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,IAAA,gCAAgB,EAAC,KAAK,EAAE,qBAAsB,KAAe,CAAC,OAAO,EAAE,EAAE,KAAc,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;CACF;AA3ED,wCA2EC"}
1
+ {"version":3,"file":"gemini-chat.js","sourceRoot":"","sources":["../../src/tools/gemini-chat.ts"],"names":[],"mappings":";;;;;;AAEA,0DAAoE;AACpE,6DAAqC;AAErC,MAAa,cAAc;IACL;IAApB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD,aAAa;QACX,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,gCAAgC;YAC7C,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,qBAAqB;qBACnC;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,kBAAkB;wBAC3B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;wBAC7C,WAAW,EAAE,cAAc;qBAC5B;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,GAAG;wBACZ,WAAW,EAAE,kCAAkC;qBAChD;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,CAAC;wBACV,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,4BAA4B;qBAC1C;oBACD,aAAa,EAAE;wBACb,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6BAA6B;qBAC3C;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,0DAA0D;qBACxE;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAS;QACrB,IAAI,CAAC;YACH,gBAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACxC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,wBAAQ,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC7C,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YAEH,OAAO,IAAA,gCAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7D,IAAI,KAAK,YAAY,wBAAQ,EAAE,CAAC;gBAC9B,OAAO,IAAA,gCAAgB,EAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,IAAA,gCAAgB,EAAC,KAAK,EAAE,qBAAsB,KAAe,CAAC,OAAO,EAAE,EAAE,KAAc,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;CACF;AAjFD,wCAiFC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@houtini/gemini-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Professional Model Context Protocol server for Google Gemini AI models with enterprise-grade features",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -73,8 +73,8 @@
73
73
  "typescript": "^5.5.0"
74
74
  },
75
75
  "engines": {
76
- "node": ">=18.0.0",
77
- "npm": ">=8.0.0"
76
+ "node": ">=24.0.0",
77
+ "npm": ">=10.0.0"
78
78
  },
79
79
  "files": [
80
80
  "dist/**/*",