MCP 原生数据提取运行时

让 Agent 自己定义
永久可用的数据提取工具
把杂乱网页 X 光成结构化数据 —— 内置 scrape / extract / crawl,
更让智能体提交自己的 TypeScript extractor,注册成 MCP 工具。

Firecrawl 的开箱即用,加上 Agent 现写代码、真隔离执行的深度定制。全栈跑在 Cloudflare 上 —— 你零运维,按用量计费。

Streamable HTTP / SSEV8 isolate 沙箱< $1/月 闲置成本
tools/call · scrape● rendering
INPUT // raw_domhtml
<div class="product">
  <h1 class="title">
    Aero Mouse Pro
  </h1>
  <span class="price">
    $ 49.00
  </span>
  <b data-stock="1"/>
</div>
OUTPUT // structuredjson
{
  "title": "Aero Mouse Pro",
  "price": 49.00,
  "currency": "USD",
  "in_stock": true,
  "url": "shop.io/p/123"
}
// confidence 0.98
job #a3f9c2 · browser 1.4sloader 1 isolate · cost $0.0008
两个极端之间

抓取要么太浅,要么太重。
exray 走中间。

参数化 API 覆盖 80%,但表达不了站点特有逻辑;自托管完全可编程,但浏览器集群、依赖、扩缩容全压在你身上。

01 / API

Firecrawl · Jina

parametric only
  • 复杂结构只能 format:markdown 拿粗结果
  • 特殊抽取靠 LLM 二次处理,贵、慢、不稳
  • Agent 无法上传自己的代码
02 / SELF-HOST

Playwright + Python

fully programmable
  • 自己跑浏览器集群、管依赖
  • 扩缩容、监控、运维全包
  • 不是 MCP-native,Agent 接不进来
exray
03 / RUNTIME

MCP × Programmable × Serverless

best of both
  • 开箱即用的 scrape / extract / crawl
  • Agent 现写 extractor → 真隔离执行
  • 全 Cloudflare 托管,零运维
Agent-programmable

写一次 extractor,
永久作为 MCP 工具复用。

智能体提交一段 TypeScript,平台静态校验、真隔离执行,并注册进 tools/list。下次调用,体感与内置工具完全一致。

1

提交代码

Agent 调 define_extractor,给出名字 + 一段处理 PageSnapshot 的 TS 函数。

2

校验 & 隔离

AST 白名单静态校验,计算 code_hash,存 R2,登记到 D1。

3

注册为工具

tools/list_changed,新工具立即出现在客户端,按 token 隔离。

4

反复调用

每次调用一个全新 V8 isolate 执行;自调试、同名覆盖、永久可复用。

define_extractor.tsV8 isolate
// Agent 提交一次,注册成永久 MCP 工具
export default {
  async extract(snapshot: PageSnapshot) {
    const q = snapshot.dom.querySelector;
    return {
      title: q('h1.title')?.textContent,
      price: parseFloat(
        q('.price')?.textContent
          ?.replace(/[^\d.]/g, '') ?? '0'
      ),
      in_stock: q('[data-stock]') != null,
    };
  }
};
// → 工具 "my-shop-scraper" 注册成功 ✓
出厂内置

端点上有 15 个工具,这三个挑大梁。

一个 MCP 端点,agent 全都看得见。结构化结果不必再套一层 LLM —— 你的 agent 自己注册的工具也会并排出现在这里。

scrape

单 URL 渲染抓取,返回 markdown / html / 截图。支持 wait_for 与渲染前 actions。

in url · format · actions[]out markdown · metadata
extract

Schema 驱动抽取,Firecrawl 同款。给一个 JSON Schema,拿回带 confidence 的结构化数据。

in url · schema · promptout data · confidence
crawl

seed URL + 规则批量抓取。Queue 派发并发消费,结果流式经 MCP notifications 回传。

in seed_url · depth · extractorout job_id · stream
不止于提取

Agent 思考与编排
exray 负责部署与执行。

分工就这一句。Agent 决定要造什么,exray 给它一个地方放 —— 有版本、有计量、有审计,且公网可达。

result pages

让 agent 写一个页面、发布,它就在 &lt;你&gt;-&lt;project&gt;.exray.app 上线了。是你自己数据的只读视图,而不是往对话框里糊 JSON。

in handle(request, ctx)out <name>.exray.app
storage

agent 代码能拿到键值、结构化文档与对象存储 —— 默认全关,按 project 开通。结果页只读:公网请求不该能写你的数据。

in ctx.kv · ctx.db · ctx.storageout 每租户隔离
versioning

每次注册都是一个不可变版本。发布即上线,可回滚到任意历史版本,弃用时不打断调用方。

in define → publishout 回滚 · 审计留痕
独特定位

别人占其一,
exray 把三件事合一。

01

MCP-native

不是「外挂一个 MCP server」。所有能力 —— 内置与 Agent 自定义 —— 都走同一套 tools/call,Agent 不感知后端差异。

02

Agent-programmable

Agent 现写代码,平台真隔离执行并注册为工具。不是预制 actor 商店 —— 是「让 Agent 写一个永久能用的数据提取函数」。

03

Serverless

Workers / D1 / R2 / KV / Queues / Browser Rendering / Dynamic Worker Loader 全包。没有固定基础设施成本。

零运维

整条链路跑在 Cloudflare。

不维护服务器、数据库、浏览器集群。不用时只交 D1 / R2 存储费,每月不到 1 美元。2026 GA 的 Dynamic Worker Loader 让「Agent 上传代码 → 平台真隔离执行」成为 paid plan 即用的能力。

Workers D1 R2 KV Queues Browser Rendering Worker Loader TypeScript 全栈

给你的 Agent
一双 X 光眼睛

注册、发一个 token、把一行配置粘进 MCP 客户端。约 5 分钟跑通第一次 scrape。

$ claude mcp add --transport http exray https://mcp.exray.dev/mcp \ --header "Authorization: Bearer exr_<your-token>"⧉ 复制
免费注册 →