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 +428 -0
- package/dist/api/SerperAPI.d.ts +30 -0
- package/dist/api/SerperAPI.d.ts.map +1 -0
- package/dist/api/SerperAPI.js +106 -0
- package/dist/api/SerperAPI.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/dist/server/SerperMCPServer.d.ts +37 -0
- package/dist/server/SerperMCPServer.d.ts.map +1 -0
- package/dist/server/SerperMCPServer.js +166 -0
- package/dist/server/SerperMCPServer.js.map +1 -0
- package/dist/tools/SearchTools.d.ts +36 -0
- package/dist/tools/SearchTools.d.ts.map +1 -0
- package/dist/tools/SearchTools.js +257 -0
- package/dist/tools/SearchTools.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/ResultFormatter.d.ts +28 -0
- package/dist/utils/ResultFormatter.d.ts.map +1 -0
- package/dist/utils/ResultFormatter.js +131 -0
- package/dist/utils/ResultFormatter.js.map +1 -0
- package/index.js +494 -0
- package/package.json +60 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main Serper MCP Server for Serper MCP Server v2.0.0 - Enterprise Edition
|
|
3
|
+
* Author: SMJAHID from SMLabs01
|
|
4
|
+
*/
|
|
5
|
+
import { ServerConfig } from '../types';
|
|
6
|
+
export declare class SerperMCPServer {
|
|
7
|
+
readonly config: ServerConfig;
|
|
8
|
+
private server;
|
|
9
|
+
private serperAPI;
|
|
10
|
+
constructor(options?: Partial<ServerConfig>);
|
|
11
|
+
/**
|
|
12
|
+
* Setup MCP tool handlers
|
|
13
|
+
*/
|
|
14
|
+
private setupToolHandlers;
|
|
15
|
+
/**
|
|
16
|
+
* Perform search operation
|
|
17
|
+
*/
|
|
18
|
+
private performSearch;
|
|
19
|
+
/**
|
|
20
|
+
* Start the server
|
|
21
|
+
*/
|
|
22
|
+
run(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Get server configuration
|
|
25
|
+
*/
|
|
26
|
+
getConfig(): ServerConfig;
|
|
27
|
+
/**
|
|
28
|
+
* Get server info
|
|
29
|
+
*/
|
|
30
|
+
getInfo(): {
|
|
31
|
+
name: string;
|
|
32
|
+
version: string;
|
|
33
|
+
author: string;
|
|
34
|
+
features: string[];
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=SerperMCPServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SerperMCPServer.d.ts","sourceRoot":"","sources":["../../src/server/SerperMCPServer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,YAAY,EAA6B,MAAM,UAAU,CAAC;AAKnE,qBAAa,eAAe;IAC1B,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;gBAEjB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM;IAgC/C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0CzB;;OAEG;YACW,aAAa;IAyC3B;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB1B;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;CAejF"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Main Serper MCP Server for Serper MCP Server v2.0.0 - Enterprise Edition
|
|
4
|
+
* Author: SMJAHID from SMLabs01
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SerperMCPServer = void 0;
|
|
8
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
9
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
10
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
11
|
+
const SerperAPI_1 = require("../api/SerperAPI");
|
|
12
|
+
const SearchTools_1 = require("../tools/SearchTools");
|
|
13
|
+
const ResultFormatter_1 = require("../utils/ResultFormatter");
|
|
14
|
+
class SerperMCPServer {
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
// Merge provided options with defaults
|
|
17
|
+
this.config = {
|
|
18
|
+
apiKey: options.apiKey || process.env.SERPER_API_KEY || '',
|
|
19
|
+
transport: options.transport || process.env.SERPER_MCP_TRANSPORT || 'stdio',
|
|
20
|
+
port: options.port || parseInt(process.env.SERPER_MCP_PORT || '8080'),
|
|
21
|
+
host: options.host || process.env.SERPER_MCP_HOST || '0.0.0.0',
|
|
22
|
+
logLevel: options.logLevel || process.env.SERPER_MCP_LOG_LEVEL || 'info'
|
|
23
|
+
};
|
|
24
|
+
// Validate required configuration
|
|
25
|
+
if (!this.config.apiKey) {
|
|
26
|
+
throw new Error('SERPER_API_KEY environment variable is required');
|
|
27
|
+
}
|
|
28
|
+
// Initialize components
|
|
29
|
+
this.serperAPI = new SerperAPI_1.SerperAPI(this.config.apiKey);
|
|
30
|
+
this.server = new index_js_1.Server({
|
|
31
|
+
name: 'serper-search-server',
|
|
32
|
+
version: '2.0.0'
|
|
33
|
+
}, {
|
|
34
|
+
capabilities: {
|
|
35
|
+
tools: {}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
this.setupToolHandlers();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Setup MCP tool handlers
|
|
42
|
+
*/
|
|
43
|
+
setupToolHandlers() {
|
|
44
|
+
// List available tools
|
|
45
|
+
this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
46
|
+
return {
|
|
47
|
+
tools: SearchTools_1.SearchTools.getAllTools()
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
// Handle tool calls
|
|
51
|
+
this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
52
|
+
const { name, arguments: args } = request.params;
|
|
53
|
+
try {
|
|
54
|
+
// Validate arguments
|
|
55
|
+
SearchTools_1.SearchTools.validateToolArgs(name, args);
|
|
56
|
+
// Route to appropriate handler
|
|
57
|
+
switch (name) {
|
|
58
|
+
case 'search_web':
|
|
59
|
+
return await this.performSearch(args, 'web');
|
|
60
|
+
case 'search_images':
|
|
61
|
+
return await this.performSearch(args, 'images');
|
|
62
|
+
case 'search_videos':
|
|
63
|
+
return await this.performSearch(args, 'videos');
|
|
64
|
+
case 'search_news':
|
|
65
|
+
return await this.performSearch(args, 'news');
|
|
66
|
+
case 'search_shopping':
|
|
67
|
+
return await this.performSearch(args, 'shopping');
|
|
68
|
+
default:
|
|
69
|
+
throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (error instanceof types_js_1.McpError) {
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
77
|
+
throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, message);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Perform search operation
|
|
83
|
+
*/
|
|
84
|
+
async performSearch(args, searchType) {
|
|
85
|
+
const searchOptions = {
|
|
86
|
+
query: args.query,
|
|
87
|
+
num_results: args.num_results || 10,
|
|
88
|
+
country: args.country || 'US',
|
|
89
|
+
search_lang: args.search_lang || 'en',
|
|
90
|
+
ui_lang: args.ui_lang || 'en-US',
|
|
91
|
+
freshness: args.freshness,
|
|
92
|
+
safesearch: args.safesearch || 'moderate',
|
|
93
|
+
summary: args.summary || false
|
|
94
|
+
};
|
|
95
|
+
try {
|
|
96
|
+
// Perform search via API
|
|
97
|
+
const searchResults = await this.serperAPI.search(searchOptions.query, searchType, searchOptions);
|
|
98
|
+
// Format results
|
|
99
|
+
const formattedResults = ResultFormatter_1.ResultFormatter.formatResults(searchResults, searchOptions.num_results || 10, searchType);
|
|
100
|
+
return {
|
|
101
|
+
content: [
|
|
102
|
+
{
|
|
103
|
+
type: 'text',
|
|
104
|
+
text: formattedResults
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
111
|
+
throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Search failed: ${message}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Start the server
|
|
116
|
+
*/
|
|
117
|
+
async run() {
|
|
118
|
+
try {
|
|
119
|
+
if (this.config.transport === 'http') {
|
|
120
|
+
// HTTP transport using SSE - Note: HTTP transport may need different implementation
|
|
121
|
+
// For now, fallback to STDIO for TypeScript compatibility
|
|
122
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
123
|
+
await this.server.connect(transport);
|
|
124
|
+
console.log(`🚀 Serper MCP Server v2.0.0 running on STDIO (HTTP transport available in JavaScript version)`);
|
|
125
|
+
console.log(`👨💻 Author: SMJAHID from SMLabs01`);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Default STDIO transport
|
|
129
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
130
|
+
await this.server.connect(transport);
|
|
131
|
+
console.log('🚀 Serper MCP Server v2.0.0 running on STDIO');
|
|
132
|
+
console.log('👨💻 Author: SMJAHID from SMLabs01');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.error('❌ Failed to start server:', error);
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get server configuration
|
|
142
|
+
*/
|
|
143
|
+
getConfig() {
|
|
144
|
+
return { ...this.config };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get server info
|
|
148
|
+
*/
|
|
149
|
+
getInfo() {
|
|
150
|
+
return {
|
|
151
|
+
name: 'Serper Search MCP Server',
|
|
152
|
+
version: '2.0.0',
|
|
153
|
+
author: 'SMJAHID from SMLabs01',
|
|
154
|
+
features: [
|
|
155
|
+
'Multi-Type Search (Web, Images, Videos, News, Shopping)',
|
|
156
|
+
'Multi-Transport (STDIO, HTTP/SSE)',
|
|
157
|
+
'Advanced Filtering (Country, Language, Freshness)',
|
|
158
|
+
'AI Summarization',
|
|
159
|
+
'Enterprise Architecture',
|
|
160
|
+
'Docker & NPM Deployment'
|
|
161
|
+
]
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.SerperMCPServer = SerperMCPServer;
|
|
166
|
+
//# sourceMappingURL=SerperMCPServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SerperMCPServer.js","sourceRoot":"","sources":["../../src/server/SerperMCPServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Tools for Serper MCP Server v2.0.0 - Enterprise Edition
|
|
3
|
+
* Author: SMJAHID from SMLabs01
|
|
4
|
+
*/
|
|
5
|
+
import { ToolDefinition } from '../types';
|
|
6
|
+
export declare class SearchTools {
|
|
7
|
+
/**
|
|
8
|
+
* Get all available search tools
|
|
9
|
+
*/
|
|
10
|
+
static getAllTools(): ToolDefinition[];
|
|
11
|
+
/**
|
|
12
|
+
* Web search tool definition
|
|
13
|
+
*/
|
|
14
|
+
static getWebSearchTool(): ToolDefinition;
|
|
15
|
+
/**
|
|
16
|
+
* Image search tool definition
|
|
17
|
+
*/
|
|
18
|
+
static getImageSearchTool(): ToolDefinition;
|
|
19
|
+
/**
|
|
20
|
+
* Video search tool definition
|
|
21
|
+
*/
|
|
22
|
+
static getVideoSearchTool(): ToolDefinition;
|
|
23
|
+
/**
|
|
24
|
+
* News search tool definition
|
|
25
|
+
*/
|
|
26
|
+
static getNewsSearchTool(): ToolDefinition;
|
|
27
|
+
/**
|
|
28
|
+
* Shopping search tool definition
|
|
29
|
+
*/
|
|
30
|
+
static getShoppingSearchTool(): ToolDefinition;
|
|
31
|
+
/**
|
|
32
|
+
* Validate tool arguments
|
|
33
|
+
*/
|
|
34
|
+
static validateToolArgs(toolName: string, args: any): void;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=SearchTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchTools.d.ts","sourceRoot":"","sources":["../../src/tools/SearchTools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAc,MAAM,UAAU,CAAC;AAEtD,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc,EAAE;IAUtC;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,cAAc;IAuDzC;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,cAAc;IAkC3C;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,cAAc;IAkC3C;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,cAAc;IAwC1C;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,cAAc;IAkC9C;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;CA0B3D"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Search Tools for Serper MCP Server v2.0.0 - Enterprise Edition
|
|
4
|
+
* Author: SMJAHID from SMLabs01
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SearchTools = void 0;
|
|
8
|
+
class SearchTools {
|
|
9
|
+
/**
|
|
10
|
+
* Get all available search tools
|
|
11
|
+
*/
|
|
12
|
+
static getAllTools() {
|
|
13
|
+
return [
|
|
14
|
+
this.getWebSearchTool(),
|
|
15
|
+
this.getImageSearchTool(),
|
|
16
|
+
this.getVideoSearchTool(),
|
|
17
|
+
this.getNewsSearchTool(),
|
|
18
|
+
this.getShoppingSearchTool()
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Web search tool definition
|
|
23
|
+
*/
|
|
24
|
+
static getWebSearchTool() {
|
|
25
|
+
return {
|
|
26
|
+
name: 'search_web',
|
|
27
|
+
description: 'Search the web using Serper API (Google search results)',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: {
|
|
31
|
+
query: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'The search query to execute (max 400 chars, 50 words)'
|
|
34
|
+
},
|
|
35
|
+
num_results: {
|
|
36
|
+
type: 'number',
|
|
37
|
+
description: 'Number of results to return (1-20, default: 10)',
|
|
38
|
+
minimum: 1,
|
|
39
|
+
maximum: 20,
|
|
40
|
+
default: 10
|
|
41
|
+
},
|
|
42
|
+
country: {
|
|
43
|
+
type: 'string',
|
|
44
|
+
description: 'Country code (default: "US")',
|
|
45
|
+
default: 'US'
|
|
46
|
+
},
|
|
47
|
+
search_lang: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
description: 'Search language (default: "en")',
|
|
50
|
+
default: 'en'
|
|
51
|
+
},
|
|
52
|
+
ui_lang: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
description: 'UI language (default: "en-US")',
|
|
55
|
+
default: 'en-US'
|
|
56
|
+
},
|
|
57
|
+
freshness: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
description: 'Time filter: "pd" (day), "pw" (week), "pm" (month), "py" (year)',
|
|
60
|
+
enum: ['pd', 'pw', 'pm', 'py']
|
|
61
|
+
},
|
|
62
|
+
safesearch: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Content filtering',
|
|
65
|
+
enum: ['off', 'moderate', 'strict'],
|
|
66
|
+
default: 'moderate'
|
|
67
|
+
},
|
|
68
|
+
summary: {
|
|
69
|
+
type: 'boolean',
|
|
70
|
+
description: 'Enable AI summarization (default: false)',
|
|
71
|
+
default: false
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
required: ['query']
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Image search tool definition
|
|
80
|
+
*/
|
|
81
|
+
static getImageSearchTool() {
|
|
82
|
+
return {
|
|
83
|
+
name: 'search_images',
|
|
84
|
+
description: 'Search for images using Serper API',
|
|
85
|
+
inputSchema: {
|
|
86
|
+
type: 'object',
|
|
87
|
+
properties: {
|
|
88
|
+
query: {
|
|
89
|
+
type: 'string',
|
|
90
|
+
description: 'The image search query'
|
|
91
|
+
},
|
|
92
|
+
num_results: {
|
|
93
|
+
type: 'number',
|
|
94
|
+
description: 'Number of results to return (default: 10)',
|
|
95
|
+
minimum: 1,
|
|
96
|
+
maximum: 20,
|
|
97
|
+
default: 10
|
|
98
|
+
},
|
|
99
|
+
country: {
|
|
100
|
+
type: 'string',
|
|
101
|
+
description: 'Country code (default: "US")',
|
|
102
|
+
default: 'US'
|
|
103
|
+
},
|
|
104
|
+
search_lang: {
|
|
105
|
+
type: 'string',
|
|
106
|
+
description: 'Search language (default: "en")',
|
|
107
|
+
default: 'en'
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
required: ['query']
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Video search tool definition
|
|
116
|
+
*/
|
|
117
|
+
static getVideoSearchTool() {
|
|
118
|
+
return {
|
|
119
|
+
name: 'search_videos',
|
|
120
|
+
description: 'Search for videos using Serper API',
|
|
121
|
+
inputSchema: {
|
|
122
|
+
type: 'object',
|
|
123
|
+
properties: {
|
|
124
|
+
query: {
|
|
125
|
+
type: 'string',
|
|
126
|
+
description: 'The video search query'
|
|
127
|
+
},
|
|
128
|
+
num_results: {
|
|
129
|
+
type: 'number',
|
|
130
|
+
description: 'Number of results to return (default: 10)',
|
|
131
|
+
minimum: 1,
|
|
132
|
+
maximum: 20,
|
|
133
|
+
default: 10
|
|
134
|
+
},
|
|
135
|
+
country: {
|
|
136
|
+
type: 'string',
|
|
137
|
+
description: 'Country code (default: "US")',
|
|
138
|
+
default: 'US'
|
|
139
|
+
},
|
|
140
|
+
search_lang: {
|
|
141
|
+
type: 'string',
|
|
142
|
+
description: 'Search language (default: "en")',
|
|
143
|
+
default: 'en'
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
required: ['query']
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* News search tool definition
|
|
152
|
+
*/
|
|
153
|
+
static getNewsSearchTool() {
|
|
154
|
+
return {
|
|
155
|
+
name: 'search_news',
|
|
156
|
+
description: 'Search for news articles using Serper API',
|
|
157
|
+
inputSchema: {
|
|
158
|
+
type: 'object',
|
|
159
|
+
properties: {
|
|
160
|
+
query: {
|
|
161
|
+
type: 'string',
|
|
162
|
+
description: 'The news search query'
|
|
163
|
+
},
|
|
164
|
+
num_results: {
|
|
165
|
+
type: 'number',
|
|
166
|
+
description: 'Number of results to return (default: 10)',
|
|
167
|
+
minimum: 1,
|
|
168
|
+
maximum: 20,
|
|
169
|
+
default: 10
|
|
170
|
+
},
|
|
171
|
+
country: {
|
|
172
|
+
type: 'string',
|
|
173
|
+
description: 'Country code (default: "US")',
|
|
174
|
+
default: 'US'
|
|
175
|
+
},
|
|
176
|
+
search_lang: {
|
|
177
|
+
type: 'string',
|
|
178
|
+
description: 'Search language (default: "en")',
|
|
179
|
+
default: 'en'
|
|
180
|
+
},
|
|
181
|
+
freshness: {
|
|
182
|
+
type: 'string',
|
|
183
|
+
description: 'Time filter (default: "pd" for last 24 hours)',
|
|
184
|
+
enum: ['pd', 'pw', 'pm', 'py'],
|
|
185
|
+
default: 'pd'
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
required: ['query']
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Shopping search tool definition
|
|
194
|
+
*/
|
|
195
|
+
static getShoppingSearchTool() {
|
|
196
|
+
return {
|
|
197
|
+
name: 'search_shopping',
|
|
198
|
+
description: 'Search for products and shopping results using Serper API',
|
|
199
|
+
inputSchema: {
|
|
200
|
+
type: 'object',
|
|
201
|
+
properties: {
|
|
202
|
+
query: {
|
|
203
|
+
type: 'string',
|
|
204
|
+
description: 'The shopping search query'
|
|
205
|
+
},
|
|
206
|
+
num_results: {
|
|
207
|
+
type: 'number',
|
|
208
|
+
description: 'Number of results to return (default: 10)',
|
|
209
|
+
minimum: 1,
|
|
210
|
+
maximum: 20,
|
|
211
|
+
default: 10
|
|
212
|
+
},
|
|
213
|
+
country: {
|
|
214
|
+
type: 'string',
|
|
215
|
+
description: 'Country code (default: "US")',
|
|
216
|
+
default: 'US'
|
|
217
|
+
},
|
|
218
|
+
search_lang: {
|
|
219
|
+
type: 'string',
|
|
220
|
+
description: 'Search language (default: "en")',
|
|
221
|
+
default: 'en'
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
required: ['query']
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Validate tool arguments
|
|
230
|
+
*/
|
|
231
|
+
static validateToolArgs(toolName, args) {
|
|
232
|
+
const tool = this.getAllTools().find(t => t.name === toolName);
|
|
233
|
+
if (!tool) {
|
|
234
|
+
throw new Error(`Unknown tool: ${toolName}`);
|
|
235
|
+
}
|
|
236
|
+
// Check required parameters
|
|
237
|
+
for (const required of tool.inputSchema.required) {
|
|
238
|
+
if (!(required in args)) {
|
|
239
|
+
throw new Error(`Missing required parameter: ${required}`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Validate query length
|
|
243
|
+
if (args.query) {
|
|
244
|
+
if (typeof args.query !== 'string') {
|
|
245
|
+
throw new Error('Query must be a string');
|
|
246
|
+
}
|
|
247
|
+
if (args.query.length > 400) {
|
|
248
|
+
throw new Error('Query too long (max 400 characters)');
|
|
249
|
+
}
|
|
250
|
+
if (args.query.split(' ').length > 50) {
|
|
251
|
+
throw new Error('Query too long (max 50 words)');
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
exports.SearchTools = SearchTools;
|
|
257
|
+
//# sourceMappingURL=SearchTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchTools.js","sourceRoot":"","sources":["../../src/tools/SearchTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Serper MCP Server v2.0.0 - Enterprise Edition
|
|
3
|
+
* Author: SMJAHID from SMLabs01
|
|
4
|
+
*/
|
|
5
|
+
export interface SearchOptions {
|
|
6
|
+
query: string;
|
|
7
|
+
num_results?: number;
|
|
8
|
+
country?: string;
|
|
9
|
+
search_lang?: string;
|
|
10
|
+
ui_lang?: string;
|
|
11
|
+
freshness?: 'pd' | 'pw' | 'pm' | 'py';
|
|
12
|
+
safesearch?: 'off' | 'moderate' | 'strict';
|
|
13
|
+
summary?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface SearchResult {
|
|
16
|
+
title: string;
|
|
17
|
+
link: string;
|
|
18
|
+
snippet?: string;
|
|
19
|
+
imageUrl?: string;
|
|
20
|
+
source?: string;
|
|
21
|
+
channel?: string;
|
|
22
|
+
duration?: string;
|
|
23
|
+
date?: string;
|
|
24
|
+
price?: string;
|
|
25
|
+
rating?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface SerperAPIResponse {
|
|
28
|
+
searchParameters?: {
|
|
29
|
+
q: string;
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
};
|
|
32
|
+
organic?: SearchResult[];
|
|
33
|
+
images?: SearchResult[];
|
|
34
|
+
videos?: SearchResult[];
|
|
35
|
+
news?: SearchResult[];
|
|
36
|
+
shopping?: SearchResult[];
|
|
37
|
+
[key: string]: any;
|
|
38
|
+
}
|
|
39
|
+
export interface ServerConfig {
|
|
40
|
+
apiKey: string;
|
|
41
|
+
transport: 'stdio' | 'http';
|
|
42
|
+
port: number;
|
|
43
|
+
host: string;
|
|
44
|
+
logLevel: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ToolDefinition {
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
inputSchema: {
|
|
50
|
+
type: 'object';
|
|
51
|
+
properties: Record<string, any>;
|
|
52
|
+
required: string[];
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export type SearchType = 'web' | 'images' | 'videos' | 'news' | 'shopping';
|
|
56
|
+
export interface Transport {
|
|
57
|
+
run(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC,UAAU,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE;QACjB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3E,MAAM,WAAW,SAAS;IACxB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result Formatter for Serper MCP Server v2.0.0 - Enterprise Edition
|
|
3
|
+
* Author: SMJAHID from SMLabs01
|
|
4
|
+
*/
|
|
5
|
+
import { SerperAPIResponse, SearchType } from '../types';
|
|
6
|
+
export declare class ResultFormatter {
|
|
7
|
+
/**
|
|
8
|
+
* Format search results for display
|
|
9
|
+
*/
|
|
10
|
+
static formatResults(results: SerperAPIResponse, maxResults: number, searchType: SearchType): string;
|
|
11
|
+
/**
|
|
12
|
+
* Format error message
|
|
13
|
+
*/
|
|
14
|
+
static formatError(error: Error): string;
|
|
15
|
+
/**
|
|
16
|
+
* Format validation error
|
|
17
|
+
*/
|
|
18
|
+
static formatValidationError(message: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Format server info
|
|
21
|
+
*/
|
|
22
|
+
static formatServerInfo(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Capitalize first letter of a string
|
|
25
|
+
*/
|
|
26
|
+
private static capitalizeFirst;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ResultFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultFormatter.d.ts","sourceRoot":"","sources":["../../src/utils/ResultFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAgB,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvE,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM;IAqGpG;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAIxC;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIrD;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM;IAUjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAG/B"}
|