wigolo
Local-first web intelligence MCP server for AI coding agents. Ships ten tools over stdio. All network results land in a local knowledge cache.
Host-LLM synthesis (read me first)
Wigolo has no internal LLM. It returns structured evidence so the calling model (you) writes the final answer. Fold structure into your reply rather than collapsing it away:
searchwithformat: "highlights"— ML-scored passages +citations. Quote and cite [N].research— when MCP sampling is unavailable (common), the output carries abriefwithtopics,highlights,key_findings. Use it as the scaffold for the report you write.find_similar— may return acold_startstring. Pass it to the user; it explains why results came from the web and how to warm the cache.extractwithmode: "structured"— one call for tables +<dl>definitions + JSON-LD + chart hints + key-value pairs.fetchmetadata — surfacesog_type,canonical_url, andog_image; usecanonical_urlto dedupe tracked/canonical URLs.
Quick Setup
Claude Code:
claude mcp add wigolo -- npx wigolo
Cursor / VS Code / any MCP client:
{
"mcpServers": {
"wigolo": {
"command": "npx",
"args": ["wigolo"]
}
}
}
Warmup (recommended, one-time):
npx wigolo warmup # installs browser engine + bootstraps search engine
npx wigolo warmup --all # also installs Firefox, WebKit, ML reranker, and embeddings
npx wigolo warmup --force # wipe search engine state and rebuild
Warmup flags: --force, --all, --reranker, --firefox, --webkit, --embeddings, --no-searxng, --verify.
Tools
fetch
Fetch a single URL and return clean markdown. Use when you already have a specific URL.
Parameters:
- url (string, required)
- render_js: "auto" (default) | "always" | "never"
- use_auth: boolean (default false) — reuses the user's browser session
- max_chars: number
- section: string — return only the content under a heading
- section_index: number (default 0) — which heading match when multiple hit
- screenshot: boolean (default false)
- headers: object
- force_refresh: boolean — bypass cache
- actions: array of {type, selector, text, ms, timeout, direction, amount} — click, type, wait, wait_for, scroll, screenshot. Forces browser rendering when present.
Example:
{ "url": "https://react.dev/reference/react/useState", "section": "Para
(截断)