Multi-engine web search
seia is a multi-engine web search library and CLI. It provides a unified interface to query diverse search backends. Engines that do not require authentication work out of the box with zero configuration.
# Basic search (no API key required)
seia search "rust async patterns"
# Choose a specific engine
seia search "Klein bottle" --engine wikipedia
# JSON output
seia search "climate change" --json
# Through a proxy
HTTPS_PROXY=http://localhost:7890 seia search "hello world"Prebuilt binaries are published to npm, so you can run seia with a single
command — no cargo build:
npx @celestia-island/seia search "rust async patterns"
npx @celestia-island/seia mcp # the MCP server (needs the mcp build)The @celestia-island/seia root package pulls the right platform subpackage
(-linux-x64 / -darwin-arm64 / -win32-x64) automatically. To pin a version:
npx @celestia-island/seia@0.1.0 search "Klein bottle" --engine wikipediause seia::{SearchClient, Engine};
let client = SearchClient::new();
let results = client.search("rust async", Engine::Wikipedia).await?;Build seia with the mcp feature and run the stdio server — it exposes the
multi-engine search client to AI coding assistants over the Model Context
Protocol:
seia mcpThe server advertises three tools: seia_search (one engine, defaults to
duckduckgo so it needs no key), seia_search_multi (try a chain of engines,
return the first with results), and seia_list_engines (the nine engines and
their API-key env vars). Wire it into an MCP client:
{
"mcpServers": {
"seia": { "command": "seia", "args": ["mcp"] }
}
}Set SEIA_PROXY to route search requests through a proxy
(e.g. http://localhost:7890); HTTPS_PROXY / HTTP_PROXY are also honoured.
just ci # fmt-check + clippy + test
just test # cargo test
just test-proxy # run tests through localhost:7890 proxy (see tests/integration.rs)| Engine | Auth |
|---|---|
| DuckDuckGo | None |
| Wikipedia | None |
| SearXNG | SEARXNG_URL |
| Tavily | TAVILY_API_KEY |
| Bing | BING_SEARCH_API_KEY |
| Brave | BRAVE_SEARCH_API_KEY |
| 秘塔 (MetaSo) | METASO_API_KEY |
| 智谱 (Zhipu) | ZHIPU_API_KEY |
| 博查 (Bocha) | BOCHA_API_KEY |
SySL-1.0 (Synthetic Source License). See LICENSE or the SySL website.
For production MCP deployments, use an auto-restart wrapper to keep the server alive across updates without interrupting the client session.
#!/bin/bash while true; do /path/to/seia mcp sleep 0.2 done
- The wrapper runs
seia mcpin awhile trueloop. - If the process exits, it restarts within 0.2 seconds.
- To update:
kill $(pgrep -f "seia mcp" | head -1)
