Open-source web search API and MCP server for LLMs, AI agents, and RAG. Free sources, self-hosted SearXNG, REST, CLI.
git clone https://github.com/divyanshu-iitian/SearchForge{
"mcpServers": {
"searchforge": {
"command": "node",
"args": ["/path/to/SearchForge/dist/index.js"]
}
}
}Resumen de MCP Servers
<div align="center">
# SearchForge
### Open-source web search API and MCP server for LLMs, agents, and RAG.
[](https://github.com/divyanshu-iitian/SearchForge/actions/workflows/ci.yml)
[](LICENSE)
[](package.json)
[](https://modelcontextprotocol.io)
[](https://divyanshu-iitian.github.io/SearchForge/)
[](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.divyanshu-iitian/searchforge)
**One local gateway. Four search capabilities. Clean Markdown. REST, MCP, CLI, and TypeScript.**
[Website](https://divyanshu-iitian.github.io/SearchForge/) · [Quick start](#quick-start) · [Free tools](#free-tools) · [MCP](#mcp) · [API](#rest-api) · [Design](#how-it-works)
</div>
---
**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
| Capability | Default source | Cost / credentials |
| ----------- | ----------------------------------- | ------------------------------ |
| `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. 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
### Zero-key local CLI
```bash
git clone https://github.com/divyanshu-iitian/SearchForge.git
cd SearchForge
npm install
npm run build
node dist/cli.js search "open source agent frameworks" --category code
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
```
### 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 "browser agent" --category code
searchforge search "semantic reranking" --category academic --json
searchforge search "Show HN search engine" --category community
```
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.
SearchForge is also published in the
[official MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.divyanshu-iitian/searchforge)
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/search
Content-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/read
Content-Type: application/json
{"url":"https://example.com/article"}
```
Other endpoints:
```text
GET /healthz Process liveness
GET /v1/providers Configured capabilities and access tiers
GET /v1/doctor Live dependency health
```
See the full [OpenAPI contract](openapi.yaml).
## 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
| Provider | Capability | Access | Enabled |
| ------------------------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------------ | ------------------------- |
| [SearXNG](https://docs.searxng.org/) | Web | Self-hosted, no vendor fee | `SEARCHFORGE_SEARXNG_URL` |
| Wikipedia | Web knowledge fallback | No key | Always |
| [GitHub](https://docs.github.com/rest/search/search) | Code repositories | No key; 60 unauthenticated REST requests/hour, search has tighter limits | Always |
| [Crossref](https://www.crossref.org/documentation/retrieve-metadata/rest-api/) | Academic metadata | No key; `mailto` recommended | Always |
| [HN Algolia](https://hn.algolia.com/api) | Community | No key; community-operated availability | Always |
| [Jina Reader](https://jina.ai/reader/) | URL to Markdown | No key; documented no-key quota currently 20 RPM | Always |
| [Brave Search](https://brave.com/search/api/) | 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.
## How it works
```text
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
```
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](https://github.com/Panniantong/Agent-Reach). Agent Reach helps an agent operate many upstreamLo que la gente pregunta sobre SearchForge
¿Qué es divyanshu-iitian/SearchForge?
+
divyanshu-iitian/SearchForge es mcp servers para el ecosistema de Claude AI. Open-source web search API and MCP server for LLMs, AI agents, and RAG. Free sources, self-hosted SearXNG, REST, CLI. Tiene 0 estrellas en GitHub y se actualizó por última vez today.
¿Cómo se instala SearchForge?
+
Puedes instalar SearchForge clonando el repositorio (https://github.com/divyanshu-iitian/SearchForge) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar divyanshu-iitian/SearchForge?
+
divyanshu-iitian/SearchForge aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.
¿Quién mantiene divyanshu-iitian/SearchForge?
+
divyanshu-iitian/SearchForge es mantenido por divyanshu-iitian. La última actividad registrada en GitHub es de today, con 0 issues abiertos.
¿Hay alternativas a SearchForge?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega SearchForge en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/divyanshu-iitian-searchforge)<a href="https://claudewave.com/repo/divyanshu-iitian-searchforge"><img src="https://claudewave.com/api/badge/divyanshu-iitian-searchforge" alt="Featured on ClaudeWave: divyanshu-iitian/SearchForge" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!