关于 Extracto
Extracto 是一个 MCP 服务,可将 URL 和类型化架构转换为经过验证的 JSON,供 MCP 客户端使用。它支持同步和异步提取,缺失字段返回 null,而非猜测补全。
主要功能
- 01从 URL 提取类型化数据
- 02按架构验证输出
- 03缺失字段返回 null
- 04运行异步提取任务
- 05查询任务状态和近期任务
适用场景
- 01从网页收集结构化字段
- 02异步提取内容繁重或有反爬机制的页面
- 03按指定 JSON 结构获取文章或商品详情
MCP 相关
向 MCP 客户端提供 URL 提取和异步任务管理工具。基于 stdio 的服务需要 Extracto API 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y extracto-mcpEXTRACTO_API_KEY密钥Your Extracto API key from https://app.getextracto.dev/keysEXTRACTO_BASE_URLOverride the API host (defaults to https://app.getextracto.dev)EXTRACTO_TIMEOUT_MSPer-request timeout in milliseconds (default 90000)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要从中提取数据的公共 HTTPS URL。 |
| schema | object | 是 | 一个对象,将每个字段名映射到一种类型。类型可以是字面值 "string"、"number"、"boolean"、"array"、"object" 之一;也可以是表示列表的单元素数组(例如,字符串列表使用 ["string"],对象列表使用 [{ "title": "string", "price": "number" }]);还可以是嵌套对象(例如 { "author": { "name": "string" } })。请尽可能使用最具体的结构。例如:{ "title": "string", "price": "number", "tags": ["string"], "reviews": [{ "user": "string", "stars": "number" }] }。 |
| examples | array | 否 | 最多提供 3 个少样本示例,用于确定输出格式。 |
详细介绍
extracto-mcp
面向 Extracto 的 Model Context Protocol 服务。它让 Claude、Cursor、Claude Code 和任何 MCP 客户端都能将 URL 和 schema 转换为经过验证的类型化 JSON——无需提示词工程、无需解析 HTML,也不会产生幻觉字段(缺失的数据会以 null 返回)。
快速开始
你需要一个 Extracto API 密钥。请前往 app.getextracto.dev/keys 获取。
该服务通过 stdio 运行,并发布到了 npm,因此大多数客户端只需使用这段配置即可。
Claude Desktop
编辑 claude_desktop_config.json(Settings → Developer → Edit Config):
{
"mcpServers": {
"extracto": {
"command": "npx",
"args": ["-y", "extracto-mcp"],
"env": { "EXTRACTO_API_KEY": "exa_live_your_key_here" }
}
}
}
Cursor
将相同的配置添加到 ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json)。
Claude Code
claude mcp add extracto -e EXTRACTO_API_KEY=exa_live_your_key_here -- npx -y extracto-mcp
重启客户端,然后让它提取一些内容,例如 “使用 extracto 从 github.com/facebook/react 获取标题、语言和星标数。”
工具
| 工具 | 功能 |
|---|---|
extract | 从单个 URL 同步提取(最长约 90 秒)。返回 { data, meta }。 |
extract_async | 为内容繁杂或带有反机器人机制的页面提交异步任务。立即返回任务 ID。 |
get_job | 轮询异步任务的状态和结果。 |
list_jobs | 列出你最近的异步任务。 |
schema 参数
schema 是一个将字段名称映射到类型的对象。类型包括:
- 字面量:
"string"、"number"、"boolean"、"array"、"object" - 用于列表的单元素数组:
["string"],或[{ "title": "string" }] - 嵌套对象:
{ "author": { "name": "string" } }
{
"title": "string",
"price": "number",
"tags": ["string"],
"reviews": [{ "user": "string", "stars": "number" }]
}
只会返回页面上实际找到的字段;任何缺失内容都会返回 null,而不是猜测。
配置
所有配置都通过 MCP 客户端传入的环境变量设置:
| 变量 | 必需 | 描述 |
|---|---|---|
EXTRACTO_API_KEY | 是 | 你从 app.getextracto.dev/keys 获取的密钥。 |
EXTRACTO_BASE_URL | 否 | 覆盖 API 主机(默认为 https://app.getextracto.dev)。 |
EXTRACTO_TIMEOUT_MS | 否 | 单次请求超时时间,单位为毫秒(默认 90000)。 |
开发
npm install
npm run dev # run from source with tsx
npm run typecheck
npm run build # bundle to dist/ with tsup
相关内容
extracto— 官方 TypeScript/JavaScript SDK。- getextracto.dev — 文档和 API 参考。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。