mcpField
S
Scrapling MCP Server

Scrapling MCP Server

本地服务
scrapling.readthedocs.io浏览器自动化90.2k今天更新

关于 Scrapling MCP Server

Scrapling MCP Server 是 Scrapling 网页抓取框架提供的 MCP 服务,面向需要通过 AI Agent 或编程方式采集网页数据的场景。它结合 HTTP 抓取、隐身浏览器、页面解析与并发爬取,并支持动态页面和 CSS 选择器。

主要功能

  1. 01HTTP 请求与隐身浏览器
  2. 02渲染 JavaScript 页面
  3. 03CSS、XPath 与文本提取
  4. 04并发爬取及代理轮换
  5. 05导出 JSON、JSONL、CSV、XML
  6. 06输出清理后的 Markdown

适用场景

  1. 01通过 AI Agent 抓取网页并提取数据
  2. 02采集需要 JavaScript 渲染的页面
  3. 03将网站内容整理为 Markdown
  4. 04爬取网站并导出结构化结果

MCP 相关

MCP 服务向 AI Agent 暴露网页抓取能力,包括 HTTP 请求、浏览器操作、截图、已保存的登录状态和后台 API 响应;也支持通过 CDP 连接远程浏览器及 HTTP 传输认证。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"d4vinci-scrapling": {
"command": "uvx",
"args": [
"scrapling"
]
}
}
}
启动命令uvx scrapling

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiscrapling0.4.15
ocighcr.io/d4vinci/scrapling

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Scrapling 海报
轻松抓取现代 Web 网页

D4Vinci%2FScrapling | Trendshift Star History Rank
README بالعربية README en Español README em Português (Brasil) README en Français README auf Deutsch 简体中文版自述文件 日本語のREADME Русская версия README 한국어 README
Tests PyPI version Docker Pulls PyPI package downloads Static Badge OpenClaw Skill
Discord X (formerly Twitter) Follow
Supported Python versions

选择方法 · 抓取器 · 爬虫 · 代理轮换 · CLI · MCP

Scrapling 是一个 Python 网页抓取框架,将快速 HTTP 请求、隐身浏览器、强大的解析功能和并发爬取整合到一个库中。

抓取静态页面、渲染 JavaScript、与网站交互,并从其背后的 API 调用中提取数据。构建爬虫,使用可复用会话、代理轮换、自动重试、暂停/恢复和内置数据导出功能。

通过 Python、终端,或借助 MCP 服务和 Agent Skill 从 AI Agent 使用它。从提取几个字段,到将整个网站采集为整洁的 Markdown,Scrapling 涵盖了完整的抓取工作流。

使用 Scrapling 可以做什么

  • 抓取与交互:快速 HTTP 请求、隐身浏览器、JavaScript 渲染、Cloudflare Turnstile/Interstitial 处理、持久会话和后台 API 捕获。
  • 解析与提取:CSS、XPath、文本和正则表达式搜索、自适应元素跟踪、相似元素匹配,以及整洁的 Markdown 输出。
  • 爬取与导出:并发爬虫、代理轮换、重试、AutoThrottle、暂停/恢复、流式处理、现成模板,以及 JSON/JSONL/CSV/XML 导出。
  • 使用 AI 或从终端抓取:供 AI Agent 浏览和提取数据的 MCP 服务、Agent Skill、CLI 命令和交互式 Shell。

从单个页面开始:

from scrapling.fetchers import Fetcher

page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()
print(quotes)

或者使用爬虫扩展规模:

from scrapling.spiders import Spider, Response

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com/"]

    async def parse(self, response: Response):
        for quote in response.css('.quote'):
            yield {
                "text": quote.css('.text::text').get(),
                "author": quote.css('.author::text').get(),
            }

result = QuotesSpider().start()
print(len(result.items))
result.items.to_json("quotes.json")

这会打印 10,并将引言和作者保存到 quotes.json。

DataImpulse 专注于为您的业务开发定制代理服务。您可以从任何地方发出请求、采集数据,并通过我们的优质代理享受快速连接。

# 白金赞助商
README 配图 NodeMaven - 市面上 IP 质量最高、用于网页抓取和自动化的高效代理提供商。使用代码 SCRAPLING35 可享 35% 折扣。
README 配图 Scrapling 可处理 Cloudflare Turnstile。对于企业级防护, Hyper Solutions 提供 API 端点,为 Akamai、DataDome、Kasada 和 Incapsula 生成有效的反机器人令牌。只需简单调用 API,无需浏览器自动化。
README 配图 Evomi :住宅代理起价为 $0.49/GB。抓取浏览器采用完全伪装的 Chromium、住宅 IP、自动 CAPTCHA 求解和反机器人绕过。
Scraper API 助你轻松获取结果。提供 MCP 和 N8N 集成。
README 配图 阅读 The Web Scraping Club 对 Scrapling 的完整评测(2025 年 11 月)。这是专注于网页抓取的头号新闻通讯。
README 配图 Swiftproxy 提供可扩展的住宅代理,覆盖 195+ 个国家/地区,拥有 8000 万+ 个 IP,可提供快速可靠的连接、自动轮换和强大的抗封锁能力。可免费试用。
README 配图 Byteful 提供合乎道德采购的住宅、移动、ISP 和数据中心代理,以及抓取和 AI 自动化工具。使用代码 SCRAPLING10:住宅代理可享 10% 折扣。
README 配图 ProxyLane:让 Scrapling 运行时 CAPTCHA 减少 90%。拥有 2800 万个真实 P2P 住宅设备,98.7% 的 IP 干净,覆盖 195 个国家/地区。支持城市/ISP/邮编定位、粘性/轮换会话,流量永不过期。花 $1.95 试用 350 MB。代码 SCRAPEANDTAKE:立享 25% 折扣。
README 配图 LundProxy:告别按 GB 付费。住宅流量不限量,拥有 1 亿+ 个 IP,覆盖 190+ 个国家/地区。按带宽付费。申请免费试用 50 Mbps 住宅代理。
README 配图 在 DataImpulse,仅需 $1/GB。合乎道德采购的一手代理。拥有 9000 万+ 个 IP,覆盖 195+ 个国家/地区。提供住宅、数据中心和移动代理。按量付费,无需订阅。流量永不过期。
想在这里展示您的广告吗?点击 [这里](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646) # 赞助商

README 配图


README 配图 README 配图 README 配图 README 配图 README 配图

想在这里展示您的广告吗?点击 这里 并选择适合您的档位!


主要功能

爬虫 — 完整的爬取框架
  • 🕷️ 类似 Scrapy 的爬虫 API:使用 start_urls、异步 parse 回调以及 Request/Response 对象定义爬虫。
  • ⚡ 并发爬取:可配置并发限制、按域名限流和下载延迟。
  • 🔄 多会话支持:在单个爬虫中统一处理 HTTP 请求和隐身无头浏览器,并可按 ID 将请求路由到不同会话。
  • 💾 暂停与恢复:使用 crawldir 保存待处理请求和已访问的 URL。按 Ctrl+C 可安全停止,并使用相同目录重新启动。
  • 📡 流式模式:通过 async for item in spider.stream() 实时流式输出抓取到的条目,并提供实时统计信息,非常适合 UI、流水线和长时间运行的爬取任务。
  • 🛡️ 拦截请求检测:自动检测并重试被拦截的请求,支持自定义逻辑。
  • 🚦 自动限速:无需再猜测延迟时间。爬虫会根据网站的响应速度自行调整各域名的延迟;网站开始拦截或限流时,会将延迟加倍(或按照 Retry-After 的要求等待),停止拦截后则会加快速度。
  • 🤖 遵守 Robots.txt 规则:可选的 robots_txt_obey 标志,可遵循 Disallow、Crawl-delay 和 Request-rate 指令,并按域名缓存。
  • 🧪 开发模式:首次运行时将响应缓存到磁盘,后续运行时重放响应,让您无需再次访问目标服务即可迭代 parse() 逻辑。
  • 🧩 现成的爬虫模板:使用 CrawlSpider 按规则跟踪链接,使用 SitemapSpider 根据站点地图或 robots.txt 爬取,使用 XMLFeedSpider/CSVFeedSpider 遍历 XML/RSS 和 CSV 订阅源,使用 ShopifySpider 从公开的 Shopify 商店收集商品(每个变体对应一个条目),省去样板代码。
  • 🔗 链接提取:独立的 LinkExtractor 基础组件,支持允许/拒绝模式、域名筛选、CSS/XPath 范围限定、扩展名筛选和规范化,可在模板中使用,也可单独使用。
  • 📦 内置导出功能:通过钩子和自定义流水线导出结果,也可使用内置的 JSON/JSONL/CSV/XML 导出器,通过 result.items.to_json()、to_jsonl()、to_csv() 和 to_xml() 导出。
支持会话的高级网站抓取
  • HTTP 请求:使用 Fetcher 类发送快速、隐蔽的 HTTP 请求。可模拟浏览器的 TLS 指纹和请求头,并使用 HTTP/3。
  • 动态加载:使用 StealthyFetcher 类抓取动态网站,通过浏览器自动化功能支持 Playwright 的 Chromium 和 Google Chrome。
  • 绕过反机器人机制:StealthyFetcher 具备高级隐蔽功能和指纹伪装。借助自动化功能,可轻松绕过各种 Cloudflare Turnstile/Interstitial。
  • 会话管理:FetcherSession 和 StealthySession 类支持持久会话,可在多个请求间管理 Cookie 和状态。
  • 代理轮换:内置 ProxyRotator,支持在所有会话类型中使用循环或自定义轮换策略,并允许针对单个请求覆盖代理设置。
  • 域名与广告拦截:在基于浏览器的抓取器中,可拦截对特定域名(及其子域名)的请求,或启用内置广告拦截(约 3,500 个已知广告和跟踪域名)。
  • 防止 DNS 泄漏:可选的 DNS-over-HTTPS 支持可通过 Cloudflare 的 DoH 路由 DNS 查询,使用代理时防止 DNS 泄漏。
  • 远程浏览器:无需在本地启动浏览器,即可通过 CDP 使用 cdp_url 连接到已运行的浏览器,无论它位于同一台机器、其他主机,还是由托管浏览器服务提供商管理。也可以使用 executable_path 指定自己的 Chromium 构建版本,供任何浏览器抓取器使用。
  • 后台 API 捕获:在浏览器会话中启用 record_requests=True,然后使用 session.network.search(limit=None) 搜索已保存的响应。无需再次发送请求,即可读取页面加载期间的 API 数据和 HTTP 错误。历史记录有上限,并会保存文本响应正文。
  • 异步支持:所有抓取器均提供完整的异步支持,并配有专用的异步会话类。
解析与数据提取
  • 🔄 智能元素追踪:网站发生变化后,使用智能相似度算法重新定位元素。
  • 🎯 灵活的智能选择:支持 CSS 选择器、XPath 选择器、基于筛选条件的搜索、文本搜索、正则表达式搜索等。
  • 🔍 查找相似元素:自动定位与已找到元素相似的元素。
AI 功能
  • 🤖 MCP 服务:让 AI 聊天机器人和 Agent(Claude/Cursor 等)通过 Scrapling 进行抓取,支持 HTTP 请求、浏览器操作、截图、已保存的登录状态和后台 API 响应。使用我们的隐蔽浏览器及配套工具,让合适的 AI 模型在工作时能够绕过各种 CAPTCHA(当然也包括我们的 Cloudflare 解决器)。它会使用多种方法减少发送给模型的内容、拦截广告并防范提示词注入。此外,还支持通过 CDP 连接远程浏览器,并提供带身份验证选项的 HTTP 传输。(演示视频)
  • 🧠 Agent 技能:可直接安装的 Agent 技能,能教会编码 Agent 整个库的用法,让它们编写的 Scrapling 代码符合当前 API,而不是靠猜测。
  • 📚 适用于 RAG 的 Markdown:用一行代码(page.markdown())将任意页面转换为干净、经过清理且适用于大模型的 Markdown;也可使用 ContentSpider 模板将整个网站抓取为 Markdown 语料库,全程无需调用大模型。(文档)
高性能、久经考验的架构
  • 🚀 极速:经过优化,性能超越大多数 Python 抓取库。
  • 🔋 高效利用内存:通过优化数据结构和延迟加载,将内存占用降至最低。
  • ⚡ 快速 JSON 序列化:速度比标准库快 10 倍。
  • 🏗️ 久经考验:Scrapling 不仅拥有 92% 的测试覆盖率和完整的类型提示覆盖率,过去一年中还被数百名网页抓取人员每天使用。
面向开发者 / Web Scraper 的友好体验
  • 🎯 交互式 Web Scraping Shell:可选的内置 IPython Shell,集成 Scrapling,提供快捷操作和新工具,加速 Web Scraping 脚本开发,例如将 curl 请求转换为 Scrapling 请求,以及在浏览器中查看请求结果。
  • 🚀 直接从终端使用:你可以选择使用 Scrapling 抓取 URL,无需编写任何代码!
  • 🛠️ 丰富的导航 API:通过父级、同级和子级导航方法,实现高级 DOM 遍历。
  • 🧬 增强的文本处理:内置正则表达式、清理方法和优化的字符串操作。
  • 📝 自动生成选择器:为任意元素生成可靠的 CSS/XPath 选择器。
  • 🔌 熟悉的 API:与 Scrapy/BeautifulSoup 类似,并使用与 Scrapy/Parsel 相同的伪元素。
  • 🤝 即插即用的 Scrapy 集成:已经在使用 Scrapy?为任意回调添加 scrapling_response 装饰器,即可使用 Scrapling 的解析器解析你已获取的响应,无需重写。
  • 📘 完整的类型覆盖:完整的类型提示,为 IDE 提供出色的支持和代码补全。每次变更时,整个代码库都会由 PyRight 和 MyPy 自动扫描。
  • 🔋 开箱即用的 Docker 镜像:每次发布时,都会自动构建并推送包含所有浏览器的 Docker 镜像。

开始使用

先快速了解 Scrapling 的功能,无需深入探究。

基本用法

支持会话的 HTTP 请求

from scrapling.fetchers import Fetcher, FetcherSession

with FetcherSession(impersonate='chrome') as session:  # Use latest version of Chrome's TLS fingerprint
    page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
    quotes = page.css('.quote .text::text').getall()

# Or use one-off requests
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()

高级隐身模式

from scrapling.fetchers import StealthyFetcher, StealthySession

with StealthySession(headless=True, solve_cloudflare=True) as session:  # Keep the browser open until you finish
    page = session.fetch('https://nopecha.com/demo/cloudflare', google_search=False)
    data = page.css('#padded_content a').getall()

# Or use one-off request style, it opens the browser for this request, then closes it after finishing
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare', solve_cloudflare=True)
data = page.css('#padded_content a').getall()

完整的浏览器自动化

from scrapling.fetchers import StealthyFetcher, StealthySession

with StealthySession(headless=True, disable_resources=False, network_idle=True) as session:  # Keep the browser open until you finish
    page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
    data = page.xpath('//span[@class="text"]/text()').getall()  # XPath selector if you prefer it

# Or use one-off request style, it opens the browser for this request, then closes it after finishing
page = StealthyFetcher.fetch('https://quotes.toscrape.com/')
data = page.css('.quote .text::text').getall()
爬虫

构建支持并发请求、多种会话类型以及暂停 / 恢复的完整爬虫:

from scrapling.spiders import Spider, Response

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com/"]
    concurrent_requests = 10
    
    async def parse(self, response: Response):
        for quote in response.css('.quote'):
            yield {
                "text": quote.css('.text::text').get(),
                "author": quote.css('.author::text').get(),
            }
            
        next_page = response.css('.next a')
        if next_page:
            yield response.follow(next_page[0].attrib['href'])

result = QuotesSpider().start()
print(f"Scraped {len(result.items)} quotes")
result.items.to_json("quotes.json")

在单个爬虫中使用多种会话类型:

from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession

class MultiSessionSpider(Spider):
    name = "multi"
    start_urls = ["https://example.com/"]
    
    def configure_sessions(self, manager):
        manager.add("fast", FetcherSession(impersonate="chrome"))
        manager.add("stealth", AsyncStealthySession(headless=True), lazy=True)
    
    async def parse(self, response: Response):
        for link in response.css('a::attr(href)').getall():
            # Route protected pages through the stealth session
            if "protected" in link:
                yield Request(link, sid="stealth")
            else:
                yield Request(link, sid="fast", callback=self.parse)  # explicit callback

运行爬虫并使用检查点暂停和恢复长时间抓取:

QuotesSpider(crawldir="./crawl_data").start()

设置 crawldir 后,按 Ctrl+C 可保存待处理请求和已访问 URL。使用相同的 crawldir 重启即可恢复。请单独保存抓取到的条目。

也可以使用现成模板,完全跳过编写抓取逻辑,例如获取整个 Shopify 商店的商品目录:

from scrapling.spiders import ShopifySpider

class MyStore(ShopifySpider):
    target_website = "example.com"

result = MyStore().start()  # Every product in the store, one item per variant

该模板会读取通过公开集合端点提供的商品,每个变体对应一件商品。

高级解析与导航
from scrapling.fetchers import Fetcher

# Rich element selection and navigation
page = Fetcher.get('https://quotes.toscrape.com/')

# Get quotes with multiple selection methods
quotes = page.css('.quote')  # CSS selector
quotes = page.xpath('//div[@class="quote"]')  # XPath
quotes = page.find_all('div', {'class': 'quote'})  # BeautifulSoup-style
# Same as
quotes = page.find_all('div', class_='quote')
quotes = page.find_all(['div'], class_='quote')
quotes = page.find_all(class_='quote')  # and so on...
# Find element by text content
quotes = page.find_by_text('Albert Einstein', first_match=False)

# Advanced navigation
quote_text = page.css('.quote')[0].css('.text::text').get()
quote_texts = page.css('.quote').css('.text::text').getall()  # Chained selectors
first_quote = page.css('.quote')[0]
author = first_quote.css('.author::text').get()
next_quote = first_quote.next
parent_container = first_quote.parent

# Element relationships and similarity
similar_elements = first_quote.find_similar()
below_elements = first_quote.below_elements

如果你不想像下面这样获取网站,也可以直接使用解析器:

from scrapling.parser import Selector

page = Selector("<html>...</html>")

效果完全相同!

异步会话管理示例
import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession

async def main():
    async with FetcherSession(http3=True) as http_session:  # `FetcherSession` is context-aware and can work in both sync/async patterns
        page1 = await http_session.get('https://quotes.toscrape.com/')
        page2 = await http_session.get('https://quotes.toscrape.com/page/2/', impersonate='chrome')
        print(len(page1.css('.quote')), len(page2.css('.quote')))

    async with AsyncStealthySession(max_pages=2) as browser_session:
        urls = ['https://quotes.toscrape.com/js/', 'https://quotes.toscrape.com/js/page/2/']
        pages = await asyncio.gather(*(browser_session.fetch(url, wait_selector='.quote') for url in urls))
        print([len(page.css('.quote')) for page in pages])

asyncio.run(main())

CLI 与交互式 Shell

Scrapling 内置了强大的命令行界面:

asciicast

启动交互式 Web Scraping Shell

pip install "scrapling[shell]"
scrapling shell

无需编程即可将页面提取到文件。使用 --css-selector 选择内容,或使用 --ai-targeted 选择并清理 body 内容。使用 .txt 表示文本,.md 表示 Markdown,或 .html 表示 HTML。

scrapling extract get 'https://quotes.toscrape.com/' quotes.md
scrapling extract get 'https://quotes.toscrape.com/' quotes.txt --css-selector '.quote' --impersonate 'chrome'
scrapling extract fetch 'https://quotes.toscrape.com/js/' quotes.md --css-selector '.quote' --wait-selector '.quote' --no-headless
scrapling extract fetch 'https://nopecha.com/demo/cloudflare' captchas.html --css-selector '#padded_content a' --solve-cloudflare

说明

此外还有许多功能,但我们希望保持本页简洁,其中包括 MCP 服务和交互式 Web Scraping Shell。请在此处查看完整文档。

性能基准测试

Scrapling 不仅功能强大,速度也快如闪电。以下基准测试将 Scrapling 的解析器与其他热门库的最新版本进行了比较。

文本提取速度测试(5000 个嵌套元素)
#库时间(ms)相较于 Scrapling
1Scrapling1.991.0x
2Parsel/Scrapy2.061.035
3Raw Lxml2.561.286
4PyQuery23.98~12x
5Selectolax197.02~99x
6MechanicalSoup1545.15~776.5x
7BS4 with Lxml1562.1~785.0x
8BS4 with html5lib3412.73~1714.9x
元素相似度与文本搜索性能

Scrapling 的自适应元素查找能力明显优于其他方案:

库时间(ms)相较于 Scrapling
Scrapling2.31.0x
AutoScraper12.585.47x

所有基准测试数据均为 100 次以上运行的平均值。有关测试方法,请参阅 benchmarks.py。

安装

Scrapling 要求 Python 3.10 或更高版本:

pip install scrapling

重要

此安装仅包含解析器引擎及其依赖项,不包含任何抓取器或命令行依赖项。因此,仅通过此安装导入 scrapling.fetchers 或 scrapling.spiders 中的任何内容(例如上面的示例)都会引发 ModuleNotFoundError。如果要使用任何抓取器或爬虫,请先按下方说明安装抓取器的依赖项。

可选依赖项
  1. 如果要使用以下任何额外功能、抓取器或其类,需要安装抓取器的依赖项及其浏览器依赖项,如下所示:

    pip install "scrapling[fetchers]"
    
    scrapling install           # 正常安装
    scrapling install  --force  # 强制重新安装
    

    这会下载所有浏览器及其系统依赖项和指纹操作依赖项。

    也可以通过代码安装,而无需运行此类命令:

    from scrapling.cli import install
    
    install([], standalone_mode=False)          # 正常安装
    install(["--force"], standalone_mode=False) # 强制重新安装
    
  2. 额外功能:

    • 安装 MCP 服务功能:
      pip install "scrapling[ai]"
      
    • 安装(构建 RAG 系统)所需的依赖项:
      pip install "scrapling[rag]"
      
    • 安装 Shell 功能(Web 抓取 Shell 和 extract 命令):
      pip install "scrapling[shell]"
      
    • 安装所有内容:
      pip install "scrapling[all]"
      

    需要浏览器抓取器时,请运行 scrapling install。HTTP 请求无需安装浏览器。

Docker

也可以使用以下命令从 DockerHub 安装包含所有额外功能和浏览器的 Docker 镜像:

docker pull pyd4vinci/scrapling

也可以从 GitHub 注册表下载:

docker pull ghcr.io/d4vinci/scrapling:latest

此镜像由 GitHub Actions 自动构建并推送,使用的是仓库的主分支。

贡献

欢迎贡献!开始之前,请阅读我们的贡献指南。

免责声明

注意

此库仅用于教育和研究目的。使用此库即表示你同意遵守当地和国际数据抓取与隐私法律。作者和贡献者不对软件的任何滥用行为负责。请始终遵守网站的服务条款和 robots.txt 文件。

🎓 引用

如果你将我们的库用于研究,请使用以下引用格式:

  @misc{scrapling,
    author = {Karim Shoair},
    title = {Scrapling},
    year = {2024},
    url = {https://github.com/D4Vinci/Scrapling},
    note = {A Python Web Scraping framework for everything from a single request to a full-scale crawl!}
  }

许可证

本作品采用 BSD-3-Clause 许可证授权。

致谢

此项目包含改编自以下项目的代码:

  • Parsel(BSD 许可证)——用于 translator 子模块

由 Karim Shoair 用 ❤️ 精心设计与打造。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。