mcpField
C
ContextFetch

ContextFetch

远程服务
contextfetch.dev搜索与检索02 天前更新

关于 ContextFetch

ContextFetch 是面向 Agent 的 MCP 服务,可提供网页搜索及按查询筛选的 Markdown 页面内容。它还支持研究、提取、爬取和站点地图,并提供免密钥免费额度。

主要功能

  1. 01按查询筛选网页搜索结果
  2. 02将公开页面转换为 Markdown
  3. 03生成排序后的研究证据包
  4. 04爬取站点并列出网址
  5. 05提供带来源标记的提取式回答
  6. 06发现相似页面

适用场景

  1. 01查找技术问题相关的文档段落
  2. 02从多个搜索角度收集证据
  3. 03以 Markdown 阅读公开文章或 GitHub 文件
  4. 04爬取站点页面或整理网址

MCP 相关

它向 MCP 客户端提供 11 个搜索、提取、研究、爬取、制图和账户工具。服务可通过 stdio 运行,并可配置给 Claude Code、Cursor 和 Windsurf 等客户端。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://api.contextfetch.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://api.contextfetch.dev/mcp需要授权
安装包
npm@contextfetch/mcp1.1.0

工具

详细介绍

ContextFetch MCP 服务

为 AI Agent 提供网页搜索和适用于大模型的简洁 Markdown:每 1,000 次搜索收费 $1,每天免费 25 次,无需密钥或注册。

npm MCP registry License: MIT

claude mcp add contextfetch -- npx -y @contextfetch/mcp

这就是 Claude Code 的全部配置。然后,向你的 Agent 提出需要查询网页的问题:

搜索 Postgres 的 SKIP LOCKED 如何用于作业队列

contextfetch_search 会以 Markdown 格式返回每个页面,并精简到能回答查询的段落:

## 1. PostgreSQL Job Queues with SKIP LOCKED | CodeNotes

https://codenotes.tech/blog/postgresql-job-queues-with-skip-locked · score 1.000

FOR UPDATE SKIP LOCKED is useful because it lets many workers claim different rows without blocking on rows
another worker has already locked. But it is only the claiming primitive. A production queue also needs the
right schema, indexes, retry policy, stuck-job recovery, cleanup, monitoring, and replay-safe handlers.
...

提供 11 种工具:搜索、将网页转换为 Markdown、查找相似内容、研究、回答、爬取、站点地图、余额查询、免费密钥和自动充值。 底层使用兼容 Exa 和 Tavily 的 API,详见 contextfetch.dev。

安装

Claude Code(一行命令,无需密钥):

claude mcp add contextfetch -- npx -y @contextfetch/mcp

使用付费密钥:

claude mcp add contextfetch -e CONTEXTFETCH_API_KEY=your_key -- npx -y @contextfetch/mcp

Cursor:添加到 ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(项目):

{
  "mcpServers": {
    "contextfetch": {
      "command": "npx",
      "args": ["-y", "@contextfetch/mcp"],
      "env": { "CONTEXTFETCH_API_KEY": "your_key" }
    }
  }
}

Windsurf:添加到 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "contextfetch": {
      "command": "npx",
      "args": ["-y", "@contextfetch/mcp"],
      "env": { "CONTEXTFETCH_API_KEY": "your_key" }
    }
  }
}

要使用免费套餐,请移除 env 块(或将 CONTEXTFETCH_API_KEY 留空)。同一份 JSON 也适用于 Claude Desktop 的 claude_desktop_config.json,以及任何可启动 stdio 服务的其他 MCP 客户端。

需要 Node.js 18 或更高版本。

工具

工具参数功能费用
contextfetch_searchquery、num_results(1-25,默认 5)、include_domains?、exclude_domains?网页搜索。每条结果包含标题、URL,以及仅与查询相关的段落(经交叉编码器筛选的 Markdown)。每 1,000 次 $1
contextfetch_extract_urlurl、query?将任意公开页面(文档、文章、GitHub 文件、arXiv)提取为整洁的 Markdown,并保留表格。提供 query 时,仅返回相关段落。每 1,000 次 $1
contextfetch_find_similarurl、num_results(1-25,默认 5)查找与某个 URL 类似的页面,但排除其自身域名。每 1,000 次 $1
contextfetch_researchquery、sub_queries?(最多 5 个)、num_results_per_query(1-10,默认 5)服务端研究:并发运行子查询,按 URL 对页面去重,使用交叉编码器根据 query 对所有页面排序,并返回一份 Markdown 证据包(带编号的 [n] 来源及其经查询筛选的段落,逐字引用;不生成任何内容),并标明子查询、来源数量、令牌数和使用的额度。每 1,000 个子查询 $1(最多 5 个)
contextfetch_deep_researchquery、sub_queries?(最多 3 个)、num_results_per_query(1-25,默认 5;最多使用 10)contextfetch_research 的旧名称,为兼容现有设置而保留:提供相同的服务端证据包,最多支持 3 个子查询。每 1,000 个子查询 $1(最多 3 个)
contextfetch_answerquery、num_results(1-10,默认 5)提取式回答:从排名靠前的页面中选出得分最高的段落,逐字引用并附上 [n] 标记和编号来源列表。不生成文本,因此更适合事实查询,而非开放式问题。每 1,000 次 $1
contextfetch_crawlurl、max_depth(0-3,默认 1)、limit(1-50,默认 10)、query?、include_paths?、exclude_paths?(针对 URL 路径的正则表达式)从 url 开始抓取一个网站(仅跟进同一网站的链接,并遵守 robots.txt),将每个页面作为 Markdown 返回,并标明其深度。提供 query 时,会根据相关性对页面排序,并筛选出相关段落。每 1,000 个页面 $1
contextfetch_mapurl、limit(1-5,000,默认 100)、include_paths?、exclude_paths?从网站的站点地图和起始页链接中列出 URL,不抓取页面。每 1,000 次 $1
contextfetch_balance无剩余额度、消耗速率(过去 7 天的每日额度消耗量)和自动充值设置,包括付款失败时的最近一次自动充值错误。需要 CONTEXTFETCH_API_KEY。免费
contextfetch_get_free_key无领取网络提供的免费 API 密钥(2,500 次搜索,每个网络一个),并在本次会话剩余时间内使用该密钥。请让用户将其保存为 CONTEXTFETCH_API_KEY。免费
contextfetch_auto_reloadenabled、threshold?(100-100,000)、pack?(instant、builder、scale)、monthly_max_usd?(上限 500)开启或关闭自动充值,或更改其设置:额度低于 threshold 时,结账时保存的银行卡会再次购买 pack,最高不超过每月限额。需要 CONTEXTFETCH_API_KEY 和已保存的银行卡。此处的限额不能超过 $500。免费

所有工具都返回 Markdown 文本。未提供密钥时,contextfetch_balance 和 contextfetch_auto_reload 会返回一条简短消息,说明需要密钥并附上购买链接。免费套餐的结果开头会显示一行提示,说明今天剩余的免费搜索次数。API 提供这些信息时,结果末尾会显示延迟(总计及各阶段:召回、抓取、重排)、答案是否来自缓存,以及节省的令牌数(筛选后的令牌数与原始页面令牌数)。

contextfetch_research 子查询

传入你自己的 sub_queries(从不同角度提出的问题);工具说明会告知调用模型这样做。如果省略,API 会根据 query 按固定规则生成子查询:

  1. 查询本身;
  2. 查询 + documentation;
  3. 如果查询提到了速度、性能、延迟、内存或比较(vs、compare),则为查询 + benchmark;否则为查询 + example。

如果查询中已包含某个后缀,则会跳过该后缀(因此,react useActionState example 会执行 2 次搜索,而不是 3 次)。整个研究在服务端通过一次 /v1/research 调用完成,每 1,000 个子查询收费 $1;失败的子查询会退款,并在响应头中列出。如果全部失败,工具会返回错误。

环境变量

变量默认值含义
CONTEXTFETCH_API_KEY未设置你的 API 密钥。未设置或为空时使用免费免密层级。
CONTEXTFETCH_API_BASEhttps://api.contextfetch.devAPI 基础 URL。如果你可自托管,请将其指向自己的引擎。

免费层级和定价

价格
无密钥每个网络每天 25 次搜索,无需注册
免费密钥(contextfetch_get_free_key)2,500 次搜索,每个网络一个,无需银行卡
搜索、将页面转换为 Markdown、回答、查找相似内容、映射每 1,000 次收费 $1
爬取每返回 1,000 个页面收费 $1
研究每 1,000 个子查询收费 $1

按量付费:充值金额从 $10 起(充值 $100 可获赠 10%,充值 $500 可获赠 20%)。余额永不过期,所有密钥共用一个余额。月度套餐和每个密钥的限额可在控制面板中查看:contextfetch.dev/account。

余额或免费层级额度用完时(HTTP 402),工具会返回一个一键充值链接(Stripe:银行卡、Apple Pay、Google Pay),以及一段可转发给用户的说明。然后按上文所示设置 CONTEXTFETCH_API_KEY。

重试和连接

请求发送前发生的连接失败(连接被拒绝、DNS 错误、连接超时)、HTTP 429 和 HTTP 5xx 会采用指数退避并加入随机抖动进行重试(间隔约为 0.25–0.5 秒,然后是 0.5–1 秒),每次 API 调用最多尝试 3 次,总时长不超过 30 秒(包括重试)。如果 429 或 5xx 响应包含 Retry-After 标头,则会精确等待指定时长,除非这会超出 30 秒的总限时。400、401、402、422 和其他 4xx 响应不会重试。请求发送后连接中断也不会重试,因为搜索可能已经计费。连接由 Node 内置的 fetch(undici)连接池管理并保持活动状态,因此无需额外的 HTTP 依赖项。

错误

错误不会导致服务崩溃;它们会作为工具结果返回,并带有 isError: true 和简明说明:密钥无效(401)、额度不足或免费限额已达(402,列出套餐及其购买链接)、自动充值时没有已保存的银行卡(409,附购买链接)、URL 不允许访问(400,仅限公开的 http(s) URL)、contextfetch_extract_url 无法获取页面(附原因,例如 HTTP 404)、请求频率受限(429)、服务器错误(5xx)、网络故障,以及每次调用 30 秒的限时(包括重试)。

开发

npm install
npm run build          # compiles src/ to dist/ and marks dist/index.js executable
npm test               # builds, then drives dist/index.js over stdio against a local mock API (no network)
CONTEXTFETCH_API_BASE=http://localhost:8000 node dist/index.js

发布

发布 @contextfetch/mcp 需要拥有 npm 组织 contextfetch(在 npmjs.com 创建该组织,并将发布账号添加为成员)。然后在此文件夹中运行 npm publish;publishConfig.access 已设为 public,且 prepublishOnly 会先进行构建。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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