The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the SearchForge listing page.
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.
| Capability | Default source | Cost / credentials |
|---|---|---|
auto | Intent-routed source mix | No key by default |
web | Wikipedia; optional private SearXNG | No key / self-hosted |
code | GitHub repository search | No key; token optional |
academic | Crossref works and DOI metadata | No key |
community | Hacker News via Algolia | No key, community service |
read_url | Jina Reader | No 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.
The first run downloads and builds the package from GitHub. Searches use intent-aware auto routing unless you select a category.
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.
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_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.
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.
SearchForge exposes three stdio tools:
web_search — routed, citation-ready structured searchread_url — clean Markdown from a public URLsearch_status — live capability and latency reportThe search and status tools return MCP structured content as well as readable text.
Run the MCP server straight from GitHub without a clone:
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:
Other endpoints:
See the full OpenAPI contract.
Until an npm release is published:
| Provider | Capability | Access | Enabled |
|---|---|---|---|
| SearXNG | Web | Self-hosted, no vendor fee | SEARCHFORGE_SEARXNG_URL |
| Wikipedia | Web knowledge fallback | No key | Always |
| GitHub | Code repositories | No key; 60 unauthenticated REST requests/hour, search has tighter limits | Always |
| Crossref | Academic metadata | No key; mailto recommended | Always |
| HN Algolia | Community | No key; community-operated availability | Always |
| Jina Reader | URL to Markdown | No key; documented no-key quota currently 20 RPM | Always |
| Brave Search | Web | API key | BRAVE_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.
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.
| Variable | Default | Purpose |
|---|---|---|
SEARCHFORGE_SEARXNG_URL | unset | Private SearXNG base URL |
GITHUB_TOKEN | unset | Optional GitHub quota increase |
CROSSREF_MAILTO | unset | Crossref polite-pool identity |
BRAVE_SEARCH_API_KEY | unset | Optional Brave backend |
SEARCHFORGE_API_KEY | unset | REST bearer or x-api-key |
SEARCHFORGE_PORT | 3000 | REST port |
SEARCHFORGE_HOST | 127.0.0.1 | Bind address |
SEARCHFORGE_TIMEOUT_MS | 8000 | Per-dependency timeout |
SEARCHFORGE_CACHE_TTL_MS | 300000 | In-memory cache TTL |
SEARCHFORGE_CACHE_MAX_ENTRIES | 500 | Cache entry bound |
SEARCHFORGE_RATE_LIMIT | 60 | Requests/client/minute |
healthz proves the process is alive; /v1/doctor checks dependencies.See SECURITY.md, CONTRIBUTING.md, and CHANGELOG.md.
MIT © Divyanshu.
If SearchForge helps your agent, star the repository and share your integration in Discussions.