MCP 服务器参考¶
Scrapling MCP 服务器通过 Model Context Protocol(MCP)提供十七个数据提取和浏览器操作工具。将 Scrapling 接入 AI 助手和智能体,就能通过对话提取数据,并使用反检测功能。
用下面的命令启动 MCP 服务器:
也可以直接导入服务器类:
from scrapling.core.ai import ScraplingMCPServer
server = ScraplingMCPServer()
server.serve(http=False, host="127.0.0.1", port=8000)
要使用自己的 Chromium 兼容浏览器程序,请传入 executable_path:
响应模型¶
页面获取和 HTTP 请求工具返回以下结构,每次调用返回一个响应。会话管理工具使用后面的模型。browser_screenshot 将页面或元素的截图和当前 URL 作为图像块和文本块返回。browser_extract 和 browser_actions 返回纯文本。两个网络工具通过后面的模型返回结构化 JSON。browser_evaluate 将结果转为 JSON,放在文本块中返回。
scrapling.core.ai.server.ResponseModel
¶
基类: BaseModel
flowchart TD
scrapling.core.ai.server.ResponseModel[ResponseModel]
click scrapling.core.ai.server.ResponseModel href "" "scrapling.core.ai.server.ResponseModel"
保存请求响应信息的数据结构。
网络请求模型¶
browser_network_requests 返回 NetworkRequestsModel,包含 requests、next_cursor、has_more 和 dropped_count。每个 NetworkRequestInfo 包含 id、url、method、resource_type 和 status。要读取下一页,将 next_cursor 作为 after_id 传入。has_more 表示当前历史记录中是否还有匹配结果。
browser_network_request 返回 NetworkRequestModel,包含 request_id、part、data 和 note。摘要和请求头或响应头是对象。完整保存的内容以字符串返回,即使响应内容是 JSON 也是如此。note 说明内容是否缺失,或头部信息是否不完整。
scrapling.core.ai._network_formatting.NetworkRequestInfo
¶
基类: BaseModel
flowchart TD
scrapling.core.ai._network_formatting.NetworkRequestInfo[NetworkRequestInfo]
click scrapling.core.ai._network_formatting.NetworkRequestInfo href "" "scrapling.core.ai._network_formatting.NetworkRequestInfo"
已记录浏览器请求的摘要。
scrapling.core.ai.server.NetworkRequestsModel
¶
基类: BaseModel
flowchart TD
scrapling.core.ai.server.NetworkRequestsModel[NetworkRequestsModel]
click scrapling.core.ai.server.NetworkRequestsModel href "" "scrapling.core.ai.server.NetworkRequestsModel"
已记录请求的摘要及分页信息。
scrapling.core.ai._network_formatting.NetworkRequestModel
¶
基类: BaseModel
flowchart TD
scrapling.core.ai._network_formatting.NetworkRequestModel[NetworkRequestModel]
click scrapling.core.ai._network_formatting.NetworkRequestModel href "" "scrapling.core.ai._network_formatting.NetworkRequestModel"
已保存请求中某一部分的完整内容,以及可选说明。
会话模型¶
用于会话管理的模型类:
scrapling.core.ai.server.SessionInfo
¶
flowchart TD
scrapling.core.ai.server.SessionInfo[SessionInfo]
scrapling.core.ai.server.SessionCreatedModel[SessionCreatedModel]
scrapling.core.ai.server.SessionCreatedModel --> scrapling.core.ai.server.SessionInfo
click scrapling.core.ai.server.SessionInfo href "" "scrapling.core.ai.server.SessionInfo"
click scrapling.core.ai.server.SessionCreatedModel href "" "scrapling.core.ai.server.SessionCreatedModel"
已打开的浏览器会话信息。
created_at
class-attribute
instance-attribute
¶
is_alive
class-attribute
instance-attribute
¶
settings
class-attribute
instance-attribute
¶
settings = Field(
default_factory=dict,
description="The effective settings this session was created with.",
)
session_id
class-attribute
instance-attribute
¶
session_type
class-attribute
instance-attribute
¶
scrapling.core.ai.server.SessionCreatedModel
¶
基类: BaseModel
flowchart TD
scrapling.core.ai.server.SessionCreatedModel[SessionCreatedModel]
click scrapling.core.ai.server.SessionCreatedModel href "" "scrapling.core.ai.server.SessionCreatedModel"
创建新会话时返回的响应。
scrapling.core.ai.server.SessionClosedModel
¶
基类: BaseModel
flowchart TD
scrapling.core.ai.server.SessionClosedModel[SessionClosedModel]
click scrapling.core.ai.server.SessionClosedModel href "" "scrapling.core.ai.server.SessionClosedModel"
关闭会话时返回的响应。
MCP 服务器类¶
MCP 服务器的主类提供以下工具:
make_request:通过 HTTP 获取一个 URL,模拟浏览器,并自动关闭客户端。支持 GET、POST、PUT 和 DELETE。-
browser_fetch_once:用隐身浏览器获取一个 URL,执行 JavaScript、处理 Cloudflare 验证,然后关闭浏览器。如果之后还要操作页面或查看网络历史记录,请使用持久会话。 -
browser_extract:读取当前页面或元素,输出适合 AI 的结构化视图、HTML、Markdown 或文本,无需重新加载。表单和操作结果会保留。结构化视图包含元素的角色、名称、引用、位置和尺寸。正则表达式搜索返回匹配行、附近内容和父节点。 -
browser_actions:在一次调用中组合鼠标移动、悬停、点击、滚动、填写表单、快捷键、对话框响应和等待。可以接受或关闭提示和确认框,也可以在输入对话框中填写内容。例如,填写搜索框、提交、等待并打开结果,无需每一步都调用一次工具。移动和点击支持选择器、结构化视图中的引用或坐标。工具会等待元素出现,并将其滚动到可见区域。支持分步移动、鼠标左键、右键和中键点击、双击,以及嵌套区域内的滚动。
按住鼠标按钮即可拖动项目或移动滑块。AI 可以在按住按钮的同时查看页面,继续移动以调整位置,然后在目标位置释放按钮。
用选择器或结构化视图中的引用选择表单字段。可以输入文字、勾选或取消勾选复选框、选择单选按钮,以及按标签选择原生下拉框中的一个或多个选项。可以替换或清空文字,也可以从光标处继续输入。快捷键作用于当前焦点。慢速模式会在字符和操作之间加入随机停顿。
用选择器或结构化视图中的引用等待内容或加载遮罩达到所需状态。也可以等待页面加载事件、网络空闲或指定时长。
-
browser_evaluate:在当前页面执行 JavaScript,用于自定义数据提取、计算、读取应用状态或修改内容。支持异步脚本,并返回 JSON 结果。 browser_observe: 通过当前页面的一小段图像序列,帮助智能体理解运动和变化。browser_network_requests:搜索跨标签页、页面跳转和操作的已完成浏览器请求。查找保存的 API 请求、HTTP 错误和重定向。默认隐藏静态资源,减少无关结果。失败或未完成的请求会被跳过。返回可分页的结构化数据。browser_network_request:以结构化 JSON 读取已保存请求的摘要、头部信息、发送的数据或文本内容,无需再次发送请求。所选部分会完整返回。页面跳转后仍可读取已保存的响应,包括 4xx 和 5xx HTTP 响应。记录完成后才会出现在历史中。读取历史或关闭会话不会等待尚未完成的记录,它们可能在页面跳转或关闭时丢失。字节数据来自 Playwright,可能与服务器发送的原始字节不同。保存的字节是有效 UTF-8 时,使用该编码解码,与 Playwright 一致;否则使用声明的字符集。只读取和保存具有受支持的文本Content-Type的响应内容。二进制、缺失或未知类型只保留元数据和头部信息,不读取内容。这不会改变页面加载方式。历史记录有大小限制。可选的说明会指出内容不是文本、超过大小限制或无法读取等情况。请在关闭 MCP 会话前读取需要的数据。browser_fetch:在已打开的隐身浏览器会话中获取页面,并提取 HTML、Markdown、文本或结构化视图。视图可以覆盖整页或单个元素,并包含供后续操作使用的引用、位置和尺寸。
scrapling.core.ai.server.ScraplingMCPServer
¶
创建 Scrapling MCP 服务器。
| 参数 | 说明 |
|---|---|
executable_path
|
为浏览器工具设置兼容 Chromium 的浏览器可执行文件路径,作为全局默认值。此项可选。如未指定,则使用已设置的 SCRAPLING_EXECUTABLE_PATH 环境变量。
类型:
|
auth_token
|
可选的共享 token,客户端必须通过
类型:
|
源代码位于 scrapling/core/ai/server.py
browser_open
async
¶
browser_open(
session_id=None,
headless=True,
real_chrome=False,
timezone_id=None,
locale=None,
useragent=None,
proxy=None,
cdp_url=None,
new_context=True,
executable_path=None,
cookies=None,
hide_canvas=False,
block_webrtc=False,
allow_webgl=True,
additional_args=None,
)
Open a reusable local or remote browser session. Pass per-request options to browser_fetch.
源代码位于 scrapling/core/ai/server.py
browser_save_state
async
¶
将浏览器 Cookie、本地存储 和 IndexedDB 保存为兼容 Playwright 的 JSON。不包含 sessionStorage。
源代码位于 scrapling/core/ai/server.py
browser_load_state
async
¶
用兼容 Playwright 的 JSON 文件中的数据替换浏览器 Cookie、本地存储 和 IndexedDB。
不更改 sessionStorage 和已打开的标签页。获取或重新加载页面后,才能使用恢复的登录状态。
源代码位于 scrapling/core/ai/server.py
open_request_session
async
¶
打开供 session_make_request 使用的可复用 HTTP 会话,保留 Cookie、连接和请求设置。
源代码位于 scrapling/core/ai/server.py
close_session
async
¶
关闭会话并释放其资源。
源代码位于 scrapling/core/ai/server.py
list_sessions
async
¶
列出已注册的会话、它们的状态和实际生效的设置。
源代码位于 scrapling/core/ai/server.py
browser_network_requests
async
¶
browser_network_requests(
session_id,
url_pattern=None,
include_static=False,
after_id=0,
limit=50,
)
List completed requests across page changes, with IDs and pagination. Recording starts when the browser session opens and closing does not wait for running captures.
源代码位于 scrapling/core/ai/server.py
browser_network_request
async
¶
完整读取已保存请求的某一部分,无需重新发送请求,并返回结构化数据和可用性说明。
源代码位于 scrapling/core/ai/server.py
browser_extract
async
¶
browser_extract(
session_id,
extraction_type="snapshot",
target=None,
depth=None,
boxes=True,
search=None,
main_content_only=True,
)
无需导航,即可以快照、HTML、Markdown 或文本形式读取当前页面或某个元素。返回纯文本;快照搜索会保留引用、祖先路径和附近三行上下文。
源代码位于 scrapling/core/ai/server.py
browser_actions
async
¶
Chain all kinds of browser actions. Do actions without multiple calls or plan ahead to execute a sequence of actions. Run mouse, field, key, dialog, and wait actions on the current page in order. Load waits observe the current document; wait for a result element for delayed navigation. Stops on the first error, identifying its action; partial effects remain. No retries. Element mouse targets auto-wait and scroll into view; coordinates and wheel do not wait for navigation or scrolling. mouse_down holds across calls for observation and further moves; mouse_up releases, including after errors. For drag and drop, move over the target twice before releasing. Cancelled/timed-out clicks attempt release.
源代码位于 scrapling/core/ai/server.py
browser_evaluate
async
¶
在当前页面运行 JavaScript,等待 Promise 完成,并返回 JSON 文本,不附带快照。脚本应返回兼容 JSON 的值;null/undefined 会变为 null。失败时不会撤销脚本已产生的效果。取消操作会停止等待,但可能不会停止脚本。
源代码位于 scrapling/core/ai/server.py
browser_screenshot
async
¶
browser_screenshot(
session_id,
image_type="png",
full_page=False,
quality=None,
timeout=30000,
selector=None,
ref=None,
)
无需导航,即可截取当前页面或某个元素;返回图片和当前 URL。截取元素时,会等待元素并将其滚动到可见区域。截图前如需其他等待,请使用 browser_actions。
源代码位于 scrapling/core/ai/server.py
browser_observe
async
¶
Inspect browser page motion through a short sequence of timestamped viewport images. The page keeps running during and after capture. Use this tool when you get any challenge that require timed actions like games, appearing/disappearing CAPTCHAs, or interacting with any moving elements.
源代码位于 scrapling/core/ai/server.py
make_request
async
staticmethod
¶
make_request(
url,
method="GET",
impersonate="chrome",
extraction_type="markdown",
css_selector=None,
main_content_only=True,
params=None,
data=None,
json=None,
headers=None,
cookies=None,
timeout=30,
follow_redirects="safe",
max_redirects=30,
retries=3,
retry_delay=1,
proxy=None,
proxy_auth=None,
auth=None,
verify=True,
http3=False,
stealthy_headers=True,
)
发送不执行 JavaScript 的 HTTP 请求。适用于防护程度低到中等的网站。
源代码位于 scrapling/core/ai/server.py
718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 | |
browser_fetch_once
async
¶
browser_fetch_once(
url,
extraction_type="markdown",
css_selector=None,
main_content_only=True,
headless=True,
google_search=True,
real_chrome=False,
wait=0,
proxy=None,
timezone_id=None,
locale=None,
extra_headers=None,
useragent=None,
hide_canvas=False,
executable_path=None,
timeout=30000,
disable_resources=False,
wait_selector=None,
cookies=None,
network_idle=False,
wait_selector_state="attached",
block_webrtc=False,
allow_webgl=True,
solve_cloudflare=False,
additional_args=None,
pierce_shadow=False,
)
通过隐身浏览器获取页面,并执行 JavaScript 渲染。
源代码位于 scrapling/core/ai/server.py
796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 | |
browser_fetch
async
¶
browser_fetch(
url,
session_id,
extraction_type="markdown",
css_selector=None,
main_content_only=True,
wait=0,
timeout=30000,
google_search=True,
network_idle=False,
load_dom=True,
disable_resources=False,
wait_selector=None,
wait_selector_state="attached",
extra_headers=None,
blocked_domains=None,
solve_cloudflare=False,
pierce_shadow=False,
)
通过已打开的隐身浏览器会话获取一个 URL。选项仅对本次请求生效。
源代码位于 scrapling/core/ai/server.py
session_make_request
async
¶
session_make_request(
url,
session_id,
method="GET",
extraction_type="markdown",
css_selector=None,
main_content_only=True,
params=None,
data=None,
json=None,
headers=None,
cookies=None,
timeout=30,
follow_redirects="safe",
max_redirects=30,
retries=3,
retry_delay=1,
auth=None,
verify=True,
http3=False,
stealthy_headers=True,
)
使用会话的 Cookie、连接、浏览器模拟和代理发送 HTTP 请求。选项对本次请求生效。
源代码位于 scrapling/core/ai/server.py
serve
¶
启动 MCP 服务器。
| 参数 | 说明 |
|---|---|
http
|
使用 streamable-http 传输方式提供服务,替代 stdio。
类型:
|
host
|
启用
类型:
|
port
|
启用
类型:
|
allowed_hosts
|
允许的主机名,设置后会启用 DNS 重绑定防护。
类型:
|
allow_unauthenticated
|
不使用 token 启动 streamable-http。该传输方式默认要求身份验证,此选项用于明确关闭身份验证。
类型:
|