Skip to main content

smart-web-search-mcp

English | 中文说明见下

A Model Context Protocol (MCP) stdio server that exposes one LLM tool — smart_web_search — backed by a 5-provider fusion router with automatic cascade fallback:

L1  wigolo (stdio, 18 engines, free) + keenable (HTTP, free tier)   in parallel
L2  tinyfish (wallet) → tavily (1000/mo free)                       serial pair
L3  serper (Google; 2500 one-time free, then paid)                  unconditional fallback

The router picks the first layer with enough results and stops — cheap providers answer first, paid ones only fire when needed. Every call returns the full routing chain so the LLM can learn which layer served it.

Output format (v0.2.0)

By default the tool returns readable result blocks (aligned with what the major search MCP servers converged on), not raw provider JSON:

[1] Title: Example Page
    URL: https://…
    Published: 2026-09-28
    Snippet: …

──
from L1 wigolo | kept 3 of 20 | layers: wigolo(degraded 10) → keenable(ok 10) | 4261ms

Pass output_format: "json" to get a structured envelope instead: { query, results[], meta, chain } with whitelist fields only (title/url/snippet/published/source per result).

The package ships two console commands:

  • smart-web-search-mcp — the MCP stdio server (spawn-per-call core, zero cross-call state; Node ≥ 22.7 required for strip-only TypeScript execution — no build step)
  • smart-web-search-install — a zero-dependency Python installer that detects installed AI agent CLIs (pi, Cursor, Cline, opencode, zcode, Qoder, mcode, commandcode, dsh, reasonix) and idempotently wires the MCP entry into each one's config

Install

uv tool install smart-web-search-mcp    # or: pipx install smart-web-search-mcp
smart-web-search-install --list         # detect installed agents (read-only)
smart-web-search-install --dry-run      # preview config writes
smart-web-search-install                # wire all detected agents (idempotent)

Manual MCP config (any client that speaks stdio MCP):

command: smart-web-search-mcp
args:    []

Provider keys (all optional)

Provider Tier Without key With key
wigolo L1, free needs npm i -g wigolo —
keenable L1, free shared public tier (1K req/hour, auto-backoff on 429) 100K/mo (KEENABLE_API_KEY)
tinyfish L2, pay-as-you-go skipped TINYFISH_API_KEY
tavily L2, 1000/mo free skipped (opt-in) TAVILY_API_KEY
serper L3, paid after free quota skipped (opt-in) SERPER_API_KEY

Keys are read from environment variables or ~/.pi/agent/extensions/smart-web-search-mcp.config.json (see smart-web-search-mcp.config.example.json shipped in the package). Without any keys, L1 wigolo still works — the search is functional out of the box.

Requirements: Python ≥ 3.10 (installer only), Node ≥ 22.7 (MCP server; uses built-in TypeScript type-stripping).

中文说明

smart-web-search-mcp 是一个 MCP stdio server:对 LLM 只暴露 1 个 工具 smart_web_search,内部按「梯次降级」策略路由 5 个搜索 provider——L1 wigolo + keenable(免费,并行)→ L2 tinyfish → tavily(串行)→ L3 serper(Google,无条件兜底)。低成本的层先答,付费层只在不够用时才烧;每次调用返回完整 routing chain,LLM 可感知是哪一层接住的。

安装

uv tool install smart-web-search-mcp    # 或 pipx install smart-web-search-mcp
smart-web-search-install                # 自动探测本机 agent 并写入 MCP 配置(幂等)

支持自动探测并写入 10 家 agent 的 MCP 配置:pi(≥0.99.0 内置 MCP,旧扩展自动迁移)/ Cursor / Cline / opencode / zcode / Qoder CLI / mcode(MiniMax Code)/ commandcode / dsh / reasonix。未安装的自动跳过;覆盖已有条目前备份 .bak。

凭据

  • 全部可选:不配任何 key 时 wigolo(L1)开箱即用。
  • key 来源:环境变量(TINYFISH_API_KEY / TAVILY_API_KEY / SERPER_API_KEY / KEENABLE_API_KEY)或 ~/.pi/agent/extensions/smart-web-search-mcp.config.json(opt-in 开关 + 显式 key,模板见包内 smart-web-search-mcp.config.example.json)。
  • keenable 无 key 走共享公共层(1K 次/小时,429 自动节流 60s)。
  • query(必填);max_results(默认 5);intent(general/news/paper/code/research,影响路由);recency(day/week/month/year);include_domains / exclude_domains(逗号分隔域名黑白名单,跨层生效);depth(basic/advanced);output_format(text 默认 | json)。

输出格式(v0.2.0 起)

  • 默认 text:标签块文本([1] Title: … / URL: … / Published: …(有则给)/ Source: …(有则给)/ Snippet: …,条目间空行),底部一行页脚:from L<层> <provider> | kept <截后> of <截前> | dedup: <去重前>→<去重后>(L1 有重复时) | layers: <各层(状态 条数)> | <总耗时>ms。空结果回单句 No results found (layers tried: …)。
  • output_format:"json":结构化 envelope { query, results[], meta, chain },results 每条只含白名单字段 title/url/snippet/published/source,chain 只含 layer/provider/status/result_count/latency_ms/error。
  • 行为变更(相对 0.1.x):结果文本不再是 provider 原始 JSON;L1 双源合并按 URL 去重后截到 max_results(此前两源各截一份、最多 2×max)。需要旧式结构化数据请用 output_format:"json"。

环境要求

  • Python ≥ 3.10(安装器,零依赖)
  • Node ≥ 22.7(MCP server 核心:TS strip-only 直跑,免 esbuild/免打包)
  • 可选:npm i -g wigolo(L1 免费源;缺失自动降级到其它层)

License

MIT

Metadata

Release files for smart-web-search-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for smart-web-search-mcp 0.2.0
File Size Uploaded
smart_web_search_mcp-0.2.0.tar.gz 57.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for smart-web-search-mcp 0.2.0
File Interpreter ABI Platform
smart_web_search_mcp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 110.5 kB

Release files / smart_web_search_mcp-0.2.0.tar.gz

Download URL smart_web_search_mcp-0.2.0.tar.gz
Size 57.7 kB
Tags Source
SHA-256 checksum
How to use checksums
566cc89ccf74c5df7c7a4221ce8c97baf7e65ea24cb548b9ce6e31a3b169d64b
BLAKE2b-256 checksum
How to use checksums
1c90170ae0190a4cbb5b14a22703b0d4b62f07dffc534f1a554ca5900924b450
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release files / smart_web_search_mcp-0.2.0-py3-none-any.whl

Download URL smart_web_search_mcp-0.2.0-py3-none-any.whl
Size 52.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4195fcd84b945ee5e539da49ea883b749654421dbc978ed186989879718577f1
BLAKE2b-256 checksum
How to use checksums
40d424db8dbdde79e8b2eb2b2feab871a1452cdfcd9d64a380c9214b5089f35a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page