SearchForge

io.github.divyanshu-iitian由 GitHub 账号 divyanshu-iitian 发布v0.2.0更新于 Oct 27, 2026

Free open-source web search and page reading for LLMs, AI agents, and RAG.

概览

AI 生成的概览

免费开源的网页搜索与网页读取 MCP 服务器,为助手提供按意图路由、可直接引用的搜索结果,并把公开网址转成干净的 Markdown。

可以做什么
  • 按意图路由在网页、代码、学术与社区来源中搜索,返回去重、融合排序且便于引用的结果
  • 读取公开的 HTTP(S) 网址,把页面内容转成适合 LLM 或 RAG 使用的干净 Markdown
  • 查看各来源的实时能力、访问层级与延迟,判断哪些来源当前可用
  • 也可通过 REST API、命令行或 TypeScript SDK 使用同一套检索能力
适用场景
适合需要网页、代码、学术或社区搜索与网页读取,又不想接入付费搜索服务商的场景,尤其是重视来源溯源与各来源健康状态的 RAG 流程或智能体工作流。
运行要求
以本地 stdio 进程运行,可通过 npx 从 GitHub 启动、克隆后用 Node.js 构建,或用 Docker 运行已发布的 OCI 镜像。默认来源均无需密钥;可选配置包括 SEARCHFORGE_SEARXNG_URL(自建 SearXNG 地址)、GITHUB_TOKEN(提高 GitHub 配额)、CROSSREF_MAILTO(Crossref 礼貌池标识)和 BRAVE_SEARCH_API_KEY(Brave 后端)。需要能访问各上游来源的网络。
安装前请注意
搜索结果与抓取的网页内容属于不可信输入,建议做分隔并采取提示注入防护。可选密钥包括 GITHUB_TOKEN 与 BRAVE_SEARCH_API_KEY。查询词和网址会发送给 Wikipedia、GitHub、Crossref、Hacker News(经 Algolia)、Jina Reader 以及所配置的 SearXNG 或 Brave 等第三方。读取工具会抓取远程页面;以 REST 模式对外提供服务前应先设置 API 密钥。

安装

在 SourceWeft 中

  1. 打开 控制台中的 SearchForge,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

SearchForge

Open-source web search API and MCP server for LLMs, agents, and RAG.

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

One local gateway. Intent-aware search. Clean Markdown. REST, MCP, CLI, and TypeScript.

Website · Quick start · Free tools · MCP · API · Design


SearchForge is a free, open-source web search API and MCP server for LLMs, AI agents, and retrieval-augmented generation (RAG) pipelines. It provides a predictable retrieval layer without forcing every project to integrate a paid search vendor. SearchForge routes each query to the right source, isolates provider failures, deduplicates URLs, fuses rankings, and turns public pages into LLM-ready Markdown.

It does not generate answers, hide citations, scrape public SearXNG instances, or send telemetry.

What you get

CapabilityDefault sourceCost / credentials
autoIntent-routed source mixNo key by default
webWikipedia; optional private SearXNGNo key / self-hosted
codeGitHub repository searchNo key; token optional
academicCrossref works and DOI metadataNo key
communityHacker News via AlgoliaNo key, community service
read_urlJina ReaderNo key, currently rate-limited

SearchForge starts with all no-key adapters enabled. auto is the default and routes code, research, and current/community intent to relevant sources while retaining a web fallback. A GitHub token only raises the public API quota, and Brave remains an optional keyed backend. Broad, independent web metasearch is provided by the included SearXNG stack.

Quick start

Try it without cloning

bash
npx --yes --package github:divyanshu-iitian/SearchForge \  searchforge search "latest open-source agent frameworks"

The first run downloads and builds the package from GitHub. Searches use intent-aware auto routing unless you select a category.

Zero-key local CLI

bash
git clone https://github.com/divyanshu-iitian/SearchForge.gitcd SearchForgenpm installnpm run build
node dist/cli.js search "latest open-source agent frameworks"node dist/cli.js search "retrieval augmented generation" --category academicnode dist/cli.js search "local LLM tooling" --category communitynode dist/cli.js read "https://example.com"node dist/cli.js doctor

Full web search with private SearXNG

bash
docker compose up --build
bash
curl -s http://localhost:3000/v1/search \  -H "content-type: application/json" \  -d '{"query":"open source vector databases","category":"web","limit":5}'

This starts SearchForge on port 3000 and a private, JSON-enabled SearXNG on port 8080. Before exposing the stack, change the SearXNG secret, set SEARCHFORGE_API_KEY, and terminate TLS at a trusted proxy.

Free tools

Search by capability

bash
searchforge search "latest open-source agent frameworks"searchforge search "browser agent" --category codesearchforge search "semantic reranking" --category academic --jsonsearchforge search "Show HN search engine" --category community

The default auto category detects code, academic, and current/community signals and queries the matching source families alongside the web fallback. Explicit categories prevent irrelevant providers from being queried. An explicit providers list overrides category routing, which is useful for evaluations.

Read a URL as Markdown

bash
searchforge read "https://example.com/article"

read_url accepts public HTTP(S) URLs only. Credentials, localhost, private IP literals, and non-web protocols are rejected. Responses are size-bounded, timed out, and cached.

Diagnose the whole retrieval path

bash
searchforge doctor

Doctor performs real, bounded probes and reports each provider's access tier, capability, latency, and error. A failed source produces degraded, not a misleading all-or-nothing status.

MCP

SearchForge exposes three stdio tools:

  • web_search — routed, citation-ready structured search
  • read_url — clean Markdown from a public URL
  • search_status — live capability and latency report
json
{  "mcpServers": {    "searchforge": {      "command": "node",      "args": ["/absolute/path/to/SearchForge/dist/mcp.js"],      "env": {        "SEARCHFORGE_SEARXNG_URL": "http://localhost:8080"      }    }  }}

The search and status tools return MCP structured content as well as readable text.

Run the MCP server straight from GitHub without a clone:

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

SearchForge is also published in the official MCP Registry as io.github.divyanshu-iitian/searchforge. To run the registry-backed OCI image directly from any MCP client that supports a Docker command:

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

REST API

Search

http
POST /v1/searchContent-Type: application/json
{  "query": "open source reranking models",  "category": "academic",  "limit": 8,  "language": "en",  "freshness": "month",  "safeSearch": "moderate"}
json
{  "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}

Read

http
POST /v1/readContent-Type: application/json
{"url":"https://example.com/article"}

Other endpoints:

text
GET /healthz       Process livenessGET /v1/providers  Configured capabilities and access tiersGET /v1/doctor     Live dependency health

See the full OpenAPI contract.

TypeScript SDK

ts
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");

Until an npm release is published:

bash
npm install github:divyanshu-iitian/SearchForge

Provider details

ProviderCapabilityAccessEnabled
SearXNGWebSelf-hosted, no vendor feeSEARCHFORGE_SEARXNG_URL
WikipediaWeb knowledge fallbackNo keyAlways
GitHubCode repositoriesNo key; 60 unauthenticated REST requests/hour, search has tighter limitsAlways
CrossrefAcademic metadataNo key; mailto recommendedAlways
HN AlgoliaCommunityNo key; community-operated availabilityAlways
Jina ReaderURL to MarkdownNo key; documented no-key quota currently 20 RPMAlways
Brave SearchWebAPI keyBRAVE_SEARCH_API_KEY

SearchForge intentionally does not configure public SearXNG instances. They often disable JSON or limit automated traffic; the Docker stack is the stable free path.

How it works

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

Each idempotent provider call has its own abortable timeout. One outage cannot erase healthy results. Tracking parameters are removed before deduplication, and every contributing provider remains in sources.

This capability-first design is inspired by Agent Reach. Agent Reach helps an agent operate many upstream tools directly; SearchForge complements that approach with one stable, embeddable retrieval API for RAG applications.

Configuration

VariableDefaultPurpose
SEARCHFORGE_SEARXNG_URLunsetPrivate SearXNG base URL
GITHUB_TOKENunsetOptional GitHub quota increase
CROSSREF_MAILTOunsetCrossref polite-pool identity
BRAVE_SEARCH_API_KEYunsetOptional Brave backend
SEARCHFORGE_API_KEYunsetREST bearer or x-api-key
SEARCHFORGE_PORT3000REST port
SEARCHFORGE_HOST127.0.0.1Bind address
SEARCHFORGE_TIMEOUT_MS8000Per-dependency timeout
SEARCHFORGE_CACHE_TTL_MS300000In-memory cache TTL
SEARCHFORGE_CACHE_MAX_ENTRIES500Cache entry bound
SEARCHFORGE_RATE_LIMIT60Requests/client/minute

Production boundary

  • Set an API key before binding to a public interface.
  • Search results and page content are untrusted input; delimit them and apply prompt-injection defenses.
  • The built-in cache and rate limiter are process-local. Use shared infrastructure for multiple replicas.
  • Provider bodies and credentials are excluded from surfaced errors.
  • healthz proves the process is alive; /v1/doctor checks dependencies.

See SECURITY.md, CONTRIBUTING.md, and CHANGELOG.md.

Principles

  1. Evidence over generated answers
  2. Free and self-hosted paths before vendor lock-in
  3. Partial results over total failure
  4. Honest capability and quota reporting
  5. Stable contracts and explicit provenance
  6. No telemetry by default

License

MIT © Divyanshu.

If SearchForge helps your agent, star the repository and share your integration in Discussions.

来源:README.md,提交 fe12c22

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.2.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分