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 分