Siftdog
What it does
Self-hosted, Tavily-compatible web search, extract, crawl and map tools for AI agents.
- Connects Se ejecuta en tu computadora
- Account or key No key needed
- Category Búsqueda y memoria de IA
Instalación
Elige la app de IA que usas y copia la configuración.
Pasó 3/3 revisiones · Funciona en tu computadora · ✓ Comandos revisados el 14 nov 2026
Primero: ¿qué IA usas?
Elige tu app y los pasos aparecen abajo.
Funciona con Claude, pero hay que preparar algo antes
Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil
Instala Python (uv)
Una sola vez; sirve para todos los servidores que necesitan Python (uv)
Abre el archivo de configuración de la app de Claude de escritorio
SettingsDeveloperEdit Config
Pega esta configuración y guarda el archivo
{ "mcpServers": { "siftdog": { "command": "uvx", "args": [ "siftdog", "mcp" ] } } }Cierra Claude y vuelve a abrirlo
Pruébalo
Usa Siftdog y dime qué puedes hacer por mí; luego muéstrame una cosa✓ Si Claude dice que está usando Siftdog o muestra una herramienta de Siftdog en la respuesta, ya está conectado
1 ajuste(s) opcional(es) (funciona sin ellos)
El comando de arriba funciona sin estos valores. Añádelos solo si quieres cambiar algo, según la descripción del autor.
SEARXNG_URLURL of a SearXNG instance with JSON output enabled. Needed only for siftdog_search; extract, crawl and map work without it.
Las descripciones siguen en el inglés original.
Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión
ChatGPT todavía no puede conectar Siftdog
Siftdog se instala en tu computadora, pero ChatGPT solo conecta servidores que funcionan en la web
Lo que puedes hacer en su lugar
A · Usa una app que pueda conectar Siftdog
- Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil
- Instala Python (uv) en tu computadora primero (una sola vez)
- Instala Python (uv) en tu computadora primero (una sola vez)
- Instala Python (uv) en tu computadora primero (una sola vez)
Funciona con Claude Code, pero hay que preparar algo antes
Instala Python (uv) en tu computadora primero (una sola vez)
Instala Python (uv)
Una sola vez; sirve para todos los servidores que necesitan Python (uv)
Abre la Terminal
Mac: pulsa Command+Espacio y escribe Terminal · Windows: abre PowerShell
Pega este comando y pulsa Enter
claude mcp add --scope user siftdog -- uvx siftdog mcpEscribe /mcp en Claude Code
Deberías ver Siftdog en la lista como conectado
Pruébalo
Usa Siftdog y dime qué puedes hacer por mí; luego muéstrame una cosa✓ Si Claude Code dice que está usando Siftdog o muestra una herramienta de Siftdog en la respuesta, ya está conectado
1 ajuste(s) opcional(es) (funciona sin ellos)
El comando de arriba funciona sin estos valores. Añádelos solo si quieres cambiar algo, según la descripción del autor.
SEARXNG_URLURL of a SearXNG instance with JSON output enabled. Needed only for siftdog_search; extract, crawl and map work without it.
Las descripciones siguen en el inglés original.
Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión
Funciona con Cursor, pero hay que preparar algo antes
Instala Python (uv) en tu computadora primero (una sola vez)
Instala Python (uv)
Una sola vez; sirve para todos los servidores que necesitan Python (uv)
Abre el chat de IA de Cursor en modo Agent
Pruébalo
Usa Siftdog y dime qué puedes hacer por mí; luego muéstrame una cosa✓ Si Cursor dice que está usando Siftdog o muestra una herramienta de Siftdog en la respuesta, ya está conectado
1 ajuste(s) opcional(es) (funciona sin ellos)
El comando de arriba funciona sin estos valores. Añádelos solo si quieres cambiar algo, según la descripción del autor.
SEARXNG_URLURL of a SearXNG instance with JSON output enabled. Needed only for siftdog_search; extract, crawl and map work without it.
Las descripciones siguen en el inglés original.
Nombres de menú comprobados con la ayuda de Cursor el 11 nov 2026 · tu pantalla puede variar un poco según la versión
Funciona con VS Code, pero hay que preparar algo antes
Instala Python (uv) en tu computadora primero (una sola vez)
Instala Python (uv)
Una sola vez; sirve para todos los servidores que necesitan Python (uv)
Abre el chat de IA de VS Code en modo Agent
Pruébalo
Usa Siftdog y dime qué puedes hacer por mí; luego muéstrame una cosa✓ Si VS Code dice que está usando Siftdog o muestra una herramienta de Siftdog en la respuesta, ya está conectado
1 ajuste(s) opcional(es) (funciona sin ellos)
El comando de arriba funciona sin estos valores. Añádelos solo si quieres cambiar algo, según la descripción del autor.
SEARXNG_URLURL of a SearXNG instance with JSON output enabled. Needed only for siftdog_search; extract, crawl and map work without it.
Las descripciones siguen en el inglés original.
Nombres de menú comprobados con la ayuda de VS Code el 11 nov 2026 · tu pantalla puede variar un poco según la versión
Otras apps que usan MCP, como Windsurf, Zed o Gemini CLI, añaden servidores de forma distinta. Míralo en la lista de apps
Ver todas las apps que usan MCP →
La configuración JSON está en “Para desarrolladores”, abajo
Para desarrolladores: comandos de Terminal y configuración JSON
Instalado en tu computadora
Claude Code
claude mcp add --scope user siftdog -- uvx siftdog mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"siftdog": {
"command": "uvx",
"args": [
"siftdog",
"mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"siftdog": {
"command": "uvx",
"args": [
"siftdog",
"mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"siftdog": {
"type": "stdio",
"command": "uvx",
"args": [
"siftdog",
"mcp"
]
}
}
}Valores que debes completar
SEARXNG_URLenvURL of a SearXNG instance with JSON output enabled. Needed only for siftdog_search; extract, crawl and map work without it.
Las descripciones siguen en el inglés original.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
De un vistazo
- Descargas por semanai
- 25/sem
- Conexión
- Se ejecuta en tu computadora
- Última versióni
- 0.3.0
- Categoríai
- Búsqueda y memoria de IA
- Publicado en el registroi
- 28 sept 2026
- Último cambio de códigoi
- 9 oct 2026
- Creador
- khsarvar
- Paquetes
pypi: siftdog- Sitio web
- siftdog.com
- Estado en el registro
- Activo
Qué apps pueden usarlo
Según cómo se conecta este servidor y la documentación de cada app, comprobado el 10 nov 2026.
Se ejecutan en tu computadora en
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Qué puede hacer
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisiones básicasi
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 14 nov 2026
- ✓ Superada
El creador coincide con el repo
El nombre en el registro se verificó con la cuenta de GitHub khsarvar, dueña del repo
- ✓ Superada
Sigue en mantenimiento
Último cambio de código: hace 36 días
- ✓ Superada
Tiene licencia
Usa MIT
- – No aplica
El endpoint responde
Este se ejecuta en tu computadora; no hay endpoint en internet
- – No aplica
Inicio de sesión con OAuth
Se ejecuta en tu computadora y usa ajustes locales en su lugar
- … Aún sin revisar
Sin instrucciones ocultas en las descripciones de herramientas
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Conversación
Pregunta, comparte un consejo o avisa de que no funciona. Ordenado por lo que la gente marcó como útil.
Aún no hay publicaciones. Sé la primera persona en preguntar o compartir.
Lo publicado aquí lo escriben usuarios, no el equipo de PopNx.
Reseñas de usuarios
Aún no hay reseñas
Comparado con otros en Búsqueda y memoria de IAi
- Más estrellas que el 85% de los otros 6110 servidores de esta categoría
- Publicado en el registro más recientemente que el 45% de los otros 6110 servidores de esta categoría
- Revisiones básicas iguales o mejores que el 100% de los otros 6110 servidores de esta categoría
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Preguntas frecuentes
¿Es seguro Siftdog?
Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
¿Qué claves o códigos necesita?
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
¿Se ejecuta en mi computadora o en la nube?
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
¿Sigue en mantenimiento?
El repo de GitHub cambió por última vez hace 36 días, y la última versión (0.3.0) llegó al registro hace 2 meses.
¿Qué apps pueden usarlo?
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
¿Qué puedo usar en su lugar?
En la misma categoría: Context7, Codebase Memory, OpenSEO
Otros de la misma categoría
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
OpenSEO
Keyword research, site audits, rank tracking and AI visibility for your AI agent.
README del creador
Abrir el README
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Siftdog — open-source, self-hosted Tavily alternative
[Website](https://siftdog.com/) · [Benchmark](https://siftdog.com/benchmark/) · [Blog](https://siftdog.com/blog/) · [Hosted waitlist](https://siftdog.com/hosted/)
Siftdog is an open-source, self-hosted web search API for AI agents and LLM apps, and a drop-in replacement for the [Tavily](https://tavily.com) API. It serves the same /search, /extract, /crawl and /map endpoints with the same request and response shapes, so code written for Tavily (including the official Python SDK and the LangChain integration) works against your own server by changing only the base URL. It needs no search API key.
- Search through a SearXNG metasearch instance, with no search API keys
- Extraction of clean markdown or text from web pages with trafilatura
- Ranking: BM25 relevance blended with the upstream engine's order;
advanceddepth fetches each page and returns its most relevant chunks - Answers (
include_answer) written by Claude from the retrieved results - Crawling and site maps with depth, breadth, limit and regex path/domain filters
- MCP server for Claude Code, Claude Desktop, Cursor and other MCP clients, over HTTP at
/mcpor stdio withsiftdog mcp - SSRF protection: private and internal addresses are blocked, including via redirects and DNS rebinding
- MIT licensed
Use it as a drop-in Tavily replacement
Point the official Tavily clients at your Siftdog server with api_base_url. The key can be any string when auth is disabled, or one of your API_KEYS.
from tavily import TavilyClient
client = TavilyClient(api_key="your-siftdog-key", api_base_url="http://localhost:8000") results = client.search("latest python release", search_depth="advanced", max_results=5) pages = client.extract(urls=["https://en.wikipedia.org/wiki/Okapi_BM25"])
LangChain, through langchain-tavily:
from langchain_tavily import TavilySearch
search = TavilySearch( max_results=5, tavily_api_key="your-siftdog-key", api_base_url="http://localhost:8000" ) search.invoke({"query": "what is BM25 ranking"})
Tested with tavily-python 0.8.4 (search, extract, crawl, map; sync and async) and langchain-tavily 0.2.18 (search, extract).
Quick start
Docker Compose (includes SearXNG)
The full stack, with a SearXNG instance for /search, using the published image:
git clone https://github.com/khsarvar/siftdog && cd siftdog
cp .env.example .env # optional: set API_KEYS and ANTHROPIC_API_KEY docker compose up
Try a search:
curl -s localhost:8000/search -H "Content-Type: application/json" \
-d '{"query": "latest python release", "search_depth": "advanced"}'
If you set API_KEYS, add -H "Authorization: Bearer ". OpenAPI docs are served at http://localhost:8000/docs.
Docker image only
docker run -p 8000:8000 ghcr.io/khsarvar/siftdog
/extract, /crawl and /map work on their own. For /search, point it at a SearXNG instance with the JSON format enabled: -e SEARXNG_URL=http://your-searxng:8080. Images are published for linux/amd64 and linux/arm64, tagged latest and by version (0.1.0, 0.1).
pip
pip install siftdog
SEARXNG_URL=http://your-searxng:8080 siftdog --port 8000
Configuration is read from environment variables or a .env file (see Configuration).
Use with MCP clients (Claude, Cursor, ...)
Siftdog is also an MCP server with four read-only tools: siftdog_search, siftdog_extract, siftdog_crawl and siftdog_map.
Connect to a running Siftdog server (Streamable HTTP at /mcp). With Claude Code:
claude mcp add --transport http siftdog http://localhost:8000/mcp \
--header "Authorization: Bearer " # omit the header if API_KEYS is empty
Or run it locally over stdio with uv, no server needed. SEARXNG_URL is only needed for siftdog_search:
claude mcp add siftdog -e SEARXNG_URL=http://your-searxng:8080 -- uvx siftdog mcp
Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json) and most other clients take the same command as JSON:
{
"mcpServers": { "siftdog": { "command": "uvx", "args": ["siftdog", "mcp"], "env": { "SEARXNG_URL": "http://your-searxng:8080" } } } }
API keys work as for the REST API: send Authorization: Bearer , or append ?api_key= to the URL for clients that can't set headers (URLs can end up in logs, so prefer the header). The HTTP endpoint only answers requests addressed to localhost unless you list your hostname in MCP_ALLOWED_HOSTS.
Siftdog vs Tavily, Firecrawl and crw
| Siftdog | Tavily | Firecrawl | crw | |
|---|---|---|---|---|
| License | MIT | Proprietary (hosted service) | AGPL-3.0 | AGPL-3.0 |
| Self-hosted | Yes | No | Yes | Yes (also a managed API) |
| Tavily-compatible API | Yes | — | No (own API) | No (own API) |
| Search source | SearXNG metasearch | Proprietary | — | SearXNG (bundled) |
| JavaScript rendering | No (static HTML) | — | Yes | Yes (Lightpanda, Chrome fallback) |
| MCP server | Yes (HTTP and stdio) | Yes | Yes | Yes |
| Language | Python | — | TypeScript | Rust |
Measured results: Siftdog vs Tavily search benchmark (reproducible with bench/).
When to pick something else: if you'd rather not run infrastructure, or you want Tavily's neural reranking, use hosted Tavily. If you need JavaScript-rendered pages or a scraping platform with more features, look at Firecrawl or crw. Siftdog is for teams that want the Tavily API on their own servers under a permissive license.
FAQ
What is Siftdog?
Siftdog is an open-source web search and extraction API for AI agents. It reproduces the Tavily API (/search, /extract, /crawl, /map) on infrastructure you run yourself, using SearXNG for search results, trafilatura for content extraction and BM25 for relevance ranking.
Is Siftdog a drop-in replacement for Tavily?
For the four core endpoints, yes. The request and response fields match Tavily's, and the official tavily-python SDK and langchain-tavily work by setting api_base_url. The differences: relevance scores come from BM25 rather than a neural reranker, instructions (crawl/map) and include_image_descriptions (search) are accepted but ignored, and Tavily's /research endpoint isn't implemented.
Do I need a search API key?
No. Search results come from SearXNG, which queries public search engines. The only optional key is ANTHROPIC_API_KEY, used when a request sets include_answer.
Does it work with LangChain?
Yes, through the official langchain-tavily package. Pass api_base_url pointing at your Siftdog server, as in the example above.
Does Siftdog have an MCP server?
Yes. The API server exposes MCP over Streamable HTTP at /mcp, and uvx siftdog mcp runs it over stdio for local clients such as Claude Desktop and Cursor. See Use with MCP clients.
Why does /search return 502 "failing engines"?
SearXNG gets its results by querying public search engines (Brave, DuckDuckGo, Google and others), and those engines rate-limit or CAPTCHA an IP that sends many searches. When every engine is failing, Siftdog returns 502 with the engines and reasons, for example failing engines: brave (Suspended: too many requests), duckduckgo (CAPTCHA), rather than an empty result list your agent would mistake for "nothing found". Engines recover on their own, from minutes to about a day. If some engines still work, you get their results and the server logs which engines were down. To reduce blocking, enable more engines in docker/searxng/settings.yml and avoid bursts of identical searches.
Is it safe to expose Siftdog on a public server?
Set API_KEYS so only your clients can call it. /extract and /crawl fetch caller-supplied URLs, so Siftdog refuses private, loopback and link-local addresses, checked on every redirect and at connect time against the exact address used, which also stops DNS rebinding.
Can I run it without Docker?
Yes: pip install siftdog, then run siftdog with SEARXNG_URL pointing at any SearXNG instance with the JSON output format enabled. /extract, /crawl and /map work without SearXNG.
Local development
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
docker compose up searxng -d # uncomment its ports: in docker-compose.yml first .venv/bin/siftdog # http://127.0.0.1:8000, docs at /docs .venv/bin/pytest # offline test suite .venv/bin/ruff check . && .venv/bin/ruff format .
API
All endpoints take JSON POST bodies and a Authorization: Bearer header (a legacy api_key body field is also accepted). If API_KEYS is empty, auth is disabled.
| Endpoint | Purpose | Key parameters |
|---|---|---|
/search | Web search | query, search_depth (basic/advanced), topic (general/news), time_range, max_results, chunks_per_source, include_answer, include_raw_content, include_images, include_domains, exclude_domains |
/extract | Clean content from up to 20 URLs | urls, extract_depth, format (markdown/text), include_images |
/crawl | Crawl a site and return page content | url, max_depth, max_breadth, limit, select_paths, exclude_paths, select_domains, exclude_domains, allow_external, format |
/map | List a site's URLs without content | same traversal parameters as /crawl |
Differences from hosted Tavily: instructions (crawl/map) and include_image_descriptions are accepted but ignored; relevance scores come from BM25, not a neural reranker.
Configuration
Environment variables (see .env.example): API_KEYS, SEARXNG_URL, ANSWER_ENABLED, ANSWER_MODEL, ANSWER_EFFORT, FETCH_TIMEOUT, FETCH_CONCURRENCY, FETCH_MAX_BYTES, ALLOW_PRIVATE_NETWORKS, CRAWL_MAX_LIMIT, MCP_ALLOWED_HOSTS.
MCP_ALLOWED_HOSTS lists the hostnames the /mcp endpoint answers besides localhost, for example search.example.com,search.example.com:*. Requests addressed to any other host get 421, which protects a local server from DNS-rebinding attacks by web pages.
Security: /extract and /crawl make the server fetch caller-supplied URLs. Requests to private, loopback and link-local addresses are blocked (including via redirects) unless ALLOW_PRIVATE_NETWORKS=true. The check runs at connect time against the exact address being connected to, so DNS rebinding can't get around it. Fetches of user URLs ignore HTTP(S)_PROXY, since a proxy would hide the destination address. As defense in depth for hostile multi-tenant deployments, also restrict egress at the network level.
License
Siftdog is released under the MIT License. The "Siftdog" name is covered separately by the trademark policy: use the code freely, but forks and hosted services need a different name.