Getting started
Requirements
Section titled “Requirements”- Node.js ≥ 20
- A Brave Search API key (free tier is enough for development)
- An LLM endpoint — one of:
- An OpenRouter API key (default, recommended for first run)
- A local OpenAI-compatible server (LM Studio, Ollama, llama-server, vLLM)
- Optional: a Google Safe Browsing API key for the orthogonal
safety_flagaxis
Install
Section titled “Install”git clone https://github.com/enmito/sift-mcp.gitcd sift-mcpnpm installcp .env.example .envEdit .env:
BRAVE_API_KEY=...LLM_API_KEY=... # OpenRouter key by defaultLLM_ENDPOINT=https://openrouter.ai/api/v1LLM_MODEL=meta-llama/llama-3.3-70b-instructGOOGLE_SAFE_BROWSING_KEY=... # optionalBuild:
npm run buildRegister as an MCP server
Section titled “Register as an MCP server”Add to your MCP client’s config file. The path depends on the client:
- Claude Desktop —
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) /%APPDATA%\Claude\claude_desktop_config.json(Windows) - Claude Code —
.mcp.jsonin the project root - Cursor / Windsurf / Zed — check your client’s MCP settings panel
{ "mcpServers": { "sift": { "command": "node", "args": ["/absolute/path/to/sift-mcp/dist/index.js"], "env": { "BRAVE_API_KEY": "your-brave-api-key", "LLM_API_KEY": "your-openrouter-api-key", "LLM_JUDGE_ENABLED": "true", "LLM_ENDPOINT": "https://openrouter.ai/api/v1", "LLM_MODEL": "meta-llama/llama-3.3-70b-instruct" } } }}Restart the client. The search_vectorized tool becomes available to the model.
Local LLM alternative
Section titled “Local LLM alternative”If you prefer to keep everything local, replace the LLM env vars:
"LLM_ENDPOINT": "http://localhost:1234/v1", "LLM_MODEL": "openai/gpt-oss-20b"LLM_API_KEY can be omitted for unauthenticated local endpoints. See Choosing an LLM for tradeoffs.
Your first call
Section titled “Your first call”From a chat with the MCP-enabled model:
Use search_vectorized to find “best noise cancelling headphones 2026” and tell me which sources look biased.
The model invokes the tool, receives the augmented SERP, and should caveat vendor/affiliate sources using the tier and summary_hints[] fields.
Next steps
Section titled “Next steps”- Using sift with an agent — the downstream contract, re-query vocabulary, anti-patterns
- Verbosity modes — trade detail for tokens
- Learning loop — inspect and review classifications
- Configuration reference — every environment variable