scrapeless-mcp-server 0.4.0 → 0.4.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 +34 -8
- package/build/tools/deepserp/googleFlights.js +133 -112
- package/build/tools/deepserp/googleSearch.js +218 -212
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|

|
|
2
2
|
|
|
3
|
-
# Scrapeless
|
|
3
|
+
# Scrapeless MCP Server
|
|
4
4
|
|
|
5
5
|
Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. MCP provides a standardized way to connect LLM with the required context, helping you efficiently enhance chat interfaces, build AI-driven IDEs, or create custom AI workflows.
|
|
6
6
|
|
|
@@ -74,7 +74,7 @@ This project provides several MCP servers that enable AI assistants like Claude
|
|
|
74
74
|
- `scrape_screenshot`
|
|
75
75
|
Capture a high-quality screenshot of any webpage.
|
|
76
76
|
|
|
77
|
-
###
|
|
77
|
+
### Deep SerpAPI Tools
|
|
78
78
|
|
|
79
79
|
- `google_search`
|
|
80
80
|
universal information search engine.retrieves any data information.explanatory queries (why, how).comparative analysis requests.
|
|
@@ -102,7 +102,7 @@ This project provides several MCP servers that enable AI assistants like Claude
|
|
|
102
102
|
```json
|
|
103
103
|
{
|
|
104
104
|
"mcpServers": {
|
|
105
|
-
"
|
|
105
|
+
"Scrapeless MCP Server": {
|
|
106
106
|
"command": "npx",
|
|
107
107
|
"args": ["-y", "scrapeless-mcp-server"],
|
|
108
108
|
"env": {
|
|
@@ -126,7 +126,7 @@ npx scrapeless-mcp-server --mode=streamable_http --SCRAPELESS_KEY=YOUR_SCRAPELES
|
|
|
126
126
|
```json
|
|
127
127
|
{
|
|
128
128
|
"mcpServers": {
|
|
129
|
-
"
|
|
129
|
+
"Scrapeless MCP Server": {
|
|
130
130
|
"type": "streamable-http",
|
|
131
131
|
"url": "http://127.0.0.1:9593/mcp",
|
|
132
132
|
"disabled": false
|
|
@@ -139,11 +139,37 @@ npx scrapeless-mcp-server --mode=streamable_http --SCRAPELESS_KEY=YOUR_SCRAPELES
|
|
|
139
139
|
|
|
140
140
|
Here are some examples of how to use these servers with Claude Desktop:
|
|
141
141
|
|
|
142
|
-
###
|
|
142
|
+
### browser
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
Use a browser to visit chatgpt.com, search for "What's the weather like today?", and summarize the results.
|
|
145
|
+
|
|
146
|
+
### scrape_html
|
|
147
|
+
|
|
148
|
+
Scrape the html content of scrapeless.com page
|
|
149
|
+
|
|
150
|
+
### scrape_markdown
|
|
151
|
+
|
|
152
|
+
Scrape the markdown content of scrapeless.com page
|
|
153
|
+
|
|
154
|
+
### scrape_screenshot
|
|
155
|
+
|
|
156
|
+
Get screenshots of scrapeless.com
|
|
157
|
+
|
|
158
|
+
### google_flights
|
|
159
|
+
|
|
160
|
+
Please help me with my flight ticket from Chicago to New York on November 20, 2025
|
|
161
|
+
|
|
162
|
+
### google_scholar
|
|
163
|
+
|
|
164
|
+
Find papers by "Yoshua Bengio" on deep learning
|
|
165
|
+
|
|
166
|
+
### google_search
|
|
167
|
+
|
|
168
|
+
Search scrapeless by google search
|
|
169
|
+
|
|
170
|
+
### google_trends
|
|
171
|
+
|
|
172
|
+
Find the search interest for "AI" over the last year
|
|
147
173
|
|
|
148
174
|
## Installation
|
|
149
175
|
|
|
@@ -1,162 +1,183 @@
|
|
|
1
1
|
import { defineTool, wrapMcpResponse } from "../utils.js";
|
|
2
2
|
import z from "zod";
|
|
3
3
|
export const googleFlights = defineTool({
|
|
4
|
-
name:
|
|
4
|
+
name: "google_flights",
|
|
5
5
|
description: `Exclusive Flight Information Query Tool.
|
|
6
6
|
Activated only when requests include departure city, arrival city, and specific date/date range.
|
|
7
7
|
Valid:Check flights from Beijing to Shanghai on July 15.
|
|
8
|
-
Invalid:Compare airline service quality (use
|
|
8
|
+
Invalid:Compare airline service quality (use google_search instead)`,
|
|
9
9
|
inputSchema: {
|
|
10
10
|
gl: z
|
|
11
11
|
.string()
|
|
12
12
|
.describe("Parameter defines the country to use for the Google search. It's a two-letter country code. (e.g., us for the United States, uk for United Kingdom, or fr for France).")
|
|
13
|
-
.default(
|
|
13
|
+
.default("us"),
|
|
14
14
|
hl: z
|
|
15
15
|
.string()
|
|
16
16
|
.describe("Parameter defines the language to use for the Google search. It's a two-letter language code. (e.g., en for English, es for Spanish, or fr for French).")
|
|
17
|
-
.default(
|
|
17
|
+
.default("en"),
|
|
18
18
|
currency: z
|
|
19
19
|
.union([
|
|
20
|
-
z.literal(
|
|
21
|
-
z.literal(
|
|
22
|
-
z.literal(
|
|
23
|
-
z.literal(
|
|
24
|
-
z.literal(
|
|
25
|
-
z.literal(
|
|
26
|
-
z.literal(
|
|
27
|
-
z.literal(
|
|
28
|
-
z.literal(
|
|
29
|
-
z.literal(
|
|
30
|
-
z.literal(
|
|
31
|
-
z.literal(
|
|
32
|
-
z.literal(
|
|
33
|
-
z.literal(
|
|
34
|
-
z.literal(
|
|
35
|
-
z.literal(
|
|
36
|
-
z.literal(
|
|
37
|
-
z.literal(
|
|
38
|
-
z.literal(
|
|
39
|
-
z.literal(
|
|
40
|
-
z.literal(
|
|
41
|
-
z.literal(
|
|
42
|
-
z.literal(
|
|
43
|
-
z.literal(
|
|
44
|
-
z.literal(
|
|
45
|
-
z.literal(
|
|
46
|
-
z.literal(
|
|
47
|
-
z.literal(
|
|
48
|
-
z.literal(
|
|
49
|
-
z.literal(
|
|
50
|
-
z.literal(
|
|
51
|
-
z.literal(
|
|
52
|
-
z.literal(
|
|
53
|
-
z.literal(
|
|
54
|
-
z.literal(
|
|
55
|
-
z.literal(
|
|
56
|
-
z.literal(
|
|
57
|
-
z.literal(
|
|
58
|
-
z.literal(
|
|
59
|
-
z.literal(
|
|
60
|
-
z.literal(
|
|
61
|
-
z.literal(
|
|
62
|
-
z.literal(
|
|
63
|
-
z.literal(
|
|
64
|
-
z.literal(
|
|
65
|
-
z.literal(
|
|
66
|
-
z.literal(
|
|
67
|
-
z.literal(
|
|
68
|
-
z.literal(
|
|
69
|
-
z.literal(
|
|
70
|
-
z.literal(
|
|
71
|
-
z.literal(
|
|
72
|
-
z.literal(
|
|
73
|
-
z.literal(
|
|
74
|
-
z.literal(
|
|
75
|
-
z.literal(
|
|
76
|
-
z.literal(
|
|
77
|
-
z.literal(
|
|
78
|
-
z.literal(
|
|
79
|
-
z.literal(
|
|
80
|
-
z.literal(
|
|
81
|
-
z.literal(
|
|
82
|
-
z.literal(
|
|
83
|
-
z.literal(
|
|
84
|
-
z.literal(
|
|
85
|
-
z.literal(
|
|
86
|
-
z.literal(
|
|
87
|
-
z.literal(
|
|
88
|
-
z.literal(
|
|
89
|
-
z.literal(
|
|
90
|
-
z.literal(
|
|
20
|
+
z.literal("ALL"),
|
|
21
|
+
z.literal("DZD"),
|
|
22
|
+
z.literal("ARS"),
|
|
23
|
+
z.literal("AMD"),
|
|
24
|
+
z.literal("AWG"),
|
|
25
|
+
z.literal("AUD"),
|
|
26
|
+
z.literal("AZN"),
|
|
27
|
+
z.literal("BSD"),
|
|
28
|
+
z.literal("BHD"),
|
|
29
|
+
z.literal("BYN"),
|
|
30
|
+
z.literal("BMD"),
|
|
31
|
+
z.literal("BAM"),
|
|
32
|
+
z.literal("BRL"),
|
|
33
|
+
z.literal("GBP"),
|
|
34
|
+
z.literal("BGN"),
|
|
35
|
+
z.literal("XPF"),
|
|
36
|
+
z.literal("CAD"),
|
|
37
|
+
z.literal("CLP"),
|
|
38
|
+
z.literal("CNY"),
|
|
39
|
+
z.literal("COP"),
|
|
40
|
+
z.literal("CRC"),
|
|
41
|
+
z.literal("CUP"),
|
|
42
|
+
z.literal("CZK"),
|
|
43
|
+
z.literal("DKK"),
|
|
44
|
+
z.literal("DOP"),
|
|
45
|
+
z.literal("EGP"),
|
|
46
|
+
z.literal("EUR"),
|
|
47
|
+
z.literal("GEL"),
|
|
48
|
+
z.literal("HKD"),
|
|
49
|
+
z.literal("HUF"),
|
|
50
|
+
z.literal("ISK"),
|
|
51
|
+
z.literal("INR"),
|
|
52
|
+
z.literal("IDR"),
|
|
53
|
+
z.literal("IRR"),
|
|
54
|
+
z.literal("ILS"),
|
|
55
|
+
z.literal("JMD"),
|
|
56
|
+
z.literal("JPY"),
|
|
57
|
+
z.literal("JOD"),
|
|
58
|
+
z.literal("KZT"),
|
|
59
|
+
z.literal("KWD"),
|
|
60
|
+
z.literal("LBP"),
|
|
61
|
+
z.literal("MKD"),
|
|
62
|
+
z.literal("MYR"),
|
|
63
|
+
z.literal("MXN"),
|
|
64
|
+
z.literal("MDL"),
|
|
65
|
+
z.literal("MAD"),
|
|
66
|
+
z.literal("TWD"),
|
|
67
|
+
z.literal("NZD"),
|
|
68
|
+
z.literal("NOK"),
|
|
69
|
+
z.literal("OMR"),
|
|
70
|
+
z.literal("PKR"),
|
|
71
|
+
z.literal("PAB"),
|
|
72
|
+
z.literal("PEN"),
|
|
73
|
+
z.literal("PHP"),
|
|
74
|
+
z.literal("PLN"),
|
|
75
|
+
z.literal("QAR"),
|
|
76
|
+
z.literal("RON"),
|
|
77
|
+
z.literal("RUB"),
|
|
78
|
+
z.literal("SAR"),
|
|
79
|
+
z.literal("RSD"),
|
|
80
|
+
z.literal("SGD"),
|
|
81
|
+
z.literal("ZAR"),
|
|
82
|
+
z.literal("KRW"),
|
|
83
|
+
z.literal("SEK"),
|
|
84
|
+
z.literal("CHF"),
|
|
85
|
+
z.literal("THB"),
|
|
86
|
+
z.literal("TRY"),
|
|
87
|
+
z.literal("USD"),
|
|
88
|
+
z.literal("UAH"),
|
|
89
|
+
z.literal("AED"),
|
|
90
|
+
z.literal("VND"),
|
|
91
91
|
])
|
|
92
|
-
.describe(
|
|
92
|
+
.describe("Parameter defines the currency of the returned prices. Default to USD.")
|
|
93
93
|
.optional(),
|
|
94
94
|
departure_id: z
|
|
95
95
|
.string()
|
|
96
|
-
.describe(
|
|
97
|
-
.default(
|
|
96
|
+
.describe("Departure airport code or location kgmid. An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA. For example, CDG is Paris Charles de Gaulle Airport, /m/0vzm is the location kgmid for Austin.You can specify multiple departure airports by separating them with a comma. For example, CDG,ORY,/m/04jpl.")
|
|
97
|
+
.default("ORY"),
|
|
98
98
|
arrival_id: z
|
|
99
99
|
.string()
|
|
100
|
-
.describe(
|
|
101
|
-
.default(
|
|
100
|
+
.describe("An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA.")
|
|
101
|
+
.default("BCN"),
|
|
102
102
|
data_type: z
|
|
103
103
|
.number()
|
|
104
|
-
.describe(
|
|
104
|
+
.describe("Parameter defines the type of the flights.\nAvailable options:\n1 - Round trip (default)\n2 - One way\n3 - Multi-city\n\nWhen this parameter is set to 3, use multi_city_json to set the flight information.\n\nTo obtain the returning flight information for Round Trip (1), you need to make another request using a departure_token.")
|
|
105
105
|
.default(1),
|
|
106
106
|
travel_class: z
|
|
107
107
|
.union([
|
|
108
|
-
z.literal(1).describe(
|
|
109
|
-
z.literal(2).describe(
|
|
110
|
-
z.literal(3).describe(
|
|
111
|
-
z.literal(4).describe(
|
|
108
|
+
z.literal(1).describe("Economy(default) - 1"),
|
|
109
|
+
z.literal(2).describe("Premium economy - 2"),
|
|
110
|
+
z.literal(3).describe("Business - 3"),
|
|
111
|
+
z.literal(4).describe("First - 4"),
|
|
112
112
|
])
|
|
113
|
-
.describe(
|
|
113
|
+
.describe("Parameter defines the travel class.\nAvailable options:\n1 - Economy (default)\n2 - Premium economy\n3 - Business\n4 - First")
|
|
114
114
|
.default(1),
|
|
115
115
|
multi_city_json: z
|
|
116
116
|
.any()
|
|
117
117
|
.describe("Parameter defines the flight information for multi-city flights. It's a JSON string containing multiple flight information objects. Each object should contain the following fields: departure_id, arrival_id, date, times (optional). See schema for details.")
|
|
118
118
|
.optional(),
|
|
119
|
-
adults: z
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
adults: z
|
|
120
|
+
.number()
|
|
121
|
+
.describe("Parameter defines the number of adults. Default to 1.")
|
|
122
|
+
.default(1),
|
|
123
|
+
children: z
|
|
124
|
+
.number()
|
|
125
|
+
.describe("Parameter defines the number of children. Default to 0.")
|
|
126
|
+
.default(0),
|
|
127
|
+
infants_in_seat: z
|
|
128
|
+
.number()
|
|
129
|
+
.describe("Parameter defines the number of infants in seat. Default to 0.")
|
|
130
|
+
.default(0),
|
|
131
|
+
infants_on_lap: z
|
|
132
|
+
.number()
|
|
133
|
+
.describe("Parameter defines the number of infants on lap. Default to 0.")
|
|
134
|
+
.default(0),
|
|
123
135
|
outbound_date: z
|
|
124
136
|
.string()
|
|
125
|
-
.describe(
|
|
126
|
-
.default(
|
|
137
|
+
.describe("Parameter defines the outbound date. The format is YYYY-MM-DD. e.g. 2025-03-09")
|
|
138
|
+
.default("next_1d"),
|
|
127
139
|
return_date: z
|
|
128
140
|
.string()
|
|
129
|
-
.describe(
|
|
130
|
-
.default(
|
|
141
|
+
.describe("Parameter defines the return date. The format is YYYY-MM-DD. e.g. 2025-03-15\n\nParameter is required if type parameter is set to: 1 (Round trip)")
|
|
142
|
+
.default("next_1w"),
|
|
131
143
|
stops: z
|
|
132
144
|
.union([
|
|
133
|
-
z.literal(0).describe(
|
|
134
|
-
z.literal(1).describe(
|
|
135
|
-
z.literal(2).describe(
|
|
136
|
-
z.literal(3).describe(
|
|
145
|
+
z.literal(0).describe("Any number of stops (default) - 0"),
|
|
146
|
+
z.literal(1).describe("Nonstop only - 1"),
|
|
147
|
+
z.literal(2).describe("1 stop or fewer - 2"),
|
|
148
|
+
z.literal(3).describe("2 stops or fewer - 3"),
|
|
137
149
|
])
|
|
138
|
-
.describe(
|
|
150
|
+
.describe("Parameter defines the number of stops during the flight.\nAvailable options:\n0 - Any number of stops (default)\n1 - Nonstop only\n2 - 1 stop or fewer\n3 - 2 stops or fewer")
|
|
139
151
|
.default(0),
|
|
140
152
|
include_airlines: z
|
|
141
153
|
.string()
|
|
142
154
|
.describe("Parameter defines the airline codes to be included. Split multiple airlines with comma. It can't be used together with exclude_airlines. Each airline code should be a 2-character IATA code consisting of either two uppercase letters or one uppercase letter and one digit. Alliances can also be included. See schema for details.")
|
|
143
155
|
.optional()
|
|
144
156
|
.optional(),
|
|
145
|
-
bags: z
|
|
146
|
-
|
|
157
|
+
bags: z
|
|
158
|
+
.number()
|
|
159
|
+
.describe("Parameter defines the number of carry-on bags. Default to 0.")
|
|
160
|
+
.default(0),
|
|
161
|
+
max_price: z
|
|
162
|
+
.number()
|
|
163
|
+
.describe("Parameter defines the maximum ticket price. Default to unlimited.")
|
|
164
|
+
.default(0),
|
|
147
165
|
outbound_times: z
|
|
148
166
|
.string()
|
|
149
|
-
.describe(
|
|
167
|
+
.describe("Parameter defines the outbound times range. See schema for details.")
|
|
150
168
|
.optional()
|
|
151
169
|
.optional(),
|
|
152
170
|
return_times: z
|
|
153
171
|
.string()
|
|
154
|
-
.describe(
|
|
172
|
+
.describe("Parameter defines the return times range. See schema for details.")
|
|
155
173
|
.optional()
|
|
156
174
|
.optional(),
|
|
157
175
|
emissions: z
|
|
158
|
-
.union([
|
|
159
|
-
.describe(
|
|
176
|
+
.union([
|
|
177
|
+
z.literal(0).describe("reset"),
|
|
178
|
+
z.literal(1).describe("Less emissions only - ·"),
|
|
179
|
+
])
|
|
180
|
+
.describe("Parameter defines the emission level of the flight.\nAvailable options:\n1 - Less emissions only")
|
|
160
181
|
.default(0),
|
|
161
182
|
layover_duration: z
|
|
162
183
|
.string()
|
|
@@ -165,24 +186,24 @@ export const googleFlights = defineTool({
|
|
|
165
186
|
.optional(),
|
|
166
187
|
exclude_conns: z
|
|
167
188
|
.string()
|
|
168
|
-
.describe(
|
|
189
|
+
.describe("Parameter defines the connecting airport codes to be excluded. See schema for details.")
|
|
169
190
|
.optional()
|
|
170
191
|
.optional(),
|
|
171
192
|
max_duration: z
|
|
172
193
|
.number()
|
|
173
|
-
.describe(
|
|
194
|
+
.describe("Parameter defines the maximum flight duration, in minutes. For example, specify 1500 for 25 hours.")
|
|
174
195
|
.default(0)
|
|
175
196
|
.optional(),
|
|
176
197
|
departure_token: z
|
|
177
198
|
.string()
|
|
178
|
-
.describe(
|
|
179
|
-
.optional()
|
|
199
|
+
.describe("Parameter is used to select the flight and get returning flights (for Round trip) or flights for the next leg of itinerary (for Multi-city). Find this token in the departure flight results.")
|
|
180
200
|
.optional()
|
|
201
|
+
.optional(),
|
|
181
202
|
},
|
|
182
203
|
handle: async (params, client) => {
|
|
183
204
|
return wrapMcpResponse(() => client.deepserp.scrape({
|
|
184
|
-
actor:
|
|
185
|
-
input: params
|
|
205
|
+
actor: "scraper.google.flights",
|
|
206
|
+
input: params,
|
|
186
207
|
}));
|
|
187
|
-
}
|
|
208
|
+
},
|
|
188
209
|
});
|
|
@@ -1,269 +1,275 @@
|
|
|
1
1
|
import { defineTool, wrapMcpResponse } from "../utils.js";
|
|
2
2
|
import z from "zod";
|
|
3
3
|
export const googleSearch = defineTool({
|
|
4
|
-
name:
|
|
5
|
-
description:
|
|
4
|
+
name: "google_search",
|
|
5
|
+
description: "Universal Information Search Engine.Retrieves any data information; Explanatory queries (why, how).Comparative analysis requests",
|
|
6
6
|
inputSchema: {
|
|
7
7
|
q: z
|
|
8
8
|
.string()
|
|
9
|
-
.describe(
|
|
10
|
-
.default(
|
|
9
|
+
.describe("Parameter defines the query you want to search. You can use anything that you would use in a regular Google search. e.g. inurl:, site:, intitle:. We also support advanced search query parameters such as as_dt and as_eq.")
|
|
10
|
+
.default("Top news headlines"),
|
|
11
11
|
hl: z
|
|
12
12
|
.string()
|
|
13
13
|
.describe("Parameter defines the language to use for the Google search. It's a two-letter language code. (e.g., en for English, es for Spanish, or fr for French).")
|
|
14
|
-
.default(
|
|
14
|
+
.default("en"),
|
|
15
15
|
gl: z
|
|
16
16
|
.string()
|
|
17
17
|
.describe("Parameter defines the country to use for the Google search. It's a two-letter country code. (e.g., us for the United States, uk for United Kingdom, or fr for France).")
|
|
18
|
-
.default(
|
|
18
|
+
.default("us"),
|
|
19
19
|
google_domain: z
|
|
20
20
|
.union([
|
|
21
|
-
z.literal(
|
|
22
|
-
z.literal(
|
|
23
|
-
z.literal(
|
|
24
|
-
z.literal(
|
|
25
|
-
z.literal(
|
|
26
|
-
z.literal(
|
|
27
|
-
z.literal(
|
|
28
|
-
z.literal(
|
|
29
|
-
z.literal(
|
|
30
|
-
z.literal(
|
|
31
|
-
z.literal(
|
|
32
|
-
z.literal(
|
|
33
|
-
z.literal(
|
|
34
|
-
z.literal(
|
|
35
|
-
z.literal(
|
|
36
|
-
z.literal(
|
|
37
|
-
z.literal(
|
|
38
|
-
z.literal(
|
|
39
|
-
z.literal(
|
|
40
|
-
z.literal(
|
|
41
|
-
z.literal(
|
|
42
|
-
z.literal(
|
|
43
|
-
z.literal(
|
|
44
|
-
z.literal(
|
|
45
|
-
z.literal(
|
|
46
|
-
z.literal(
|
|
47
|
-
z.literal(
|
|
48
|
-
z.literal(
|
|
49
|
-
z.literal(
|
|
50
|
-
z.literal(
|
|
51
|
-
z.literal(
|
|
52
|
-
z.literal(
|
|
53
|
-
z.literal(
|
|
54
|
-
z.literal(
|
|
55
|
-
z.literal(
|
|
56
|
-
z.literal(
|
|
57
|
-
z.literal(
|
|
58
|
-
z.literal(
|
|
59
|
-
z.literal(
|
|
60
|
-
z.literal(
|
|
61
|
-
z.literal(
|
|
62
|
-
z.literal(
|
|
63
|
-
z.literal(
|
|
64
|
-
z.literal(
|
|
65
|
-
z.literal(
|
|
66
|
-
z.literal(
|
|
67
|
-
z.literal(
|
|
68
|
-
z.literal(
|
|
69
|
-
z.literal(
|
|
70
|
-
z.literal(
|
|
71
|
-
z.literal(
|
|
72
|
-
z.literal(
|
|
73
|
-
z.literal(
|
|
74
|
-
z.literal(
|
|
75
|
-
z.literal(
|
|
76
|
-
z.literal(
|
|
77
|
-
z.literal(
|
|
78
|
-
z.literal(
|
|
79
|
-
z.literal(
|
|
80
|
-
z.literal(
|
|
81
|
-
z.literal(
|
|
82
|
-
z.literal(
|
|
83
|
-
z.literal(
|
|
84
|
-
z.literal(
|
|
85
|
-
z.literal(
|
|
86
|
-
z.literal(
|
|
87
|
-
z.literal(
|
|
88
|
-
z.literal(
|
|
89
|
-
z.literal(
|
|
90
|
-
z.literal(
|
|
91
|
-
z.literal(
|
|
92
|
-
z.literal(
|
|
93
|
-
z.literal(
|
|
94
|
-
z.literal(
|
|
95
|
-
z.literal(
|
|
96
|
-
z.literal(
|
|
97
|
-
z.literal(
|
|
98
|
-
z.literal(
|
|
99
|
-
z.literal(
|
|
100
|
-
z.literal(
|
|
101
|
-
z.literal(
|
|
102
|
-
z.literal(
|
|
103
|
-
z.literal(
|
|
104
|
-
z.literal(
|
|
105
|
-
z.literal(
|
|
106
|
-
z.literal(
|
|
107
|
-
z.literal(
|
|
108
|
-
z.literal(
|
|
109
|
-
z.literal(
|
|
110
|
-
z.literal(
|
|
111
|
-
z.literal(
|
|
112
|
-
z.literal(
|
|
113
|
-
z.literal(
|
|
114
|
-
z.literal(
|
|
115
|
-
z.literal(
|
|
116
|
-
z.literal(
|
|
117
|
-
z.literal(
|
|
118
|
-
z.literal(
|
|
119
|
-
z.literal(
|
|
120
|
-
z.literal(
|
|
121
|
-
z.literal(
|
|
122
|
-
z.literal(
|
|
123
|
-
z.literal(
|
|
124
|
-
z.literal(
|
|
125
|
-
z.literal(
|
|
126
|
-
z.literal(
|
|
127
|
-
z.literal(
|
|
128
|
-
z.literal(
|
|
129
|
-
z.literal(
|
|
130
|
-
z.literal(
|
|
131
|
-
z.literal(
|
|
132
|
-
z.literal(
|
|
133
|
-
z.literal(
|
|
134
|
-
z.literal(
|
|
135
|
-
z.literal(
|
|
136
|
-
z.literal(
|
|
137
|
-
z.literal(
|
|
138
|
-
z.literal(
|
|
139
|
-
z.literal(
|
|
140
|
-
z.literal(
|
|
141
|
-
z.literal(
|
|
142
|
-
z.literal(
|
|
143
|
-
z.literal(
|
|
144
|
-
z.literal(
|
|
145
|
-
z.literal(
|
|
146
|
-
z.literal(
|
|
147
|
-
z.literal(
|
|
148
|
-
z.literal(
|
|
149
|
-
z.literal(
|
|
150
|
-
z.literal(
|
|
151
|
-
z.literal(
|
|
152
|
-
z.literal(
|
|
153
|
-
z.literal(
|
|
154
|
-
z.literal(
|
|
155
|
-
z.literal(
|
|
156
|
-
z.literal(
|
|
157
|
-
z.literal(
|
|
158
|
-
z.literal(
|
|
159
|
-
z.literal(
|
|
160
|
-
z.literal(
|
|
161
|
-
z.literal(
|
|
162
|
-
z.literal(
|
|
163
|
-
z.literal(
|
|
164
|
-
z.literal(
|
|
165
|
-
z.literal(
|
|
166
|
-
z.literal(
|
|
167
|
-
z.literal(
|
|
168
|
-
z.literal(
|
|
169
|
-
z.literal(
|
|
170
|
-
z.literal(
|
|
171
|
-
z.literal(
|
|
172
|
-
z.literal(
|
|
173
|
-
z.literal(
|
|
174
|
-
z.literal(
|
|
175
|
-
z.literal(
|
|
176
|
-
z.literal(
|
|
177
|
-
z.literal(
|
|
178
|
-
z.literal(
|
|
179
|
-
z.literal(
|
|
180
|
-
z.literal(
|
|
181
|
-
z.literal(
|
|
182
|
-
z.literal(
|
|
183
|
-
z.literal(
|
|
184
|
-
z.literal(
|
|
185
|
-
z.literal(
|
|
186
|
-
z.literal(
|
|
187
|
-
z.literal(
|
|
188
|
-
z.literal(
|
|
189
|
-
z.literal(
|
|
190
|
-
z.literal(
|
|
191
|
-
z.literal(
|
|
192
|
-
z.literal(
|
|
193
|
-
z.literal(
|
|
194
|
-
z.literal(
|
|
195
|
-
z.literal(
|
|
196
|
-
z.literal(
|
|
197
|
-
z.literal(
|
|
198
|
-
z.literal(
|
|
199
|
-
z.literal(
|
|
200
|
-
z.literal(
|
|
201
|
-
z.literal(
|
|
202
|
-
z.literal(
|
|
21
|
+
z.literal("google.com"),
|
|
22
|
+
z.literal("google.ad"),
|
|
23
|
+
z.literal("google.ae"),
|
|
24
|
+
z.literal("google.com.af"),
|
|
25
|
+
z.literal("google.com.ag"),
|
|
26
|
+
z.literal("google.com.ai"),
|
|
27
|
+
z.literal("google.al"),
|
|
28
|
+
z.literal("google.am"),
|
|
29
|
+
z.literal("google.co.ao"),
|
|
30
|
+
z.literal("google.com.ar"),
|
|
31
|
+
z.literal("google.as"),
|
|
32
|
+
z.literal("google.at"),
|
|
33
|
+
z.literal("google.com.au"),
|
|
34
|
+
z.literal("google.az"),
|
|
35
|
+
z.literal("google.ba"),
|
|
36
|
+
z.literal("google.com.bd"),
|
|
37
|
+
z.literal("google.be"),
|
|
38
|
+
z.literal("google.bf"),
|
|
39
|
+
z.literal("google.bg"),
|
|
40
|
+
z.literal("google.com.bh"),
|
|
41
|
+
z.literal("google.bi"),
|
|
42
|
+
z.literal("google.bj"),
|
|
43
|
+
z.literal("google.com.bn"),
|
|
44
|
+
z.literal("google.com.bo"),
|
|
45
|
+
z.literal("google.com.br"),
|
|
46
|
+
z.literal("google.bs"),
|
|
47
|
+
z.literal("google.bt"),
|
|
48
|
+
z.literal("google.co.bw"),
|
|
49
|
+
z.literal("google.by"),
|
|
50
|
+
z.literal("google.com.bz"),
|
|
51
|
+
z.literal("google.ca"),
|
|
52
|
+
z.literal("google.com.kh"),
|
|
53
|
+
z.literal("google.cd"),
|
|
54
|
+
z.literal("google.cf"),
|
|
55
|
+
z.literal("google.cg"),
|
|
56
|
+
z.literal("google.ch"),
|
|
57
|
+
z.literal("google.ci"),
|
|
58
|
+
z.literal("google.co.ck"),
|
|
59
|
+
z.literal("google.cl"),
|
|
60
|
+
z.literal("google.cm"),
|
|
61
|
+
z.literal("google.com.co"),
|
|
62
|
+
z.literal("google.co.cr"),
|
|
63
|
+
z.literal("google.com.cu"),
|
|
64
|
+
z.literal("google.cv"),
|
|
65
|
+
z.literal("google.com.cy"),
|
|
66
|
+
z.literal("google.cz"),
|
|
67
|
+
z.literal("google.de"),
|
|
68
|
+
z.literal("google.dj"),
|
|
69
|
+
z.literal("google.dk"),
|
|
70
|
+
z.literal("google.dm"),
|
|
71
|
+
z.literal("google.com.do"),
|
|
72
|
+
z.literal("google.dz"),
|
|
73
|
+
z.literal("google.com.ec"),
|
|
74
|
+
z.literal("google.ee"),
|
|
75
|
+
z.literal("google.com.eg"),
|
|
76
|
+
z.literal("google.es"),
|
|
77
|
+
z.literal("google.com.et"),
|
|
78
|
+
z.literal("google.fi"),
|
|
79
|
+
z.literal("google.fm"),
|
|
80
|
+
z.literal("google.com.fj"),
|
|
81
|
+
z.literal("google.fr"),
|
|
82
|
+
z.literal("google.ga"),
|
|
83
|
+
z.literal("google.ge"),
|
|
84
|
+
z.literal("google.com.gh"),
|
|
85
|
+
z.literal("google.com.gi"),
|
|
86
|
+
z.literal("google.gl"),
|
|
87
|
+
z.literal("google.gm"),
|
|
88
|
+
z.literal("google.gp"),
|
|
89
|
+
z.literal("google.gr"),
|
|
90
|
+
z.literal("google.com.gt"),
|
|
91
|
+
z.literal("google.gy"),
|
|
92
|
+
z.literal("google.com.hk"),
|
|
93
|
+
z.literal("google.hn"),
|
|
94
|
+
z.literal("google.hr"),
|
|
95
|
+
z.literal("google.ht"),
|
|
96
|
+
z.literal("google.hu"),
|
|
97
|
+
z.literal("google.co.id"),
|
|
98
|
+
z.literal("google.iq"),
|
|
99
|
+
z.literal("google.ie"),
|
|
100
|
+
z.literal("google.co.il"),
|
|
101
|
+
z.literal("google.co.in"),
|
|
102
|
+
z.literal("google.is"),
|
|
103
|
+
z.literal("google.it"),
|
|
104
|
+
z.literal("google.je"),
|
|
105
|
+
z.literal("google.com.jm"),
|
|
106
|
+
z.literal("google.jo"),
|
|
107
|
+
z.literal("google.co.jp"),
|
|
108
|
+
z.literal("google.co.ke"),
|
|
109
|
+
z.literal("google.ki"),
|
|
110
|
+
z.literal("google.kg"),
|
|
111
|
+
z.literal("google.co.kr"),
|
|
112
|
+
z.literal("google.com.kw"),
|
|
113
|
+
z.literal("google.kz"),
|
|
114
|
+
z.literal("google.la"),
|
|
115
|
+
z.literal("google.com.lb"),
|
|
116
|
+
z.literal("google.li"),
|
|
117
|
+
z.literal("google.lk"),
|
|
118
|
+
z.literal("google.co.ls"),
|
|
119
|
+
z.literal("google.lt"),
|
|
120
|
+
z.literal("google.lu"),
|
|
121
|
+
z.literal("google.lv"),
|
|
122
|
+
z.literal("google.com.ly"),
|
|
123
|
+
z.literal("google.co.ma"),
|
|
124
|
+
z.literal("google.md"),
|
|
125
|
+
z.literal("google.mg"),
|
|
126
|
+
z.literal("google.mk"),
|
|
127
|
+
z.literal("google.ml"),
|
|
128
|
+
z.literal("google.com.mm"),
|
|
129
|
+
z.literal("google.mn"),
|
|
130
|
+
z.literal("google.ms"),
|
|
131
|
+
z.literal("google.com.mt"),
|
|
132
|
+
z.literal("google.mu"),
|
|
133
|
+
z.literal("google.mv"),
|
|
134
|
+
z.literal("google.mw"),
|
|
135
|
+
z.literal("google.com.mx"),
|
|
136
|
+
z.literal("google.com.my"),
|
|
137
|
+
z.literal("google.co.mz"),
|
|
138
|
+
z.literal("google.com.na"),
|
|
139
|
+
z.literal("google.ne"),
|
|
140
|
+
z.literal("google.com.ng"),
|
|
141
|
+
z.literal("google.com.ni"),
|
|
142
|
+
z.literal("google.nl"),
|
|
143
|
+
z.literal("google.no"),
|
|
144
|
+
z.literal("google.com.np"),
|
|
145
|
+
z.literal("google.nr"),
|
|
146
|
+
z.literal("google.nu"),
|
|
147
|
+
z.literal("google.co.nz"),
|
|
148
|
+
z.literal("google.com.om"),
|
|
149
|
+
z.literal("google.com.pk"),
|
|
150
|
+
z.literal("google.com.pa"),
|
|
151
|
+
z.literal("google.com.pe"),
|
|
152
|
+
z.literal("google.com.ph"),
|
|
153
|
+
z.literal("google.pl"),
|
|
154
|
+
z.literal("google.com.pg"),
|
|
155
|
+
z.literal("google.com.pr"),
|
|
156
|
+
z.literal("google.ps"),
|
|
157
|
+
z.literal("google.pt"),
|
|
158
|
+
z.literal("google.com.py"),
|
|
159
|
+
z.literal("google.com.qa"),
|
|
160
|
+
z.literal("google.ro"),
|
|
161
|
+
z.literal("google.rs"),
|
|
162
|
+
z.literal("google.ru"),
|
|
163
|
+
z.literal("google.rw"),
|
|
164
|
+
z.literal("google.com.sa"),
|
|
165
|
+
z.literal("google.com.sb"),
|
|
166
|
+
z.literal("google.sc"),
|
|
167
|
+
z.literal("google.se"),
|
|
168
|
+
z.literal("google.com.sg"),
|
|
169
|
+
z.literal("google.sh"),
|
|
170
|
+
z.literal("google.si"),
|
|
171
|
+
z.literal("google.sk"),
|
|
172
|
+
z.literal("google.com.sl"),
|
|
173
|
+
z.literal("google.sn"),
|
|
174
|
+
z.literal("google.sm"),
|
|
175
|
+
z.literal("google.so"),
|
|
176
|
+
z.literal("google.sr"),
|
|
177
|
+
z.literal("google.com.sv"),
|
|
178
|
+
z.literal("google.td"),
|
|
179
|
+
z.literal("google.tg"),
|
|
180
|
+
z.literal("google.co.th"),
|
|
181
|
+
z.literal("google.com.tj"),
|
|
182
|
+
z.literal("google.tk"),
|
|
183
|
+
z.literal("google.tl"),
|
|
184
|
+
z.literal("google.tm"),
|
|
185
|
+
z.literal("google.tn"),
|
|
186
|
+
z.literal("google.to"),
|
|
187
|
+
z.literal("google.com.tr"),
|
|
188
|
+
z.literal("google.tt"),
|
|
189
|
+
z.literal("google.com.tw"),
|
|
190
|
+
z.literal("google.co.tz"),
|
|
191
|
+
z.literal("google.com.ua"),
|
|
192
|
+
z.literal("google.co.ug"),
|
|
193
|
+
z.literal("google.co.uk"),
|
|
194
|
+
z.literal("google.com.uy"),
|
|
195
|
+
z.literal("google.co.uz"),
|
|
196
|
+
z.literal("google.com.vc"),
|
|
197
|
+
z.literal("google.co.ve"),
|
|
198
|
+
z.literal("google.vg"),
|
|
199
|
+
z.literal("google.co.vi"),
|
|
200
|
+
z.literal("google.com.vn"),
|
|
201
|
+
z.literal("google.vu"),
|
|
202
|
+
z.literal("google.ws"),
|
|
203
203
|
])
|
|
204
|
-
.describe(
|
|
205
|
-
.default(
|
|
204
|
+
.describe("Parameter defines the Google domain to use. It defaults to google.com.")
|
|
205
|
+
.default("google.com"),
|
|
206
206
|
start: z
|
|
207
207
|
.number()
|
|
208
208
|
.describe("Parameter defines the result offset. It skips the given number of results. It's used for pagination. (e.g., 0 (default) is the first page of results, 10 is the 2nd page of results, 20 is the 3rd page of results, etc.).")
|
|
209
209
|
.default(0),
|
|
210
210
|
num: z
|
|
211
211
|
.number()
|
|
212
|
-
.describe(
|
|
212
|
+
.describe("Parameter defines the maximum number of results to return. (e.g., 10 (default) returns 10 results, 40 returns 40 results, and 100 returns 100 results).")
|
|
213
213
|
.default(10),
|
|
214
214
|
ludocid: z
|
|
215
215
|
.string()
|
|
216
|
-
.describe(
|
|
216
|
+
.describe("Parameter defines the id (CID) of the Google My Business listing you want to scrape. Also known as Google Place ID.")
|
|
217
217
|
.optional(),
|
|
218
218
|
kgmid: z
|
|
219
219
|
.string()
|
|
220
|
-
.describe(
|
|
220
|
+
.describe("Parameter defines the id (KGMID) of the Google Knowledge Graph listing you want to scrape. Also known as Google Knowledge Graph ID. Searches with kgmid parameter will return results for the originally encrypted search parameters. For some searches, kgmid may override all other parameters except start, and num parameters.")
|
|
221
221
|
.optional(),
|
|
222
222
|
ibp: z
|
|
223
223
|
.string()
|
|
224
|
-
.describe(
|
|
224
|
+
.describe("Parameter is responsible for rendering layouts and expansions for some elements (e.g., gwp;0,7 to expand searches with ludocid for expanded knowledge graph).")
|
|
225
225
|
.optional(),
|
|
226
226
|
cr: z
|
|
227
227
|
.string()
|
|
228
|
-
.describe(
|
|
228
|
+
.describe("Parameter defines one or multiple countries to limit the search to. It uses country{two-letter upper-case country code} to specify countries and | as a delimiter. (e.g., countryFR|countryDE will only search French and German pages).")
|
|
229
229
|
.optional(),
|
|
230
230
|
lr: z
|
|
231
231
|
.string()
|
|
232
|
-
.describe(
|
|
232
|
+
.describe("Parameter defines one or multiple languages to limit the search to. It uses lang_{two-letter language code} to specify languages and | as a delimiter. (e.g., lang_fr|lang_de will only search French and German pages).")
|
|
233
233
|
.optional(),
|
|
234
234
|
tbs: z
|
|
235
235
|
.string()
|
|
236
236
|
.describe("(to be searched) parameter defines advanced search parameters that aren't possible in the regular query field. (e.g., advanced search for patents, dates, news, videos, images, apps, or text contents).")
|
|
237
237
|
.optional(),
|
|
238
238
|
safe: z
|
|
239
|
-
.union([
|
|
239
|
+
.union([
|
|
240
|
+
z.literal("active").describe("Active"),
|
|
241
|
+
z.literal("off").describe("Off"),
|
|
242
|
+
])
|
|
240
243
|
.optional()
|
|
241
|
-
.describe(
|
|
244
|
+
.describe("Parameter defines the level of filtering for adult content. It can be set to active or off, by default Google will blur explicit content."),
|
|
242
245
|
nfpr: z
|
|
243
|
-
.union([z.literal(
|
|
246
|
+
.union([z.literal("1").describe("1"), z.literal("0").describe("0")])
|
|
244
247
|
.optional()
|
|
245
|
-
.describe(
|
|
248
|
+
.describe("Parameter defines the exclusion of results from an auto-corrected query when the original query is spelled wrong. It can be set to 1 to exclude these results, or 0 to include them (default). Note that this parameter may not prevent Google from returning results for an auto-corrected query if no other results are available."),
|
|
246
249
|
filter: z
|
|
247
|
-
.union([
|
|
250
|
+
.union([
|
|
251
|
+
z.literal("1").describe("1(enable filters)"),
|
|
252
|
+
z.literal("0").describe("0(disable filters)"),
|
|
253
|
+
])
|
|
248
254
|
.optional()
|
|
249
255
|
.describe("Parameter defines if the filters for 'Similar Results' and 'Omitted Results' are on or off. It can be set to 1 (default) to enable these filters, or 0 to disable these filters."),
|
|
250
256
|
tbm: z
|
|
251
257
|
.union([
|
|
252
|
-
z.literal(
|
|
253
|
-
z.literal(
|
|
254
|
-
z.literal(
|
|
255
|
-
z.literal(
|
|
256
|
-
z.literal(
|
|
257
|
-
z.literal(
|
|
258
|
-
z.literal(
|
|
258
|
+
z.literal("isch").describe("isch - Google Images"),
|
|
259
|
+
z.literal("lcl").describe("lcl - Google Local"),
|
|
260
|
+
z.literal("nws").describe("nws - Google News"),
|
|
261
|
+
z.literal("shop").describe("shop - Google Shopping"),
|
|
262
|
+
z.literal("vid").describe("vid - Google Videos"),
|
|
263
|
+
z.literal("pts").describe("pts - Google Patents"),
|
|
264
|
+
z.literal("jobs").describe("jobs - Google Jobs"),
|
|
259
265
|
])
|
|
260
266
|
.optional()
|
|
261
|
-
.describe(
|
|
267
|
+
.describe("(to be matched) parameter defines the type of search you want to do.\n\nIt can be set to:\n(no tbm parameter): regular Google Search,\nisch: Google Images API,\nlcl - Google Local API\nvid: Google Videos API,\nnws: Google News API,\nshop: Google Shopping API,\npts: Google Patents API,\nor any other Google service."),
|
|
262
268
|
},
|
|
263
269
|
handle: async (params, client) => {
|
|
264
270
|
return wrapMcpResponse(() => client.deepserp.scrape({
|
|
265
|
-
actor:
|
|
266
|
-
input: params
|
|
271
|
+
actor: "scraper.google.search",
|
|
272
|
+
input: params,
|
|
267
273
|
}));
|
|
268
|
-
}
|
|
274
|
+
},
|
|
269
275
|
});
|