spider-cloud-mcp 1.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/LICENSE +21 -0
- package/README.md +122 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +319 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Spider
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# spider-cloud-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for the [Spider](https://spider.cloud) web crawling and scraping API. Crawl, scrape, search, and extract web data for AI agents, RAG pipelines, and LLMs.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
### 1. Get your API key
|
|
8
|
+
|
|
9
|
+
Sign up at [spider.cloud](https://spider.cloud) and get your API key from the [API Keys](https://spider.cloud/api-keys) page.
|
|
10
|
+
|
|
11
|
+
### 2. Configure your MCP client
|
|
12
|
+
|
|
13
|
+
#### Claude Desktop
|
|
14
|
+
|
|
15
|
+
Add to your `claude_desktop_config.json`:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"spider": {
|
|
21
|
+
"command": "npx",
|
|
22
|
+
"args": ["-y", "spider-cloud-mcp"],
|
|
23
|
+
"env": {
|
|
24
|
+
"SPIDER_API_KEY": "your-api-key"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
#### Claude Code
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
claude mcp add spider -- npx -y spider-cloud-mcp
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Then set your API key in the environment or `.env` file:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
SPIDER_API_KEY=your-api-key
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Cursor
|
|
44
|
+
|
|
45
|
+
Add to your Cursor MCP settings:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"spider": {
|
|
51
|
+
"command": "npx",
|
|
52
|
+
"args": ["-y", "spider-cloud-mcp"],
|
|
53
|
+
"env": {
|
|
54
|
+
"SPIDER_API_KEY": "your-api-key"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Tools
|
|
62
|
+
|
|
63
|
+
### Core Tools
|
|
64
|
+
|
|
65
|
+
| Tool | Description |
|
|
66
|
+
|------|-------------|
|
|
67
|
+
| `spider_crawl` | Crawl a website and extract content from multiple pages |
|
|
68
|
+
| `spider_scrape` | Scrape a single page (no crawling) |
|
|
69
|
+
| `spider_search` | Search the web with optional page content fetching |
|
|
70
|
+
| `spider_links` | Extract all links from a page |
|
|
71
|
+
| `spider_screenshot` | Capture page screenshots |
|
|
72
|
+
| `spider_unblocker` | Access bot-protected content with anti-bot bypass |
|
|
73
|
+
| `spider_transform` | Transform HTML to markdown/text/other formats |
|
|
74
|
+
| `spider_get_credits` | Check your credit balance |
|
|
75
|
+
| `spider_crawl_state` | Check crawl job status |
|
|
76
|
+
| `spider_query` | Query previously stored crawl data |
|
|
77
|
+
|
|
78
|
+
### AI Tools (Subscription Required)
|
|
79
|
+
|
|
80
|
+
These tools require an active [AI subscription plan](https://spider.cloud/ai/pricing).
|
|
81
|
+
|
|
82
|
+
| Tool | Description |
|
|
83
|
+
|------|-------------|
|
|
84
|
+
| `spider_ai_crawl` | AI-guided crawling with natural language prompts |
|
|
85
|
+
| `spider_ai_scrape` | Extract structured data using plain English |
|
|
86
|
+
| `spider_ai_search` | AI-enhanced semantic web search |
|
|
87
|
+
| `spider_ai_browser` | Automate browser interactions with natural language |
|
|
88
|
+
| `spider_ai_links` | Intelligent link extraction and filtering |
|
|
89
|
+
|
|
90
|
+
## Examples
|
|
91
|
+
|
|
92
|
+
### Crawl a website to markdown
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
Use spider_crawl to crawl https://example.com with limit 10 and return_format "markdown"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Search the web
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Use spider_search to search for "latest AI research papers" with fetch_page_content true and num 5
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### AI-powered extraction
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
Use spider_ai_scrape on https://news.ycombinator.com with prompt "Extract all article titles, URLs, points, and comment counts as structured JSON"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Check credits
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
Use spider_get_credits to check my balance
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## API Reference
|
|
117
|
+
|
|
118
|
+
Full API documentation: [spider.cloud/docs/api](https://spider.cloud/docs/api)
|
|
119
|
+
|
|
120
|
+
## License
|
|
121
|
+
|
|
122
|
+
MIT
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
const API_BASE = "https://api.spider.cloud";
|
|
6
|
+
function getApiKey() {
|
|
7
|
+
const key = process.env.SPIDER_API_KEY;
|
|
8
|
+
if (!key) {
|
|
9
|
+
throw new Error("SPIDER_API_KEY environment variable is required. Get your key at https://spider.cloud/api-keys");
|
|
10
|
+
}
|
|
11
|
+
return key;
|
|
12
|
+
}
|
|
13
|
+
async function apiRequest(method, path, body, contentType) {
|
|
14
|
+
const headers = {
|
|
15
|
+
Authorization: `Bearer ${getApiKey()}`,
|
|
16
|
+
"Content-Type": "application/json",
|
|
17
|
+
};
|
|
18
|
+
if (contentType) {
|
|
19
|
+
headers["Content-Type"] = contentType;
|
|
20
|
+
}
|
|
21
|
+
const res = await fetch(`${API_BASE}${path}`, {
|
|
22
|
+
method,
|
|
23
|
+
headers,
|
|
24
|
+
...(body ? { body: JSON.stringify(body) } : {}),
|
|
25
|
+
});
|
|
26
|
+
const text = await res.text();
|
|
27
|
+
if (!res.ok) {
|
|
28
|
+
throw new Error(`Spider API error ${res.status}: ${text}`);
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(text);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return text;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function formatResult(data) {
|
|
38
|
+
if (typeof data === "string")
|
|
39
|
+
return data;
|
|
40
|
+
return JSON.stringify(data, null, 2);
|
|
41
|
+
}
|
|
42
|
+
// Shared parameter schemas
|
|
43
|
+
const crawlParams = {
|
|
44
|
+
url: z.string().describe("The URL to crawl. Can be comma-separated for multiple URLs."),
|
|
45
|
+
limit: z.number().optional().describe("Maximum pages to crawl per website. 0 for all pages. Default: 0"),
|
|
46
|
+
depth: z.number().optional().describe("Maximum crawl depth. Default: 25. 0 for no limit."),
|
|
47
|
+
request: z.enum(["http", "chrome", "smart"]).optional().describe("Request type. Default: smart"),
|
|
48
|
+
return_format: z.union([
|
|
49
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
50
|
+
z.array(z.string())
|
|
51
|
+
]).optional().describe("Output format. Default: raw"),
|
|
52
|
+
readability: z.boolean().optional().describe("Use readability algorithm for content preprocessing"),
|
|
53
|
+
return_page_links: z.boolean().optional().describe("Return links found on each page"),
|
|
54
|
+
return_json_data: z.boolean().optional().describe("Return JSON data from SSR scripts"),
|
|
55
|
+
return_headers: z.boolean().optional().describe("Return HTTP response headers"),
|
|
56
|
+
return_cookies: z.boolean().optional().describe("Return HTTP response cookies"),
|
|
57
|
+
metadata: z.boolean().optional().describe("Collect page metadata (title, description, keywords)"),
|
|
58
|
+
css_extraction_map: z.record(z.unknown()).optional().describe("CSS/XPath selectors to scrape specific content per path"),
|
|
59
|
+
root_selector: z.string().optional().describe("Root CSS query selector for content extraction"),
|
|
60
|
+
exclude_selector: z.string().optional().describe("CSS selector for content to ignore"),
|
|
61
|
+
filter_output_images: z.boolean().optional().describe("Filter images from output"),
|
|
62
|
+
filter_output_svg: z.boolean().optional().describe("Filter SVG tags from output"),
|
|
63
|
+
filter_output_main_only: z.boolean().optional().describe("Filter nav, aside, footer from output"),
|
|
64
|
+
filter_svg: z.boolean().optional().describe("Filter SVG elements from markup"),
|
|
65
|
+
filter_images: z.boolean().optional().describe("Filter image elements from markup"),
|
|
66
|
+
filter_main_only: z.boolean().optional().describe("Filter to main content only. Default: enabled"),
|
|
67
|
+
clean_html: z.boolean().optional().describe("Clean HTML of unwanted attributes"),
|
|
68
|
+
proxy_enabled: z.boolean().optional().describe("Enable premium proxies. Multiplies cost by 1.5x"),
|
|
69
|
+
proxy: z.enum(["residential", "mobile", "isp", "datacenter"]).optional().describe("Proxy pool type"),
|
|
70
|
+
remote_proxy: z.string().optional().describe("External proxy connection URL"),
|
|
71
|
+
country_code: z.string().optional().describe("ISO country code for proxy (e.g. 'gb')"),
|
|
72
|
+
fingerprint: z.boolean().optional().describe("Advanced fingerprint detection for Chrome. Default: true"),
|
|
73
|
+
cookies: z.string().optional().describe("HTTP cookies for SSR authentication"),
|
|
74
|
+
external_domains: z.array(z.string()).optional().describe("External domains to include. Use ['*'] for all"),
|
|
75
|
+
subdomains: z.boolean().optional().describe("Allow subdomains"),
|
|
76
|
+
tld: z.boolean().optional().describe("Allow TLDs"),
|
|
77
|
+
blacklist: z.array(z.string()).optional().describe("Paths to exclude (supports regex)"),
|
|
78
|
+
whitelist: z.array(z.string()).optional().describe("Paths to include (supports regex)"),
|
|
79
|
+
redirect_policy: z.enum(["Loose", "Strict", "None"]).optional().describe("Redirect policy. Default: Loose"),
|
|
80
|
+
delay: z.number().optional().describe("Crawl delay in ms (max 60000). Disables concurrency"),
|
|
81
|
+
concurrency_limit: z.number().optional().describe("Concurrency limit for slower websites"),
|
|
82
|
+
respect_robots: z.boolean().optional().describe("Respect robots.txt. Default: true"),
|
|
83
|
+
cache: z.union([z.boolean(), z.record(z.unknown())]).optional().describe("HTTP caching. Object: {maxAge, allowStale, period}"),
|
|
84
|
+
storageless: z.boolean().optional().describe("Prevent data storage. Default: true"),
|
|
85
|
+
session: z.boolean().optional().describe("Persist HTTP headers and cookies. Default: true"),
|
|
86
|
+
user_agent: z.string().optional().describe("Custom HTTP user agent"),
|
|
87
|
+
full_resources: z.boolean().optional().describe("Download all website resources including assets"),
|
|
88
|
+
sitemap: z.boolean().optional().describe("Include links from sitemaps"),
|
|
89
|
+
sitemaps: z.array(z.string()).optional().describe("Specific sitemap URLs to use"),
|
|
90
|
+
request_timeout: z.number().optional().describe("HTTP request timeout in ms"),
|
|
91
|
+
request_max_retries: z.number().optional().describe("Maximum request retries"),
|
|
92
|
+
request_redirect_limit: z.number().optional().describe("Maximum redirects to follow"),
|
|
93
|
+
budget: z.record(z.number()).optional().describe("Crawl budget by path (e.g. {'*':100})"),
|
|
94
|
+
chunking_alg: z.record(z.unknown()).optional().describe("Segment content: bysentence, bylines, bycharacterlength, bywords"),
|
|
95
|
+
automation: z.record(z.unknown()).optional().describe("Web automation actions (Click, Fill, Wait, Scroll, etc.)"),
|
|
96
|
+
preserve_host: z.boolean().optional().describe("Preserve HOST header"),
|
|
97
|
+
event_tracker: z.record(z.unknown()).optional().describe("Track requests, responses, automation"),
|
|
98
|
+
disable_intercept: z.boolean().optional().describe("Disable request interception"),
|
|
99
|
+
block_ads: z.boolean().optional().describe("Block advertisements. Default: true"),
|
|
100
|
+
block_analytics: z.boolean().optional().describe("Block analytics. Default: true"),
|
|
101
|
+
block_stylesheets: z.boolean().optional().describe("Block stylesheets. Default: true"),
|
|
102
|
+
run_in_background: z.boolean().optional().describe("Run in background. Requires storageless=false or webhooks"),
|
|
103
|
+
viewport: z.object({
|
|
104
|
+
width: z.number().optional(),
|
|
105
|
+
height: z.number().optional(),
|
|
106
|
+
device_scale_factor: z.number().optional(),
|
|
107
|
+
emulating_mobile: z.boolean().optional(),
|
|
108
|
+
is_landscape: z.boolean().optional(),
|
|
109
|
+
has_touch: z.boolean().optional(),
|
|
110
|
+
}).optional().describe("Device viewport settings"),
|
|
111
|
+
locale: z.string().optional().describe("Locale for content (e.g. 'en-US')"),
|
|
112
|
+
timezone: z.string().optional().describe("Timezone for content"),
|
|
113
|
+
timeout: z.number().optional().describe("Overall request timeout"),
|
|
114
|
+
webhooks: z.record(z.unknown()).optional().describe("Webhook config for events (on_find, on_credits_depleted, etc.)"),
|
|
115
|
+
cron: z.enum(["daily", "weekly", "monthly"]).optional().describe("Schedule crawl"),
|
|
116
|
+
};
|
|
117
|
+
const screenshotExtraParams = {
|
|
118
|
+
screenshot: z.boolean().optional().describe("Enable screenshot capture"),
|
|
119
|
+
binary: z.boolean().optional().describe("Return image as binary instead of base64"),
|
|
120
|
+
full_page: z.boolean().optional().describe("Screenshot full page. Default: true"),
|
|
121
|
+
block_images: z.boolean().optional().describe("Block image loading"),
|
|
122
|
+
omit_background: z.boolean().optional().describe("Omit background"),
|
|
123
|
+
cdp_params: z.record(z.unknown()).optional().describe("Chrome DevTools Protocol settings"),
|
|
124
|
+
};
|
|
125
|
+
// Build scrape params (crawl minus limit/depth/delay)
|
|
126
|
+
const { limit: _l, depth: _d, delay: _dl, ...scrapeBase } = crawlParams;
|
|
127
|
+
const scrapeParams = { ...scrapeBase, ...screenshotExtraParams };
|
|
128
|
+
const server = new McpServer({
|
|
129
|
+
name: "spider-cloud-mcp",
|
|
130
|
+
version: "1.0.0",
|
|
131
|
+
});
|
|
132
|
+
// === Core Tools ===
|
|
133
|
+
server.tool("spider_crawl", "Crawl a website and extract content from multiple pages. Returns page content in the specified format (markdown, HTML, text, etc.). Powered by Spider - the fastest web crawler at 100K+ pages/sec.", crawlParams, async (params) => {
|
|
134
|
+
const data = await apiRequest("POST", "/crawl", params);
|
|
135
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
136
|
+
});
|
|
137
|
+
server.tool("spider_scrape", "Scrape a single page and extract its content. No crawling — just fetches and processes one URL. Supports all output formats and screenshot capture.", scrapeParams, async (params) => {
|
|
138
|
+
const data = await apiRequest("POST", "/scrape", params);
|
|
139
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
140
|
+
});
|
|
141
|
+
server.tool("spider_search", "Search the web and optionally crawl results. Returns search results with optional full page content.", {
|
|
142
|
+
search: z.string().describe("The search query to perform"),
|
|
143
|
+
search_limit: z.number().optional().describe("Max URLs to fetch from results. 0 for all"),
|
|
144
|
+
num: z.number().optional().describe("Maximum number of results to return"),
|
|
145
|
+
fetch_page_content: z.boolean().optional().describe("Fetch full website content. Default: false"),
|
|
146
|
+
country: z.string().optional().describe("Two-letter country code (e.g. 'us')"),
|
|
147
|
+
location: z.string().optional().describe("Location origin (e.g. 'United Kingdom')"),
|
|
148
|
+
language: z.string().optional().describe("Two-letter language code (e.g. 'en')"),
|
|
149
|
+
tbs: z.string().optional().describe("Time range: qdr:h (hour), qdr:d (24h), qdr:w (week), qdr:m (month), qdr:y (year)"),
|
|
150
|
+
page: z.number().optional().describe("Page number for results"),
|
|
151
|
+
quick_search: z.boolean().optional().describe("Prioritize speed over quantity"),
|
|
152
|
+
auto_pagination: z.boolean().optional().describe("Auto-paginate to exact desired result count"),
|
|
153
|
+
url: z.string().optional().describe("Optional URL context"),
|
|
154
|
+
limit: z.number().optional().describe("Page crawl limit for fetched results"),
|
|
155
|
+
return_format: z.union([
|
|
156
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
157
|
+
z.array(z.string())
|
|
158
|
+
]).optional().describe("Output format for fetched content"),
|
|
159
|
+
request: z.enum(["http", "chrome", "smart"]).optional().describe("Request type"),
|
|
160
|
+
proxy_enabled: z.boolean().optional().describe("Enable premium proxies"),
|
|
161
|
+
cookies: z.string().optional().describe("HTTP cookies"),
|
|
162
|
+
}, async (params) => {
|
|
163
|
+
const data = await apiRequest("POST", "/search", params);
|
|
164
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
165
|
+
});
|
|
166
|
+
server.tool("spider_links", "Extract all links from a page without fetching content. Fast way to discover URLs on a site.", {
|
|
167
|
+
url: z.string().describe("The URL to extract links from"),
|
|
168
|
+
limit: z.number().optional().describe("Maximum links to return"),
|
|
169
|
+
return_format: z.union([
|
|
170
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
171
|
+
z.array(z.string())
|
|
172
|
+
]).optional().describe("Output format"),
|
|
173
|
+
request: z.enum(["http", "chrome", "smart"]).optional().describe("Request type"),
|
|
174
|
+
}, async (params) => {
|
|
175
|
+
const data = await apiRequest("POST", "/links", params);
|
|
176
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
177
|
+
});
|
|
178
|
+
server.tool("spider_screenshot", "Capture screenshots of web pages. Returns base64-encoded images or binary data.", {
|
|
179
|
+
url: z.string().describe("The URL to screenshot"),
|
|
180
|
+
...screenshotExtraParams,
|
|
181
|
+
viewport: crawlParams.viewport,
|
|
182
|
+
proxy_enabled: z.boolean().optional().describe("Enable premium proxies"),
|
|
183
|
+
country_code: z.string().optional().describe("ISO country code for proxy"),
|
|
184
|
+
fingerprint: z.boolean().optional().describe("Advanced fingerprint detection"),
|
|
185
|
+
cookies: z.string().optional().describe("HTTP cookies"),
|
|
186
|
+
automation: z.record(z.unknown()).optional().describe("Web automation actions before screenshot"),
|
|
187
|
+
block_ads: z.boolean().optional().describe("Block advertisements"),
|
|
188
|
+
block_analytics: z.boolean().optional().describe("Block analytics"),
|
|
189
|
+
block_stylesheets: z.boolean().optional().describe("Block stylesheets"),
|
|
190
|
+
locale: z.string().optional().describe("Locale"),
|
|
191
|
+
timezone: z.string().optional().describe("Timezone"),
|
|
192
|
+
timeout: z.number().optional().describe("Request timeout"),
|
|
193
|
+
}, async (params) => {
|
|
194
|
+
const data = await apiRequest("POST", "/screenshot", params);
|
|
195
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
196
|
+
});
|
|
197
|
+
server.tool("spider_unblocker", "Access blocked or protected content with advanced anti-bot bypass. Uses enhanced fingerprinting and proxy rotation. Adds 10-40 extra credits per successful unblock.", scrapeParams, async (params) => {
|
|
198
|
+
const data = await apiRequest("POST", "/unblocker", params);
|
|
199
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
200
|
+
});
|
|
201
|
+
server.tool("spider_transform", "Transform HTML content to markdown, text, or other formats. No network requests — processes HTML you provide directly.", {
|
|
202
|
+
data: z.array(z.object({
|
|
203
|
+
html: z.string().describe("HTML content to transform"),
|
|
204
|
+
url: z.string().optional().describe("Source URL (optional, used for readability)"),
|
|
205
|
+
})).describe("List of HTML data to transform"),
|
|
206
|
+
return_format: z.union([
|
|
207
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
208
|
+
z.array(z.string())
|
|
209
|
+
]).optional().describe("Output format"),
|
|
210
|
+
readability: z.boolean().optional().describe("Use readability preprocessing"),
|
|
211
|
+
clean_full: z.boolean().optional().describe("Clean HTML fully"),
|
|
212
|
+
clean: z.boolean().optional().describe("Clean for AI (remove footers, navigation)"),
|
|
213
|
+
}, async (params) => {
|
|
214
|
+
const data = await apiRequest("POST", "/transform", params);
|
|
215
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
216
|
+
});
|
|
217
|
+
server.tool("spider_get_credits", "Check your available Spider API credit balance.", {}, async () => {
|
|
218
|
+
const data = await apiRequest("GET", "/data/credits");
|
|
219
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
220
|
+
});
|
|
221
|
+
server.tool("spider_crawl_state", "Get the current state of a crawl job.", {
|
|
222
|
+
url: z.string().describe("The URL of the crawl job to check"),
|
|
223
|
+
}, async (params) => {
|
|
224
|
+
const data = await apiRequest("POST", "/data/crawl_state", params);
|
|
225
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
226
|
+
});
|
|
227
|
+
server.tool("spider_query", "Query previously stored crawl data. Search by URL, domain, or pathname.", {
|
|
228
|
+
url: z.string().optional().describe("Exact URL path to query"),
|
|
229
|
+
domain: z.string().optional().describe("Website domain to query (e.g. 'spider.cloud')"),
|
|
230
|
+
pathname: z.string().optional().describe("Website pathname to query (e.g. '/about')"),
|
|
231
|
+
limit: z.number().optional().describe("Max results to return"),
|
|
232
|
+
page: z.number().optional().describe("Page number for pagination"),
|
|
233
|
+
}, async (params) => {
|
|
234
|
+
const data = await apiRequest("POST", "/data/query", params);
|
|
235
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
236
|
+
});
|
|
237
|
+
// === AI Tools (Subscription Required) ===
|
|
238
|
+
const AI_SUB_NOTE = "REQUIRES an active AI subscription plan (https://spider.cloud/ai/pricing).";
|
|
239
|
+
server.tool("spider_ai_crawl", `AI-guided crawling using natural language prompts. Describe what content to find and Spider's AI will guide the crawl. ${AI_SUB_NOTE}`, {
|
|
240
|
+
url: z.string().describe("The URL to crawl"),
|
|
241
|
+
prompt: z.string().describe("Natural language prompt to guide the crawl (e.g. 'Find all product pages and extract pricing')"),
|
|
242
|
+
limit: z.number().optional().describe("Maximum pages to crawl"),
|
|
243
|
+
return_format: z.union([
|
|
244
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
245
|
+
z.array(z.string())
|
|
246
|
+
]).optional().describe("Output format"),
|
|
247
|
+
request: z.enum(["http", "chrome", "smart"]).optional().describe("Request type"),
|
|
248
|
+
proxy_enabled: z.boolean().optional().describe("Enable premium proxies"),
|
|
249
|
+
cookies: z.string().optional().describe("HTTP cookies"),
|
|
250
|
+
}, async (params) => {
|
|
251
|
+
const data = await apiRequest("POST", "/ai/crawl", params);
|
|
252
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
253
|
+
});
|
|
254
|
+
server.tool("spider_ai_scrape", `AI-powered structured data extraction using plain English. Describe what data you want and get structured JSON back — no CSS selectors needed. ${AI_SUB_NOTE}`, {
|
|
255
|
+
url: z.string().describe("The URL to scrape"),
|
|
256
|
+
prompt: z.string().describe("Natural language extraction prompt (e.g. 'Extract article title, author, and publish date')"),
|
|
257
|
+
return_format: z.union([
|
|
258
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
259
|
+
z.array(z.string())
|
|
260
|
+
]).optional().describe("Output format"),
|
|
261
|
+
request: z.enum(["http", "chrome", "smart"]).optional().describe("Request type"),
|
|
262
|
+
proxy_enabled: z.boolean().optional().describe("Enable premium proxies"),
|
|
263
|
+
cookies: z.string().optional().describe("HTTP cookies"),
|
|
264
|
+
}, async (params) => {
|
|
265
|
+
const data = await apiRequest("POST", "/ai/scrape", params);
|
|
266
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
267
|
+
});
|
|
268
|
+
server.tool("spider_ai_search", `AI-enhanced semantic web search. Uses intent understanding and relevance ranking to find the most relevant results. ${AI_SUB_NOTE}`, {
|
|
269
|
+
search: z.string().describe("The search query"),
|
|
270
|
+
prompt: z.string().optional().describe("Additional AI guidance for search results"),
|
|
271
|
+
num: z.number().optional().describe("Maximum results"),
|
|
272
|
+
fetch_page_content: z.boolean().optional().describe("Fetch full page content"),
|
|
273
|
+
country: z.string().optional().describe("Two-letter country code"),
|
|
274
|
+
language: z.string().optional().describe("Two-letter language code"),
|
|
275
|
+
tbs: z.string().optional().describe("Time range filter"),
|
|
276
|
+
return_format: z.union([
|
|
277
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
278
|
+
z.array(z.string())
|
|
279
|
+
]).optional().describe("Output format"),
|
|
280
|
+
}, async (params) => {
|
|
281
|
+
const data = await apiRequest("POST", "/ai/search", params);
|
|
282
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
283
|
+
});
|
|
284
|
+
server.tool("spider_ai_browser", `AI-powered browser automation using natural language. Describe actions like 'click login, fill email, submit form' and Spider automates the browser. ${AI_SUB_NOTE}`, {
|
|
285
|
+
url: z.string().describe("The URL to automate"),
|
|
286
|
+
prompt: z.string().describe("Natural language automation instructions (e.g. 'Click the login button, fill in email field, submit')"),
|
|
287
|
+
return_format: z.union([
|
|
288
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
289
|
+
z.array(z.string())
|
|
290
|
+
]).optional().describe("Output format"),
|
|
291
|
+
proxy_enabled: z.boolean().optional().describe("Enable premium proxies"),
|
|
292
|
+
cookies: z.string().optional().describe("HTTP cookies"),
|
|
293
|
+
}, async (params) => {
|
|
294
|
+
const data = await apiRequest("POST", "/ai/browser", params);
|
|
295
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
296
|
+
});
|
|
297
|
+
server.tool("spider_ai_links", `AI-powered intelligent link extraction and filtering. Describe what links you want and Spider uses AI to find and categorize them. ${AI_SUB_NOTE}`, {
|
|
298
|
+
url: z.string().describe("The URL to extract links from"),
|
|
299
|
+
prompt: z.string().describe("Natural language link filter (e.g. 'Find all product pages and documentation links')"),
|
|
300
|
+
limit: z.number().optional().describe("Maximum links"),
|
|
301
|
+
return_format: z.union([
|
|
302
|
+
z.enum(["markdown", "commonmark", "raw", "text", "xml", "bytes", "empty"]),
|
|
303
|
+
z.array(z.string())
|
|
304
|
+
]).optional().describe("Output format"),
|
|
305
|
+
request: z.enum(["http", "chrome", "smart"]).optional().describe("Request type"),
|
|
306
|
+
}, async (params) => {
|
|
307
|
+
const data = await apiRequest("POST", "/ai/links", params);
|
|
308
|
+
return { content: [{ type: "text", text: formatResult(data) }] };
|
|
309
|
+
});
|
|
310
|
+
// Start server
|
|
311
|
+
async function main() {
|
|
312
|
+
const transport = new StdioServerTransport();
|
|
313
|
+
await server.connect(transport);
|
|
314
|
+
}
|
|
315
|
+
main().catch((error) => {
|
|
316
|
+
console.error("Fatal error:", error);
|
|
317
|
+
process.exit(1);
|
|
318
|
+
});
|
|
319
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,QAAQ,GAAG,0BAA0B,CAAC;AAE5C,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAsB,EACtB,IAAY,EACZ,IAA8B,EAC9B,WAAoB;IAEpB,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,SAAS,EAAE,EAAE;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;IACxC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;QAC5C,MAAM;QACN,OAAO;QACP,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAa;IACjC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,2BAA2B;AAC3B,MAAM,WAAW,GAAG;IAClB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IACvF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;IACxG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAC1F,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAChG,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACrD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACnG,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACrF,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACtF,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC/E,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IACjG,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;IACxH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IAC/F,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACtF,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAClF,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACjF,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACjG,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC9E,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACnF,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAClG,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAChF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACjG,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACpG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC7E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACtF,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACxG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9E,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IAC3G,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC/D,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACvF,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACvF,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC3G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC5F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC1F,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACpF,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAC9H,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACnF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC3F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACpE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAClG,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACvE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACjF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC7E,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC9E,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACrF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACzF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;IAC3H,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACjH,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACtE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACjG,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAClF,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjF,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAClF,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACtF,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC/G,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1C,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACxC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;IACrH,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACnF,CAAC;AAEF,MAAM,qBAAqB,GAAG;IAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACnF,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjF,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACpE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC3F,CAAC;AAEF,sDAAsD;AACtD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,WAAW,CAAC;AACxE,MAAM,YAAY,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,qBAAqB,EAAE,CAAC;AAEjE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,qBAAqB;AAErB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,qMAAqM,EACrM,WAAW,EACX,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAiC,CAAC,CAAC;IACnF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,qJAAqJ,EACrJ,YAAY,EACZ,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,MAAiC,CAAC,CAAC;IACpF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,sGAAsG,EACtG;IACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACzF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC1E,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACjG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACnF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAChF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;IACvH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC/E,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAC/F,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC7E,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC3D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CACxD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,MAAiC,CAAC,CAAC;IACpF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,8FAA8F,EAC9F;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAChE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CACjF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAiC,CAAC,CAAC;IACnF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,iFAAiF,EACjF;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACjD,GAAG,qBAAqB;IACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC1E,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACvD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACjG,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAClE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnE,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC3D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAiC,CAAC,CAAC;IACxF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,sKAAsK,EACtK,YAAY,EACZ,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,MAAiC,CAAC,CAAC;IACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,wHAAwH,EACxH;IACE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACtD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACnF,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC7E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC/D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CACpF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,MAAiC,CAAC,CAAC;IACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,iDAAiD,EACjD,EAAE,EACF,KAAK,IAAI,EAAE;IACT,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,uCAAuC,EACvC;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC9D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAiC,CAAC,CAAC;IAC9F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,yEAAyE,EACzE;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACrF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACnE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAiC,CAAC,CAAC;IACxF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,2CAA2C;AAE3C,MAAM,WAAW,GAAG,4EAA4E,CAAC;AAEjG,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,0HAA0H,WAAW,EAAE,EACvI;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gGAAgG,CAAC;IAC7H,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC/D,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CACxD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,MAAiC,CAAC,CAAC;IACtF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kJAAkJ,WAAW,EAAE,EAC/J;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6FAA6F,CAAC;IAC1H,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CACxD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,MAAiC,CAAC,CAAC;IACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,uHAAuH,WAAW,EAAE,EACpI;IACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACnF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACtD,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACpE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACxD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;CACxC,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,MAAiC,CAAC,CAAC;IACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,wJAAwJ,WAAW,EAAE,EACrK;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uGAAuG,CAAC;IACpI,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CACxD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAiC,CAAC,CAAC;IACxF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,sIAAsI,WAAW,EAAE,EACnJ;IACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;IACnH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACtD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CACjF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,MAAiC,CAAC,CAAC;IACtF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "spider-cloud-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for the Spider web crawling and scraping API — crawl, scrape, search, and extract web data for AI agents, RAG pipelines, and LLMs.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"spider-cloud-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"start": "node dist/index.js",
|
|
13
|
+
"dev": "tsc --watch"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"mcp",
|
|
17
|
+
"model-context-protocol",
|
|
18
|
+
"spider",
|
|
19
|
+
"web-scraping",
|
|
20
|
+
"web-crawling",
|
|
21
|
+
"ai",
|
|
22
|
+
"llm",
|
|
23
|
+
"rag",
|
|
24
|
+
"ai-agents",
|
|
25
|
+
"data-extraction"
|
|
26
|
+
],
|
|
27
|
+
"author": "Spider <support@spider.cloud>",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/spider-rs/spider-mcp.git"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://spider.cloud",
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/spider-rs/spider-mcp/issues"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"README.md",
|
|
40
|
+
"LICENSE"
|
|
41
|
+
],
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
44
|
+
"zod": "^3.24.2"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"typescript": "^5.7.3",
|
|
48
|
+
"@types/node": "^22.13.4"
|
|
49
|
+
},
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=18"
|
|
52
|
+
}
|
|
53
|
+
}
|