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 CHANGED
@@ -1,6 +1,6 @@
1
1
  ![preview](./banner.png)
2
2
 
3
- # Scrapeless Mcp Server
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
- ### Deepserp Tools
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
- "ScrapelessMcpServer": {
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
- "ScrapelessMcpServer": {
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
- ### Google Search
142
+ ### browser
143
143
 
144
- ```
145
- Please search for "climate change solutions" and summarize the top results.
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: 'google_flights',
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 google-search instead)`,
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('us'),
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('en'),
17
+ .default("en"),
18
18
  currency: z
19
19
  .union([
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')
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('Parameter defines the currency of the returned prices. Default to USD.')
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('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'),
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('An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA.')
101
- .default('BCN'),
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('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.')
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('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')
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('Parameter defines the travel class.\nAvailable options:\n1 - Economy (default)\n2 - Premium economy\n3 - Business\n4 - First')
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.number().describe('Parameter defines the number of adults. Default to 1.').default(1),
120
- children: z.number().describe('Parameter defines the number of children. Default to 0.').default(0),
121
- infants_in_seat: z.number().describe('Parameter defines the number of infants in seat. Default to 0.').default(0),
122
- infants_on_lap: z.number().describe('Parameter defines the number of infants on lap. Default to 0.').default(0),
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('Parameter defines the outbound date. The format is YYYY-MM-DD. e.g. 2025-03-09')
126
- .default('next_1d'),
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('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)')
130
- .default('next_1w'),
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('Any number of stops (default) - 0'),
134
- z.literal(1).describe('Nonstop only - 1'),
135
- z.literal(2).describe('1 stop or fewer - 2'),
136
- z.literal(3).describe('2 stops or fewer - 3')
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('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')
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.number().describe('Parameter defines the number of carry-on bags. Default to 0.').default(0),
146
- max_price: z.number().describe('Parameter defines the maximum ticket price. Default to unlimited.').default(0),
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('Parameter defines the outbound times range. See schema for details.')
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('Parameter defines the return times range. See schema for details.')
172
+ .describe("Parameter defines the return times range. See schema for details.")
155
173
  .optional()
156
174
  .optional(),
157
175
  emissions: z
158
- .union([z.literal(0).describe('reset'), z.literal(1).describe('Less emissions only - ·')])
159
- .describe('Parameter defines the emission level of the flight.\nAvailable options:\n1 - Less emissions only')
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('Parameter defines the connecting airport codes to be excluded. See schema for details.')
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('Parameter defines the maximum flight duration, in minutes. For example, specify 1500 for 25 hours.')
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('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.')
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: 'scraper.google.flights',
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: 'google-search',
5
- description: 'Universal Information Search Engine.Retrieves any data information; Explanatory queries (why, how).Comparative analysis requests',
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('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'),
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('en'),
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('us'),
18
+ .default("us"),
19
19
  google_domain: z
20
20
  .union([
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')
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('Parameter defines the Google domain to use. It defaults to google.com.')
205
- .default('google.com'),
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('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).')
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('Parameter defines the id (CID) of the Google My Business listing you want to scrape. Also known as Google Place ID.')
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('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.')
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('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).')
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('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).')
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('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).')
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([z.literal('active').describe('Active'), z.literal('off').describe('Off')])
239
+ .union([
240
+ z.literal("active").describe("Active"),
241
+ z.literal("off").describe("Off"),
242
+ ])
240
243
  .optional()
241
- .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.'),
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('1').describe('1'), z.literal('0').describe('0')])
246
+ .union([z.literal("1").describe("1"), z.literal("0").describe("0")])
244
247
  .optional()
245
- .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.'),
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([z.literal('1').describe('1(enable filters)'), z.literal('0').describe('0(disable filters)')])
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('isch').describe('isch - Google Images'),
253
- z.literal('lcl').describe('lcl - Google Local'),
254
- z.literal('nws').describe('nws - Google News'),
255
- z.literal('shop').describe('shop - Google Shopping'),
256
- z.literal('vid').describe('vid - Google Videos'),
257
- z.literal('pts').describe('pts - Google Patents'),
258
- z.literal('jobs').describe('jobs - Google Jobs')
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('(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.')
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: 'scraper.google.search',
266
- input: params
271
+ actor: "scraper.google.search",
272
+ input: params,
267
273
  }));
268
- }
274
+ },
269
275
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scrapeless-mcp-server",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "bin": {