mcpField
S
SearchForge

SearchForge

本地服务
divyanshu-iitian.github.io搜索与检索214 周前更新

关于 SearchForge

SearchForge 是面向大模型、Agent 和 RAG 工作流的开源搜索 API 与 MCP 服务。它将查询路由到网页、代码、学术和社区来源,返回结构化结果或整洁 Markdown,不生成答案。

主要功能

  1. 01按意图进行多来源搜索
  2. 02将 URL 内容读取为整洁 Markdown
  3. 03隔离来源故障并融合排名
  4. 04提供 CLI、REST API、MCP 和 TypeScript SDK
  5. 05诊断来源状态与延迟
  6. 06默认启用无需密钥的来源

适用场景

  1. 01为 Agent 或 RAG 工作流检索来源
  2. 02搜索代码仓库或学术成果
  3. 03将公开文章读取为 Markdown
  4. 04诊断搜索来源是否可用

MCP 相关

通过 stdio MCP 提供 `web_search`、`read_url` 和 `search_status` 三种工具。搜索和状态响应同时包含结构化 MCP 内容与可读文本。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"divyanshu-iitian-searchforge": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SEARCHFORGE_SEARXNG_URL",
"-e",
"GITHUB_TOKEN",
"-e",
"CROSSREF_MAILTO",
"-e",
"BRAVE_SEARCH_API_KEY",
"ghcr.io/divyanshu-iitian/searchforge-mcp:0.2.0"
],
"env": {
"SEARCHFORGE_SEARXNG_URL": "<SEARCHFORGE_SEARXNG_URL>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"CROSSREF_MAILTO": "<CROSSREF_MAILTO>",
"BRAVE_SEARCH_API_KEY": "<BRAVE_SEARCH_API_KEY>"
}
}
}
}
启动命令docker run -i --rm -e SEARCHFORGE_SEARXNG_URL -e GITHUB_TOKEN -e CROSSREF_MAILTO -e BRAVE_SEARCH_API_KEY ghcr.io/divyanshu-iitian/searchforge-mcp:0.2.0
需要配置的环境变量
SEARCHFORGE_SEARXNG_URLOptional URL of a self-hosted SearXNG instance
GITHUB_TOKEN密钥Optional GitHub token for higher public API quotas
CROSSREF_MAILTOOptional email address for Crossref polite-pool routing
BRAVE_SEARCH_API_KEY密钥Optional Brave Search API key

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

安装包
ocighcr.io/divyanshu-iitian/searchforge-mcp:0.2.0

工具

还没有获取到工具列表

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

详细介绍

SearchForge

面向大模型、Agent 和 RAG 的开源 Web 搜索 API 和 MCP 服务。

CI License: MIT Node.js MCP Website Official MCP Registry

一个本地网关。理解意图的搜索。整洁的 Markdown。支持 REST、MCP、CLI 和 TypeScript。

网站 · 快速开始 · 免费工具 · MCP · API · 设计


SearchForge 是一款面向大模型、AI Agent 和检索增强生成(RAG)工作流的免费开源 Web 搜索 API 和 MCP 服务。 它提供可预测的检索层,无需每个项目都集成付费搜索服务商。SearchForge 会将每个查询路由到合适的来源,隔离服务商故障,去重 URL,融合排名,并将公开网页转换为适用于大模型的 Markdown。

它不会生成答案、隐藏引用、抓取公开的 SearXNG 实例,也不会发送遥测数据。

你将获得

能力默认来源费用 / 凭据
auto按意图路由的来源组合默认无需密钥
webWikipedia;可选的私有 SearXNG无需密钥 / 可自托管
codeGitHub 仓库搜索无需密钥;令牌可选
academicCrossref 作品和 DOI 元数据无需密钥
community通过 Algolia 访问 Hacker News无需密钥,社区服务
read_urlJina Reader无需密钥,目前受速率限制

SearchForge 启动时会启用所有无需密钥的适配器。auto 是默认选项,会将代码、研究以及时效性 / 社区类意图路由到相关来源,同时保留 Web 回退选项。GitHub 令牌仅用于提高公共 API 配额;Brave 则是可选的密钥后端。广泛、独立的 Web 元搜索由内置的 SearXNG 堆栈提供。

快速开始

不克隆即可试用
npx --yes --package github:divyanshu-iitian/SearchForge \
  searchforge search "latest open-source agent frameworks"

首次运行时会从 GitHub 下载并构建软件包。除非选择某个类别,否则搜索会使用基于意图的 auto 路由。

零密钥本地 CLI
git clone https://github.com/divyanshu-iitian/SearchForge.git
cd SearchForge
npm install
npm run build

node dist/cli.js search "latest open-source agent frameworks"
node dist/cli.js search "retrieval augmented generation" --category academic
node dist/cli.js search "local LLM tooling" --category community
node dist/cli.js read "https://example.com"
node dist/cli.js doctor
使用私有 SearXNG 进行完整 Web 搜索
docker compose up --build
curl -s http://localhost:3000/v1/search \
  -H "content-type: application/json" \
  -d '{"query":"open source vector databases","category":"web","limit":5}'

这会在端口 3000 上启动 SearchForge,并在端口 8080 上启动一个启用了 JSON 的私有 SearXNG。在对外开放此堆栈之前,请更改 SearXNG 密钥,设置 SEARCHFORGE_API_KEY,并在受信任的代理处终止 TLS。

免费工具

按能力搜索
searchforge search "latest open-source agent frameworks"
searchforge search "browser agent" --category code
searchforge search "semantic reranking" --category academic --json
searchforge search "Show HN search engine" --category community

默认的 auto 类别会检测代码、学术和时效性 / 社区类信号,并在 Web 回退的同时查询匹配的来源类型。指定类别可避免查询无关的服务商。显式指定的 providers 列表会覆盖类别路由,适用于评估场景。

将 URL 读取为 Markdown
searchforge read "https://example.com/article"

read_url 仅接受公开的 HTTP(S) URL。凭据、localhost、私有 IP 字面量和非 Web 协议均会被拒绝。响应设有大小限制和超时,并会被缓存。

诊断完整检索路径
searchforge doctor

Doctor 会执行真实且有界的探测,并报告每个提供方的访问层级、能力、延迟和错误。某个来源失败时会返回 degraded,而不是给出误导性的非此即彼状态。

MCP

SearchForge 提供三个 stdio 工具:

  • web_search — 路由式、可直接用于引用的结构化搜索
  • read_url — 从公开 URL 获取整洁的 Markdown
  • search_status — 实时能力和延迟报告
{
  "mcpServers": {
    "searchforge": {
      "command": "node",
      "args": ["/absolute/path/to/SearchForge/dist/mcp.js"],
      "env": {
        "SEARCHFORGE_SEARXNG_URL": "http://localhost:8080"
      }
    }
  }
}

搜索和状态工具除了返回易读文本,也会返回 MCP 结构化内容。

无需克隆,即可直接从 GitHub 运行 MCP 服务:

{
  "mcpServers": {
    "searchforge": {
      "command": "npx",
      "args": [
        "--yes",
        "--package",
        "github:divyanshu-iitian/SearchForge",
        "searchforge-mcp"
      ]
    }
  }
}

SearchForge 也已发布到 官方 MCP Registry, 名称为 io.github.divyanshu-iitian/searchforge。要通过支持 Docker 命令的任意 MCP 客户端,直接运行由 Registry 提供的 OCI 镜像:

{
  "mcpServers": {
    "searchforge": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/divyanshu-iitian/searchforge-mcp:0.2.0"
      ]
    }
  }
}

REST API

搜索
POST /v1/search
Content-Type: application/json

{
  "query": "open source reranking models",
  "category": "academic",
  "limit": 8,
  "language": "en",
  "freshness": "month",
  "safeSearch": "moderate"
}
{
  "schemaVersion": "1.0",
  "query": "open source reranking models",
  "category": "academic",
  "results": [
    {
      "title": "Example work",
      "url": "https://doi.org/10.0000/example",
      "snippet": "Authors · Publisher · journal-article",
      "source": "crossref",
      "sources": ["crossref"],
      "score": 0.016393
    }
  ],
  "providers": [
    {
      "provider": "crossref",
      "ok": true,
      "latencyMs": 241,
      "resultCount": 8
    }
  ],
  "tookMs": 243,
  "cached": false
}
读取
POST /v1/read
Content-Type: application/json

{"url":"https://example.com/article"}

其他端点:

GET /healthz       Process liveness
GET /v1/providers  Configured capabilities and access tiers
GET /v1/doctor     Live dependency health

请参阅完整的 OpenAPI 契约。

TypeScript SDK

import {
  CrossrefProvider,
  GithubProvider,
  JinaReader,
  SearchForge,
} from "searchforge-rag";

const forge = new SearchForge({
  providers: [new GithubProvider(), new CrossrefProvider()],
  reader: new JinaReader(),
  timeoutMs: 8_000,
});

const evidence = await forge.search({
  query: "agentic retrieval",
  category: "academic",
  limit: 10,
});

const page = await forge.read("https://example.com/research");

在 npm 发布版本推出之前:

npm install github:divyanshu-iitian/SearchForge

提供方详情

提供方能力访问启用方式
SearXNG网页可自托管,无供应商费用SEARCHFORGE_SEARXNG_URL
Wikipedia网页知识回退无需密钥始终启用
GitHub代码仓库无需密钥;每小时 60 次未经身份验证的 REST 请求,搜索限制更严格始终启用
Crossref学术元数据无需密钥;建议提供 mailto始终启用
HN Algolia社区无需密钥;可用性由社区运营方保障始终启用
Jina ReaderURL 转 Markdown无需密钥;当前公布的免密额定配额为 20 RPM始终启用
Brave Search网页API 密钥BRAVE_SEARCH_API_KEY

SearchForge 有意不配置公共 SearXNG 实例。它们通常会禁用 JSON 或限制自动化流量;Docker 部署方案是稳定的免费路径。

工作原理

Agent / RAG / MCP client
           |
      validate + route
           |
  +--------+---------+-----------+
  |        |         |           |
 web      code    academic   community       read_url
  |        |         |           |              |
SearXNG  GitHub   Crossref   Hacker News    Jina Reader
Wikipedia
  +--------+---------+-----------+
           |
 normalize -> canonicalize -> deduplicate -> reciprocal-rank fusion
           |
 versioned evidence + provenance + per-source health

每个幂等的提供方调用都有独立的可中止超时。某个服务中断不会抹去健康来源的结果。去重前会移除跟踪参数,并且所有提供结果的提供方都会保留在 sources 中。

这种能力优先的设计受到 Agent Reach 的启发。Agent Reach 帮助 Agent 直接使用许多上游工具;SearchForge 则以稳定、可嵌入的检索 API 补充这一方案,供 RAG 应用使用。

配置

变量默认值用途
SEARCHFORGE_SEARXNG_URL未设置私有 SearXNG 基础 URL
GITHUB_TOKEN未设置可选的 GitHub 配额提升
CROSSREF_MAILTO未设置Crossref 礼貌池身份标识
BRAVE_SEARCH_API_KEY未设置可选的 Brave 后端
SEARCHFORGE_API_KEY未设置REST bearer 或 x-api-key
SEARCHFORGE_PORT3000REST 端口
SEARCHFORGE_HOST127.0.0.1绑定地址
SEARCHFORGE_TIMEOUT_MS8000每个依赖的超时时间
SEARCHFORGE_CACHE_TTL_MS300000内存缓存 TTL
SEARCHFORGE_CACHE_MAX_ENTRIES500缓存条目上限
SEARCHFORGE_RATE_LIMIT60每客户端每分钟请求数

生产环境边界

  • 绑定到公共接口前,请先设置 API 密钥。
  • 搜索结果和页面内容均是不可信输入;请对其进行分隔,并应用提示词注入防御措施。
  • 内置缓存和速率限制器仅在进程内生效。运行多个副本时,请使用共享基础设施。
  • 对外显示的错误中不包含提供商响应正文和凭据。
  • healthz 用于证明进程正在运行;/v1/doctor 用于检查依赖项。

请参阅 SECURITY.md、CONTRIBUTING.md 和 CHANGELOG.md。

原则

  1. 证据优先于生成的答案
  2. 优先采用免费和可自托管的方案,避免厂商锁定
  3. 部分结果优于彻底失败
  4. 如实报告功能和配额
  5. 稳定的契约和明确的来源信息
  6. 默认不进行遥测

许可证

MIT © Divyanshu。

如果 SearchForge 对你的 Agent 有帮助,请为仓库点星,并在 Discussions 中分享你的集成方案。

评论

支持 Markdown

第一次接触 MCP?

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

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