serper-search-mcp 2.0.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 ADDED
@@ -0,0 +1,428 @@
1
+ # Serper Search MCP Server v2.0.0 - Enterprise Edition
2
+
3
+ 🚀 **Enterprise-grade Google search MCP server** with **dual architecture**: JavaScript for integration + TypeScript for enterprise development.
4
+
5
+ 👨‍💻 **Author:** SMJAHID from SMLabs01
6
+ 📦 **NPM:** `@modelcontextprotocol/server-serper-search`
7
+ 🐳 **Docker:** `smlabs01/server-serper-search`
8
+ 🔧 **Architecture:** JavaScript (primary) + TypeScript (enterprise modular design)
9
+
10
+ ---
11
+
12
+ ## 🏗️ Dual Architecture Approach
13
+
14
+ This server provides **the best of both worlds**:
15
+
16
+ ### **JavaScript Version (Primary)**
17
+ - **File:** `index.js` - Single file deployment
18
+ - **Transport:** Full HTTP/SSE + STDIO support
19
+ - **Integration:** Zero build process, immediate deployment
20
+ - **Use Case:** Kilo Code integration, simple deployment
21
+
22
+ ### **TypeScript Version (Enterprise)**
23
+ - **Structure:** `src/` - Modular enterprise architecture
24
+ - **Features:** Type safety, better IDE support, team development
25
+ - **Build:** `npm run build` creates `dist/` folder
26
+ - **Use Case:** Large teams, maintainability, advanced development
27
+
28
+ ## 🏗️ Enterprise Architecture
29
+ This server follows enterprise-grade patterns:
30
+
31
+ ```
32
+ src/
33
+ ├── api/
34
+ │ └── SerperAPI.ts # Serper API client abstraction
35
+ ├── tools/
36
+ │ └── SearchTools.ts # Tool definitions and validation
37
+ ├── utils/
38
+ │ └── ResultFormatter.ts # Response formatting utilities
39
+ ├── server/
40
+ │ └── SerperMCPServer.ts # Main server implementation
41
+ ├── types/
42
+ │ └── index.ts # TypeScript type definitions
43
+ └── index.ts # Application entry point
44
+ ```
45
+
46
+ ## Features
47
+ - 🔍 **Multi-Type Search**: Web, Images, Videos, News, and Shopping search capabilities
48
+ - 🚀 **Multi-Transport**: STDIO (default) and HTTP/SSE transport modes
49
+ - 🌍 **Advanced Filtering**: Country, language, freshness, and content filters
50
+ - 🤖 **AI Summarization**: Generate summaries from search results
51
+ - 🐳 **Docker Support**: Multi-stage builds with smlabs01 namespace
52
+ - 📦 **NPM Package**: TypeScript with full CLI support
53
+ - ⚡ **Fast Results**: Optimized API client with error handling
54
+ - 🎯 **Structured Data**: Clean JSON responses perfect for AI processing
55
+ - 🔧 **Enterprise Ready**: Modular architecture for maintainability
56
+
57
+ ## 🚀 Quick Start & Integration Guide
58
+
59
+ **🎯 Use JavaScript Version (`index.js`) for integration:**
60
+
61
+ ```bash
62
+ # No build process required
63
+ node index.js --help
64
+
65
+ # HTTP transport ready
66
+ SERPER_MCP_TRANSPORT=http SERPER_MCP_PORT=8080 node index.js
67
+
68
+ # Docker integration
69
+ docker run -e SERPER_API_KEY=your_key smlabs01/server-serper-search:2.0.0
70
+ ```
71
+
72
+ **Why JavaScript for Integration:**
73
+ - ✅ **Zero configuration** - No build step needed
74
+ - ✅ **HTTP transport** - Full MCP SSE support
75
+ - ✅ **Simple deployment** - Single file execution
76
+ - ✅ **Standard approach** - Like other MCP servers
77
+
78
+ ### For Enterprise Development (Optional)
79
+
80
+ **🏗️ Use TypeScript Version (`src/`) for development:**
81
+
82
+ ```bash
83
+ # Build TypeScript
84
+ npm run build
85
+
86
+ # Use compiled version
87
+ node dist/index.js --help
88
+
89
+ # Enterprise benefits
90
+ # - Type safety and IntelliSense
91
+ # - Modular architecture
92
+ # - Better for large teams
93
+ ```
94
+
95
+ ## Installation & Setup
96
+
97
+ ### Option 1: NPX (Recommended for Integration)
98
+
99
+ 1. **Get your Serper API key** from [Serper.dev](https://serper.dev)
100
+
101
+ 2. **Configure the MCP server** in your MCP settings:
102
+
103
+ ```json
104
+ {
105
+ "mcpServers": {
106
+ "serper-search": {
107
+ "command": "npx",
108
+ "args": ["-y", "@modelcontextprotocol/server-serper-search"],
109
+ "env": {
110
+ "SERPER_API_KEY": "your_actual_api_key_here"
111
+ }
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
117
+ 3. **Restart your MCP client**
118
+
119
+ ### Option 2: Docker
120
+
121
+ 1. **Pull from Docker Hub** (Recommended):
122
+ ```bash
123
+ docker pull smlabs01/server-serper-search:2.0.0
124
+ ```
125
+
126
+ 2. **Or build locally**:
127
+ ```bash
128
+ docker build -t smlabs01/server-serper-search:2.0.0 .
129
+ ```
130
+
131
+ 3. **Configure the MCP server**:
132
+ ```json
133
+ {
134
+ "mcpServers": {
135
+ "serper-search": {
136
+ "command": "docker",
137
+ "args": [
138
+ "run",
139
+ "-i",
140
+ "--rm",
141
+ "-e",
142
+ "SERPER_API_KEY=your_actual_api_key_here",
143
+ "smlabs01/server-serper-search:2.0.0"
144
+ ]
145
+ }
146
+ }
147
+ }
148
+ ```
149
+
150
+ ### Option 2.1: Docker Compose (Development)
151
+
152
+ 1. **Set your API key**:
153
+ ```bash
154
+ export SERPER_API_KEY="your_actual_api_key_here"
155
+ ```
156
+
157
+ 2. **Start with Docker Compose**:
158
+ ```bash
159
+ # Production mode
160
+ docker-compose up
161
+
162
+ # Development mode with hot reload
163
+ docker-compose --profile dev up
164
+ ```
165
+
166
+ 3. **Access the server** at `http://localhost:8080`
167
+
168
+ ### Option 3: Local Installation
169
+
170
+ 1. **Clone and install**:
171
+ ```bash
172
+ git clone https://github.com/smjahid012/serper-search-mcp-server.git
173
+ cd server-serper-search
174
+ npm install
175
+ ```
176
+
177
+ 2. **Set environment variable**:
178
+ ```bash
179
+ export SERPER_API_KEY="your_actual_api_key_here"
180
+ ```
181
+
182
+ 3. **Run locally**:
183
+ ```bash
184
+ # STDIO mode (default)
185
+ npm start
186
+
187
+ # HTTP mode
188
+ npm run http
189
+
190
+ # Show help
191
+ npm run help
192
+ ```
193
+
194
+ ### Option 4: Command Line Interface
195
+
196
+ ```bash
197
+ # Show all options
198
+ node index.js --help
199
+
200
+ # Run with custom options
201
+ node index.js --transport http --port 3000 --host 127.0.0.1
202
+
203
+ # Environment variables
204
+ SERPER_MCP_TRANSPORT=http SERPER_MCP_PORT=3000 node index.js
205
+ ```
206
+
207
+ ## Usage
208
+
209
+ Once configured, you can use the search tools in your MCP client:
210
+
211
+ ### Available Tools:
212
+
213
+ #### 1. `search_web` - General Web Search
214
+ **Parameters:**
215
+ - `query` (required): The search query string (max 400 chars, 50 words)
216
+ - `num_results` (optional): Number of results to return (1-20, default: 10)
217
+ - `country` (optional): Country code (default: "US")
218
+ - `search_lang` (optional): Search language (default: "en")
219
+ - `ui_lang` (optional): UI language (default: "en-US")
220
+ - `freshness` (optional): Time filter ("pd", "pw", "pm", "py")
221
+ - `safesearch` (optional): Content filtering ("off", "moderate", "strict")
222
+ - `summary` (optional): Enable AI summarization (default: false)
223
+
224
+ **Example:**
225
+ ```javascript
226
+ // Advanced search with filtering
227
+ await callTool("search_web", {
228
+ query: "artificial intelligence recent news",
229
+ num_results: 15,
230
+ country: "US",
231
+ freshness: "pw", // Past week
232
+ safesearch: "moderate",
233
+ summary: true // Get AI summary
234
+ });
235
+ ```
236
+
237
+ #### 2. `search_images` - Image Search
238
+ **Parameters:**
239
+ - `query` (required): The image search query
240
+ - `num_results` (optional): Number of results to return (default: 10)
241
+
242
+ **Example:**
243
+ ```javascript
244
+ // Search for AI-generated images
245
+ await callTool("search_images", {
246
+ query: "artificial intelligence artwork",
247
+ num_results: 8
248
+ });
249
+ ```
250
+
251
+ #### 3. `search_videos` - Video Search
252
+ **Parameters:**
253
+ - `query` (required): The video search query
254
+ - `num_results` (optional): Number of results to return (default: 10)
255
+
256
+ **Example:**
257
+ ```javascript
258
+ // Search for tutorial videos
259
+ await callTool("search_videos", {
260
+ query: "machine learning tutorials",
261
+ num_results: 5
262
+ });
263
+ ```
264
+
265
+ #### 4. `search_news` - News Search
266
+ **Parameters:**
267
+ - `query` (required): The news search query
268
+ - `num_results` (optional): Number of results to return (default: 10)
269
+
270
+ **Example:**
271
+ ```javascript
272
+ // Get latest AI news
273
+ await callTool("search_news", {
274
+ query: "artificial intelligence breakthroughs 2024",
275
+ num_results: 10
276
+ });
277
+ ```
278
+
279
+ #### 5. `search_shopping` - Shopping/Product Search
280
+ **Parameters:**
281
+ - `query` (required): The shopping search query
282
+ - `num_results` (optional): Number of results to return (default: 10)
283
+
284
+ **Example:**
285
+ ```javascript
286
+ // Search for products
287
+ await callTool("search_shopping", {
288
+ query: "wireless headphones under $100",
289
+ num_results: 5
290
+ });
291
+ ```
292
+
293
+ ## Configuration
294
+
295
+ ### Environment Variables
296
+
297
+ The server supports the following environment variables:
298
+
299
+ | Variable | Description | Default | Required |
300
+ |----------|-------------|---------|----------|
301
+ | `SERPER_API_KEY` | Your Serper API key | - | ✅ |
302
+ | `SERPER_MCP_TRANSPORT` | Transport mode | `stdio` | ❌ |
303
+ | `SERPER_MCP_PORT` | HTTP server port | `8080` | ❌ |
304
+ | `SERPER_MCP_HOST` | HTTP server host | `0.0.0.0` | ❌ |
305
+ | `SERPER_MCP_LOG_LEVEL` | Logging level | `info` | ❌ |
306
+
307
+ ### Command Line Options
308
+
309
+ ```bash
310
+ node index.js [options]
311
+
312
+ Options:
313
+ --transport <stdio\|http> Transport type (default: stdio)
314
+ --port <number> HTTP server port (default: 8080)
315
+ --host <string> HTTP server host (default: "0.0.0.0")
316
+ --log-level <string> Logging level (default: "info")
317
+ --api-key <string> Serper API key
318
+ --help Show help message
319
+ ```
320
+
321
+ ## Search Capabilities
322
+
323
+ The server supports all major Google search types through the Serper API:
324
+
325
+ | Search Type | Use Case | Data Included |
326
+ |-------------|----------|---------------|
327
+ | **Web** | General research, content discovery | Title, URL, snippet, SEO data |
328
+ | **Images** | AI datasets, creative tools, visual research | Image URL, thumbnail, source page |
329
+ | **Videos** | Learning, entertainment, research | Title, channel, duration, thumbnail |
330
+ | **News** | Current events, trend monitoring | Headlines, sources, publication dates |
331
+ | **Shopping** | E-commerce, price comparison | Products, prices, ratings, sources |
332
+
333
+ ## Usage Scenarios
334
+
335
+ With these comprehensive search capabilities, your Serper MCP server can be used for:
336
+
337
+ ### 🤖 **AI & Machine Learning**
338
+ - **Dataset Collection**: Gather images for training computer vision models
339
+ - **Research**: Find latest papers, tutorials, and educational videos
340
+ - **Content Generation**: Source diverse content for AI-generated materials
341
+
342
+ ### 🔍 **Research & Analysis**
343
+ - **Market Research**: Track product prices, reviews, and competition
344
+ - **Trend Analysis**: Monitor news and social media for emerging trends
345
+ - **Competitive Intelligence**: Research competitor products and strategies
346
+
347
+ ### 📈 **Business Intelligence**
348
+ - **Lead Generation**: Find business contact information and company data
349
+ - **Content Marketing**: Discover trending topics and viral content
350
+ - **SEO Research**: Analyze search results and ranking factors
351
+
352
+ ### 🎨 **Creative Work**
353
+ - **Design Inspiration**: Search for visual references and creative assets
354
+ - **Media Research**: Find videos, images, and audio for projects
355
+ - **Content Curation**: Gather materials for blogs, presentations, and reports
356
+
357
+ ### 💼 **E-commerce & Shopping**
358
+ - **Price Monitoring**: Track product prices across different retailers
359
+ - **Product Research**: Find detailed product information and reviews
360
+ - **Market Analysis**: Compare products and identify market gaps
361
+
362
+
363
+ ## License
364
+
365
+ MIT License - see LICENSE file for details.
366
+
367
+ ## Support
368
+
369
+ For issues and questions:
370
+ - GitHub Issues: [Report bugs](https://github.com/smjahid012/serper-search-mcp-server/issues)
371
+ - Serper API: [Get API key](https://serper.dev)
372
+
373
+ ## 📋 Version History & Migration Guide
374
+
375
+ ### v2.0.0 (Latest) - Enterprise Edition 🚀
376
+ **Release Date:** October 2024
377
+ **Author:** SMJAHID from SMLabs01
378
+
379
+ **🎯 New Features:**
380
+ - 🌐 **Multi-Transport Support**: HTTP/SSE + STDIO transport modes
381
+ - 🎛️ **Advanced Filtering**: Country, language, freshness, content filters
382
+ - 🤖 **AI Summarization**: Generate summaries from search results
383
+ - 🔧 **Command Line Interface**: Full CLI with help and options
384
+ - 🐳 **Docker Compose**: Development and production environments
385
+ - ⚙️ **Enhanced Configuration**: Environment variables and CLI options
386
+ - 📦 **Enterprise Architecture**: Modular TypeScript structure available
387
+
388
+ **🔧 Improvements:**
389
+ - 📊 **Parameter Validation**: Query length limits and input validation
390
+ - 🔍 **Enhanced Search Parameters**: Full Serper API feature support
391
+ - 📚 **Comprehensive Documentation**: Complete integration guide
392
+ - 🏗️ **Better Architecture**: Improved error handling and logging
393
+ - 🚀 **Performance Optimized**: Faster startup and response times
394
+
395
+ **📁 File Structure:**
396
+ ```
397
+ JavaScript (Primary): index.js - Single file deployment
398
+ TypeScript (Enterprise): src/ (6 modules) - Modular architecture
399
+ Docker: smlabs01/server-serper-search:2.0.0
400
+ NPM: @modelcontextprotocol/server-serper-search
401
+ ```
402
+
403
+ **⬆️ Migration from v1.x:**
404
+ - ✅ **Backward Compatible**: All v1.x configurations work
405
+ - ✅ **Default Transport**: STDIO (same as v1.x)
406
+ - ✅ **New Features**: Opt-in via parameters
407
+ - ⚡ **No Breaking Changes**: Existing integrations continue working
408
+
409
+ ### v1.1.0 - Multi-Type Search Expansion
410
+ **Added:** Images, Videos, News, Shopping search capabilities
411
+ **Enhanced:** Result formatting and documentation
412
+
413
+ ### v1.0.0 - Initial Release
414
+ **Features:** Basic web search, Docker/NPX support, MCP compliance
415
+
416
+ ---
417
+
418
+ ## 📋 **v2.0.0 Integration Summary**
419
+
420
+ | Component | JavaScript Version | TypeScript Version | Agent Ready |
421
+ |-----------|-------------------|-------------------|----------------|
422
+ | **Primary Server** | ✅ `index.js` | ❌ `src/` (enterprise) | ✅ **JavaScript** |
423
+ | **Transport Support** | ✅ HTTP/SSE + STDIO | ✅ STDIO | ✅ **JavaScript** |
424
+ | **Build Required** | ❌ No | ✅ Yes (`npm run build`) | ✅ **JavaScript** |
425
+ | **Docker Hub** | ✅ `smlabs01/server-serper-search` | ✅ Same | ✅ **Both** |
426
+ | **Enterprise Ready** | ❌ Simple | ✅ Modular structure | ✅ **TypeScript** |
427
+
428
+ ---
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Serper API Client for Serper MCP Server v2.0.0 - Enterprise Edition
3
+ * Author: SMJAHID from SMLabs01
4
+ */
5
+ import { SearchOptions, SerperAPIResponse, SearchType } from '../types';
6
+ export declare class SerperAPI {
7
+ private apiKey;
8
+ private baseURL;
9
+ constructor(apiKey: string);
10
+ /**
11
+ * Perform search request to Serper API
12
+ */
13
+ search(query: string, searchType?: SearchType, options?: Partial<SearchOptions>): Promise<SerperAPIResponse>;
14
+ /**
15
+ * Build request body for Serper API
16
+ */
17
+ private buildRequestBody;
18
+ /**
19
+ * Validate API key by making a test request
20
+ */
21
+ validateApiKey(): Promise<boolean>;
22
+ /**
23
+ * Get API usage information (if available)
24
+ */
25
+ getApiInfo(): {
26
+ endpoint: string;
27
+ version: string;
28
+ };
29
+ }
30
+ //# sourceMappingURL=SerperAPI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerperAPI.d.ts","sourceRoot":"","sources":["../../src/api/SerperAPI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,UAAkB,EAAE,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8B7H;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoDxB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IASxC;;OAEG;IACH,UAAU,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAMpD"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Serper API Client for Serper MCP Server v2.0.0 - Enterprise Edition
4
+ * Author: SMJAHID from SMLabs01
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SerperAPI = void 0;
8
+ class SerperAPI {
9
+ constructor(apiKey) {
10
+ this.apiKey = apiKey;
11
+ this.baseURL = 'https://google.serper.dev';
12
+ }
13
+ /**
14
+ * Perform search request to Serper API
15
+ */
16
+ async search(query, searchType = 'web', options = {}) {
17
+ const requestBody = this.buildRequestBody(query, searchType, {
18
+ query,
19
+ ...options
20
+ });
21
+ try {
22
+ const response = await fetch(`${this.baseURL}/search`, {
23
+ method: 'POST',
24
+ headers: {
25
+ 'X-API-KEY': this.apiKey,
26
+ 'Content-Type': 'application/json'
27
+ },
28
+ body: JSON.stringify(requestBody)
29
+ });
30
+ if (!response.ok) {
31
+ const errorText = await response.text();
32
+ throw new Error(`Serper API error (${response.status}): ${errorText}`);
33
+ }
34
+ return await response.json();
35
+ }
36
+ catch (error) {
37
+ if (error instanceof Error) {
38
+ throw error;
39
+ }
40
+ throw new Error('Unknown error occurred during API request');
41
+ }
42
+ }
43
+ /**
44
+ * Build request body for Serper API
45
+ */
46
+ buildRequestBody(query, searchType, options) {
47
+ const { num_results = 10, country = 'US', search_lang = 'en', ui_lang = 'en-US', freshness, safesearch = 'moderate', summary = false } = options;
48
+ const requestBody = {
49
+ q: query,
50
+ num: Math.min(num_results, 20), // Cap at 20 per API limits
51
+ gl: country, // Country code
52
+ hl: ui_lang, // UI language
53
+ lr: `lang_${search_lang}` // Search language
54
+ };
55
+ // Add search type specific parameters
56
+ switch (searchType) {
57
+ case 'images':
58
+ requestBody.tbm = 'isch'; // Images search
59
+ break;
60
+ case 'videos':
61
+ requestBody.tbm = 'vid'; // Videos search
62
+ break;
63
+ case 'news':
64
+ requestBody.tbm = 'nws'; // News search
65
+ break;
66
+ case 'shopping':
67
+ requestBody.tbm = 'shop'; // Shopping search
68
+ break;
69
+ // web search uses default parameters
70
+ }
71
+ // Add optional filters
72
+ if (freshness) {
73
+ requestBody.tbs = `qdr:${freshness}`; // Time-based search
74
+ }
75
+ if (safesearch && safesearch !== 'moderate') {
76
+ requestBody.safe = safesearch === 'strict' ? 'active' : 'off';
77
+ }
78
+ if (summary) {
79
+ requestBody.summary = true; // Enable AI summarization
80
+ }
81
+ return requestBody;
82
+ }
83
+ /**
84
+ * Validate API key by making a test request
85
+ */
86
+ async validateApiKey() {
87
+ try {
88
+ await this.search('test query', 'web', { num_results: 1 });
89
+ return true;
90
+ }
91
+ catch (error) {
92
+ return false;
93
+ }
94
+ }
95
+ /**
96
+ * Get API usage information (if available)
97
+ */
98
+ getApiInfo() {
99
+ return {
100
+ endpoint: this.baseURL,
101
+ version: '2.0.0'
102
+ };
103
+ }
104
+ }
105
+ exports.SerperAPI = SerperAPI;
106
+ //# sourceMappingURL=SerperAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerperAPI.js","sourceRoot":"","sources":["../../src/api/SerperAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { SerperMCPServer } from './server/SerperMCPServer';
3
+ export { SerperMCPServer };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AA0G3D,OAAO,EAAE,eAAe,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SerperMCPServer = void 0;
5
+ const SerperMCPServer_1 = require("./server/SerperMCPServer");
6
+ Object.defineProperty(exports, "SerperMCPServer", { enumerable: true, get: function () { return SerperMCPServer_1.SerperMCPServer; } });
7
+ /**
8
+ * Serper Search MCP Server v2.0.0 - Enterprise Edition
9
+ *
10
+ * Author: SMJAHID from SMLabs01
11
+ * Description: Enterprise-grade Google search MCP server with multi-transport support
12
+ *
13
+ * Features:
14
+ * - Multi-Type Search (Web, Images, Videos, News, Shopping)
15
+ * - Multi-Transport (STDIO, HTTP/SSE)
16
+ * - Advanced Filtering (Country, Language, Freshness, Content)
17
+ * - AI Summarization
18
+ * - Docker & NPM Deployment
19
+ */
20
+ // Parse command line arguments
21
+ function parseArgs() {
22
+ const args = process.argv.slice(2);
23
+ const options = {};
24
+ for (let i = 0; i < args.length; i++) {
25
+ const arg = args[i];
26
+ switch (arg) {
27
+ case '--transport':
28
+ options.transport = args[++i];
29
+ break;
30
+ case '--port':
31
+ options.port = parseInt(args[++i]);
32
+ break;
33
+ case '--host':
34
+ options.host = args[++i];
35
+ break;
36
+ case '--log-level':
37
+ options.logLevel = args[++i];
38
+ break;
39
+ case '--api-key':
40
+ options.apiKey = args[++i];
41
+ break;
42
+ case '--help':
43
+ console.log(`
44
+ Serper MCP Server v2.0.0 - Enterprise Edition
45
+
46
+ Usage: node dist/index.js [options]
47
+
48
+ Options:
49
+ --transport <stdio|http> Transport mode (default: stdio)
50
+ --port <number> HTTP server port (default: 8080)
51
+ --host <string> HTTP server host (default: "0.0.0.0")
52
+ --log-level <string> Logging level (default: "info")
53
+ --api-key <string> Serper API key
54
+ --help Show this help message
55
+
56
+ Environment Variables:
57
+ SERPER_API_KEY Your Serper API key (required)
58
+ SERPER_MCP_TRANSPORT Transport mode ("stdio" or "http")
59
+ SERPER_MCP_PORT HTTP server port
60
+ SERPER_MCP_HOST HTTP server host
61
+ SERPER_MCP_LOG_LEVEL Logging level
62
+
63
+ Examples:
64
+ # STDIO mode (default)
65
+ npm start
66
+
67
+ # HTTP mode
68
+ node dist/index.js --transport http --port 3000
69
+
70
+ # Docker deployment
71
+ docker run -e SERPER_API_KEY=your_key smlabs01/server-serper-search
72
+
73
+ Author: SMJAHID from SMLabs01
74
+ `);
75
+ return;
76
+ }
77
+ }
78
+ return options;
79
+ }
80
+ // Main execution
81
+ async function main() {
82
+ try {
83
+ console.log('🚀 Starting Serper MCP Server v2.0.0 - Enterprise Edition');
84
+ console.log('👨‍💻 Author: SMJAHID from SMLabs01');
85
+ const options = parseArgs();
86
+ const server = new SerperMCPServer_1.SerperMCPServer(options);
87
+ console.log(`🌐 Transport: ${server.config.transport}`);
88
+ if (server.config.transport === 'http') {
89
+ console.log(`📍 Server: http://${server.config.host}:${server.config.port}`);
90
+ }
91
+ await server.run();
92
+ }
93
+ catch (error) {
94
+ console.error('❌ Failed to start server:', error);
95
+ process.exit(1);
96
+ }
97
+ }
98
+ // Start server if this file is run directly
99
+ if (require.main === module) {
100
+ main();
101
+ }
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAEA,8DAA2D;AA0GlD,gGA1GA,iCAAe,OA0GA;AAxGxB;;;;;;;;;;;;GAYG;AAEH,+BAA+B;AAC/B,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,aAAa;gBAChB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,aAAa;gBAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,WAAW;gBACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA+BX,CAAC,CAAC;gBACH,OAAO;QACX,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iBAAiB;AACjB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,iCAAe,CAAC,OAAO,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IAErB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,4CAA4C;AAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC;AACT,CAAC"}