Self-hosted, Tavily-compatible web search, extract, crawl and map tools for AI agents.
MCPpedia last refreshed this data
io.github.khsarvar/siftdog is an MCP server that self-hosted, Tavily-compatible web search, extract, crawl and map tools for AI agents. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 82/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"siftdog": {
"env": {
"SEARXNG_URL": "http://your-searxng:8080"
},
"args": [
"siftdog",
"mcp"
],
"command": "uvx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Self-hosted, Tavily-compatible web search, extract, crawl and map tools for AI agents.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked siftdog against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in search / browser
Open-source web scraper for AI agents with scrape, crawl, and map tools
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
Search-first MCP server for JavaScript reverse engineering: 735 tools across 36 domains.
MCP server for advanced web search using Tavily
MCP Security Weekly
Get CVE alerts and security updates for io.github.khsarvar/siftdog and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Website · Benchmark · Blog · Hosted waitlist
Siftdog is an open-source, self-hosted web search API for AI agents and LLM apps, and a drop-in
replacement for the Tavily 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.
advanced depth fetches each page and returns its most relevant chunksinclude_answer) written by Claude from the retrieved results/mcp or stdio with siftdog mcpPoint 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).
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 <key>". OpenAPI docs are served at
http://localhost:8000/docs.
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 install siftdog
SEARXNG_URL=http://your-searxng:8080 siftdog --port 8000
Configuration is read from environment variables or a .env file (see
Configuration).