关于 QuanticData — Web Scraping MCP Server
QuanticData MCP Server 将网页抓取、搜索、站点发现与采集器等能力提供给 AI Agent,适用于网页研究和结构化数据收集。它通过 QuanticData API 工作,并支持本地运行或连接托管的远程服务。
主要功能
- 01网页抓取并输出 Markdown、HTML 或文本
- 02Google、Bing 和 DuckDuckGo 搜索
- 03站点地图发现与异步爬取
- 0474 种现成采集器及数据集创建
- 05代理管理与地理位置配置
适用场景
- 01搜索并整理网页来源供 AI 使用
- 02抓取站点文档并汇总内容
- 03采集地图、商品或企业信息
- 04为请求生成并配置代理
MCP 相关
向 MCP 客户端提供网页抓取、搜索、爬取、数据采集及代理管理工具。可通过本地进程或托管的 Streamable HTTP 远程服务连接。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.quanticdata.io/mcpclaude mcp add --transport http quanticdata https://api.quanticdata.io/mcp{"mcpServers":{"quanticdata":{"type":"http","url":"https://api.quanticdata.io/mcp"}}}在 Cursor 中打开{"servers":{"quanticdata":{"type":"http","url":"https://api.quanticdata.io/mcp"}}}在 VS Code 中打开{"mcpServers":{"quanticdata":{"type":"http","url":"https://api.quanticdata.io/mcp"}}}{"mcpServers":{"quanticdata":{"serverUrl":"https://api.quanticdata.io/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://api.quanticdata.io/mcp需要授权工具
28| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 否 | 要抓取的页面 URL(仅当传入 `html` 进行转换时可选) |
| format | enum | 否 | 输出格式(默认值为 markdown)markdown | html | text |
| formats | array | 否 | 在 payload.formats 中一并返回的其他格式,例如 ['markdown','text'] |
| include_links | boolean | 否 | 在 payload.links 中返回所有去重后的页面绝对链接 |
| content_mode | enum | 否 | smart(默认值):整个页面,但不含导航栏/页脚/Cookie 界面。article:仅限 Readability 提取的主要文章(新闻/博客)。full:原样返回整个正文。smart | article | full |
| engine | enum | 否 | auto(默认值):先尝试普通 HTTP;页面需要 JavaScript 或 HTTP 请求被拒绝时使用无头浏览器。tls:仅普通 HTTP,绝不使用浏览器——相当于无 JavaScript 爬虫所见的内容,适用于 SEO 检查。render:始终使用浏览器。auto | tls | fetch | render |
| render | boolean | 否 | 强制使用无头浏览器(执行 JS) |
| mode | enum | 否 | summary:仅返回元数据(title、description、canonical、contentLength、status、engine、bytes),不包含页面内容——审计页面而非阅读页面时使用summary |
| country | string | 否 | 代理出口的 ISO 国家代码,例如 'us' |
| ai_prompt | string | 否 | 自然语言指令——LLM 会将页面转换为结构化 JSON |
| ai_schema | object | 否 | 用于确定性 AI 提取的 JSON Schema;结果位于 payload.ai.data 下 |
| extract | object | 否 | 结构化提取架构:{ field: "css selector" | { selector, attr, all, fns } }。`fns` 是对值运行的转换流水线——例如,{ "price": { "selector": ".price", "fns": ["amount_from_string"] } } 会返回数字而非文本。函数:amount_from_string、amount_range_from_string、convert_to_float/int/str、trim、lower、upper、{regex_search|regex_find_all: "pat"}、{replace:{from,to}}、{join:","}、{select_nth:0}、length、unique、max、min、average、product。 |
| app_state | any | 否 | 提取页面自身的 hydration 状态(Next.js __NEXT_DATA__、Nuxt、嵌入式 JSON islands),并放入 payload.metadata.appState。这是 SPA 保存真实数据的位置——例如选择器背后的价格、库存、下载量和商品列表。即使 DOM 只显示空壳,也通常能在无需浏览器渲染的情况下回答问题。true/'auto':仅保留信息丰富的部分(推荐)。'raw':返回完整数据块,最多 512KB。 |
| parser | object | 否 | 你自己的解析规则,采用 CSS 选择器列表——当你了解页面且不想依赖启发式规则时使用。include:仅保留这些子树(定向提取,例如 ['article.post'])。exclude:删除我们保留的站点专属界面元素。keep:保护智能模式可能会移除的部分(侧边栏、对话框、表单)。 |
| parser.include | array | 否 | |
| parser.exclude | array | 否 | |
| parser.keep | array | 否 | |
| reveal_hidden | boolean | 否 | 仅限 render 层级:捕获前打开 <details>/折叠面板并逐个点击所有标签页,将每个显示出的面板追加到页面中。适用于带标签页的代码示例或规格折叠面板,因为普通渲染只能捕获当前可见的版本。 |
| xhr | boolean | 否 | 将页面的 XHR/fetch 流量(URL、method、status、response body)记录到 payload.xhr。此操作会强制进行浏览器渲染。SPA 自身的 JSON API 通常比 DOM 干净得多——用它来发现 API,然后使用 fetch_resource 直接返回 API 内容。 |
| fetch_resource | string | 否 | 与页面网络请求匹配的正则表达式:第一个匹配响应的 BODY 将替代页面 HTML 成为结果(例如 '/api/products' 可直接获取 SPA 的 JSON)。强制进行渲染。若没有匹配项,则失败并返回 504。 |
| preset_id | string | 否 | 运行已存储的解析器预设(参见 save_parser_preset),而不是传入 `extract` 选择器。结果会以完全相同的方式写入 payload.data;同时会对运行结果评分,使预设能够检测效果衰退并自行修复。 |
| actions | array | 否 | 捕获前按顺序执行浏览器交互(强制渲染)。每项为一个对象:{"click":"#sel"}、{"clickText":"Accept"}(按可见文本点击——无需知道 CSS 即可关闭同意提示),{"type":{"selector":"#q","text":"shoes"}}、{"scroll":"bottom"}、{"wait":1000}、{"waitForSelector":".results"}。添加 "optional":true 可跳过未命中的操作,或添加 "timeoutMs":N 为单个操作设置超时。 |
| frontmatter | boolean | 否 | 在前面添加 YAML front-matter(title、url、canonical、description、author、date),使 Markdown 可独立用于 RAG/Obsidian 工作流。 |
| links_mode | enum | 否 | 链接呈现方式。inline(默认):[text](url)。footnote:将 URL 移至末尾的编号引用列表。strip:仅保留链接文本——仅需正文时,可将链接密集页面的 Token 数减少 30-48%。inline | footnote | strip |
| toc | boolean | 否 | 在前面添加根据页面标题生成的目录。 |
| max_tokens | integer | 否 | 将 Markdown 限制为约此 Token 数,在章节边界处截断(绝不在表格或代码块中间截断),并注明省略了多少内容。 |
| query | string | 否 | 你在页面上要查找的内容。仅保留相关章节(对内容块进行 BM25 评分,并保留标题)——无需耗尽整个 Token 预算,即可从超长页面中查找一项事实。 |
| highlights | integer | 否 | 与 `query` 搭配时:还会在 payload.highlights 中返回最相关的 N 段内容。 |
| chunk | object | 否 | 将输出分段到 payload.chunks[],用于 RAG/向量数据库摄取——每个分块都包含标题路径和 Token 数。围栏代码块和表格不会被拆分。 |
| chunk.by | enum | 否 | heading | sentence | tokens |
| chunk.size | integer | 否 | |
| chunk.overlap | integer | 否 | |
| images_mode | enum | 否 | inline(默认)保留 ;'alt' 仅保留替代文本;'strip' 移除图片inline | alt | strip |
| summary_sections | boolean | 否 | 追加“本页链接”/“本页图片”章节——便于决定下一步访问哪里。 |
| html | string | 否 | 转换你已有的 HTML,而不是抓取:不会使用代理带宽,并且仍会运行完整的解析器流水线。如果希望将相对链接转换为绝对链接,也请传入 `url`。 |
| content_modes | array | 否 | 在一次抓取中,于 payload.contents 下返回多个内容范围(例如比较 smart 与 full)。 |
| cookies | object | 否 | 随请求发送的 Cookie,格式为 name→value(例如同意或语言区域 Cookie)。仅发送用户为此网站提供的 Cookie。 |
详细介绍
QuanticData MCP 服务
将 QuanticData 接入 Claude、Cursor 和任何 MCP 客户端。通过具备真实浏览器 TLS 指纹的住宅代理,为 AI Agent 提供实时网页访问能力——抓取、搜索、映射和爬取网页, 让被普通机器人拦截的页面也能顺利访问。它还会将你当前套餐中各种类型的原始代理端点(住宅、移动、数据中心、ISP、IPv6)提供给 Agent,可直接接入任何 HTTP 客户端。
它使用你自己的 qd_live_ 密钥调用 QuanticData 公共 Scraper API,
因此没有内部机密,并且可在本地运行。
工具
| 工具 | 功能说明 |
|---|---|
scrape | 抓取一个 URL → Markdown/HTML/文本,包括 PDF/Office 文档。支持多格式输出、绝对链接收集、JSON-LD 元数据、结构化 CSS 提取、AI 提示词/JSON 架构提取,以及 mode: summary。 |
unlock | Web Unlocker:通过住宅网络出口重放任意 HTTP 请求(方法、标头、正文),使用真实浏览器 TLS 指纹;在新 IP 上重试,并将被拦截的 GET 升级为真实浏览器请求。返回原始响应(状态、标头、正文);仍被拦截的页面会带有标记(blocked、blockClass、vendor),绝不会悄然返回 200。不会解决交互式验证码(blockClass: "captcha")。 |
seo_audit | 以无 JS 机器人和完整渲染两种方式抓取 URL,返回两种 SEO 视图及其差异(仅 JS 中的内容、变更的标题/描述、缺失的 canonical),以及面向机器人的元数据(robots、OG、JSON-LD)。 |
ai_visibility | ChatGPT、Claude、Perplexity、Google AI Overview 和 Bing Copilot 能否读取并引用某个页面?页面审计(robots.txt 中的 24 个 AI 爬虫、Content-Signal、以 GPTBot 身份抓取、noindex/nosnippet/noai、无需 JS 的文本、JSON-LD 实体、符合答案形式的文案、带时效信息的日期、作者、来源)按支柱评分,并提供拦截因素、证据和修复建议;还可选择开启引用面板,向各引擎提问并报告引用/提及/排名、声量占比,以及在您缺席的问题中胜出的是谁。 |
search | 结构化 Google/Bing/DuckDuckGo 搜索结果。将 render: true 设为启用 Google AI Overview、PAA、Knowledge Graph 及其他 JS 增强内容。 |
search_and_read | SERP → 抓取排名靠前的页面 → 提供带编号、可直接引用的来源,以及适用于 AI 提示词、受 token 数量限制的上下文字符串。 |
search_bulk / search_bulk_status | 异步多页分页,合并自然搜索结果及第一页的 AI/零点击增强内容。 |
map | 快速发现 URL(站点地图 + 首页链接),不进行完整爬取。默认采用精简输出:最多返回 limit 个 URL(100),并附带全站 total 和各分区的 summary;使用 group_by: path 获取路径树。 |
crawl / crawl_status | 异步 BFS 网站爬取 → 每个页面生成 Markdown;可轮询查看进度。 |
batch / batch_status | 异步抓取多个 URL;使用 mode: summary 仅获取元数据条目。通过 since 游标增量轮询;仅在使用 include_content 时返回页面内容。 |
create_dataset / dataset_status | 由提示词驱动的结构化数据集收集,并设置预算和行数限制。 |
list_collectors / run_collector / collector_run_status | 现成的 Collectors:使用语义输入(关键词 + 地点、地点 ID、产品 ID、域名等)运行有版本标记的抓取器,而非使用 URL — Google Maps 地点、地点评价、Google Jobs/News/Shopping、产品优惠、酒店、本地商家潜在客户、网站联系人、公司简介。按交付的行数计费;异步运行通过 run_id 轮询,行数据可导出为 CSV。 |
list_proxies | 列出所有类型的代理服务 — Residential Basic/Premium/Private、Mobile、Mobile V2、Datacenter、ISP、IPv6 — 并显示剩余带宽、到期时间及用于生成代理的 orderId。 |
generate_proxies | 从任何有效套餐生成可直接使用的代理字符串(含凭据):支持地理位置定向(国家/州/城市/ISP/ASN)、轮换或粘性会话、HTTP 或 SOCKS5,以及多种输出格式。 |
proxy_locations | 按套餐类型列出有效的地理位置定向值:国家、州、城市、ASN,或包含 ISP 代码的完整位置树。 |
whitelist_ip | 管理支持此功能的套餐的 IP 身份验证白名单(添加/列出/移除),包括 Mobile V2 IP 身份验证代理列表。 |
report | 在 Agent 内向团队发送反馈:错误(结果错误/为空、发生错误、页面被拦截)、缺失的功能或 Collector,以及问题。无需 API 密钥即可使用。 |
快速开始
无需安装 — npx 会按需获取 quanticdata-mcp(Node.js 18+)。
Claude Code(一条命令):
claude mcp add quanticdata \
-e QUANTICDATA_API_KEY=qd_live_your_key_here \
-- npx -y quanticdata-mcp
Claude Desktop / Cursor / 任意 MCP 客户端(claude_desktop_config.json、.cursor/mcp.json 或 .mcp.json):
{
"mcpServers": {
"quanticdata": {
"command": "npx",
"args": ["-y", "quanticdata-mcp"],
"env": { "QUANTICDATA_API_KEY": "qd_live_your_key_here" }
}
}
}
托管端点(远程 MCP)
同一服务也会作为托管的 Streamable HTTP 端点运行,供更倾向于使用 URL 而非本地包的客户端使用:
https://api.quanticdata.io/mcp
使用 OAuth 连接(无需复制密钥)
该端点支持 MCP 授权规范(OAuth 2.1)。在支持此功能的客户端中,将上述 URL 添加为远程服务即可,无需其他操作:
- 客户端会打开 QuanticData.io 登录页面。
- 登录(或创建免费账户),然后点击 允许访问。
- 客户端已连接。API 密钥页面上会出现一个名为
MCP · <client>的密钥;删除它即可断开客户端连接。
底层机制:授权服务元数据位于
https://app.quanticdata.io/.well-known/oauth-authorization-server,
受保护资源元数据位于
https://api.quanticdata.io/.well-known/oauth-protected-resource/mcp,
支持动态客户端注册(RFC 7591)和客户端 ID 元数据文档,
要求使用 PKCE(S256),访问令牌有效期为 1 小时并使用轮换刷新令牌,令牌
绑定到此端点(RFC 8707)。使用量会像任何密钥一样从你的余额中扣费。
或发送 API 密钥
接受 bearer 令牌的客户端可以跳过 OAuth:每个请求都会通过
Authorization 标头(或 X-Api-Key)携带密钥,服务端不会存储任何内容。
curl -X POST https://api.quanticdata.io/mcp \
-H "Authorization: Bearer qd_live_your_key_here" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
如果请求中既没有令牌也没有密钥,服务会返回 401,并附带一个
WWW-Authenticate 标头,指向上述元数据:这会促使支持 OAuth 的客户端开始登录。
自托管该端点需使用此包中的另一个二进制文件。设置
QUANTICDATA_API_KEY 后,它会为未发送凭据的调用者提供该账户的服务:
QUANTICDATA_API_KEY=qd_live_… PORT=9310 npx -y quanticdata-mcp-remote
从源码运行(开发)
npm install
npm run build
然后让客户端指向本地构建版本,而不是 npx:
{
"mcpServers": {
"quanticdata": {
"command": "node",
"args": ["/absolute/path/to/scraper-mcp/dist/index.js"],
"env": {
"QUANTICDATA_API_KEY": "qd_live_your_key_here"
}
}
}
}
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
QUANTICDATA_API_KEY | — | 必填。 你的 qd_live_ 密钥。 |
QUANTICDATA_API_BASE | https://api.quanticdata.io/v1 | 用于覆盖暂存环境/自托管地址。 |
QUANTICDATA_TOOLS | 全部 28 个 | 仅加载部分工具:工具名称(search,scrape)或预设(lite、web、research、collectors、proxies)。见下文。 |
仅适用于自托管远程端点(quanticdata-mcp-remote),可选:
| 变量 | 默认值 | 说明 |
|---|---|---|
MCP_OAUTH_RESOURCE | https://api.quanticdata.io/mcp | 此端点作为 OAuth 资源使用。 |
MCP_OAUTH_ISSUER | https://app.quanticdata.io | 资源元数据中声明的授权服务。 |
MCP_OAUTH_INTROSPECT_URL | http://127.0.0.1:3090/api/v1/internal/oauth/introspect | OAuth 访问令牌的验证地址。 |
MCP_INTERNAL_TOKEN | — | 用于内省请求的密钥。未设置 = 仅接受 API 密钥。 |
本地模型(Ollama、LM Studio、Qwen、Open WebUI)
这 28 个工具定义约占 14,000 个令牌。Ollama 默认的 4K 上下文无法容纳它们,而 32K 上下文在显示第一页之前也会损失近一半的可用空间。请减少加载的工具:
| 预设 | 工具 | 定义令牌数 |
|---|---|---|
lite | search_and_read | ~360 |
web | search、search_and_read、scrape | ~4,200 |
research | web + map、batch、batch_status | ~5,100 |
collectors | list_collectors、run_collector、collector_run_status | ~830 |
proxies | list_proxies、generate_proxies、proxy_locations、whitelist_ip | ~1,800 |
使用 stdio 时,设置 QUANTICDATA_TOOLS=web。使用托管端点时,在
URL 后添加 ?tools=web,并在 Bearer 标头中发送 API 密钥:
https://api.quanticdata.io/mcp?tools=web。可以组合名称:?tools=lite,collectors。
示例提示词
- "抓取 example.com 上的定价页面,并告诉我有哪些套餐及其价格。"
- "在美国的 Google Shopping 上搜索 'nintendo switch oled',列出最便宜的 5 个。"
- "映射 docs.example.com,然后仅抓取 /guides/ 页面并进行总结。"
- "列出我的代理套餐,并生成 5 个采用 socks5 URL 格式的美国粘性住宅代理。"
- "为我获取一个位于德国的轮换移动代理,并将我的服务器 IP 203.0.113.7 加入白名单。"
隐私政策
完整政策:https://quanticdata.io/privacy
此服务发送的内容。 它在你的计算机上运行,只与 QuanticData 公共 API https://api.quanticdata.io/v1 通信,并使用你自己的 qd_live_ 密钥进行身份验证。每次调用都会携带你(或你的 Agent)传入的参数——目标 URL 或查询内容,以及任何提取提示词。不会读取或传输你计算机上的其他任何内容:此服务无法访问文件系统、Shell 或剪贴板。
我们收集的内容。 你提供的账户数据(姓名、电子邮件、账单信息),以及为计费、防滥用和支持而保留的请求日志:目标 URL 或查询内容、时间戳、响应状态、传输的字节数和所用的 API 密钥。我们不会保留抓取的页面内容,但为返回结果所需的内容除外。
你通过此服务收集的数据。 由你决定收集哪些公开网络数据,且你是该数据的控制者——我们仅代表你处理这些数据以完成你的请求。你有责任合法使用此服务、遵守所访问网站的条款,并妥善处理通过此服务收集的任何个人数据。
共享。 我们不会出售个人数据。我们仅与运营此服务的处理方共享数据——支付服务提供商、电子邮件发送服务、托管服务、CDN 和分析服务——并通过合同约束他们保护数据;此外,还会与路由你流量的上游代理网络共享数据(仅限连接元数据,绝不包括你的账户详情)。法律要求时,我们可能会披露数据。
保留期限。 账户数据在账户存续期间保留;请求日志则在滚动时间窗口内保留,用于计费和滥用调查。你可以随时请求删除数据。
你的密钥。 Claude Desktop 会将密钥存储在操作系统密钥链中,并将其作为环境变量传递给此服务。密钥绝不会写入软件包,也绝不会发送到 QuanticData API 以外的任何地方。请前往 https://app.quanticdata.io/api-keys 撤销或轮换密钥。
联系方式。 [email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。