Searchpin

io.github.telly6由 GitHub 账号 telly6 发布v1.0.10更新于 Nov 7, 2026

Self-hosted web search for AI agents — zero API keys, embedding rerank, multi engine parallel search

概览

AI 生成的概览

面向 AI 智能体的自托管网页搜索与抓取服务,并行查询百度、搜狗和必应,并用嵌入模型对结果重排序,无需 API 密钥。

可以做什么
  • 在百度、搜狗、必应中国和必应国际四个引擎上并行搜索,并报告各引擎的运行或跳过状态与重试倒计时。
  • 用本地嵌入模型合并并语义重排结果,标记与查询无关的结果。
  • 抓取网页并提取服务端渲染内容、JSON-LD 结构化数据和 microdata,返回精简的结构化数据。
  • 在本地识别并提取 PDF 文本,对无法读取或纯图片的 PDF 返回明确错误。
  • 可通过 Python API 调用相同的搜索与抓取功能。
适用场景
适合需要无配额、零成本的网页搜索与页面读取的智能体,尤其是长期在本地运行的智能体,或无法访问 Google 类服务的中国网络环境。
运行要求
以本地进程运行,可从 PyPI 安装(pip install searchpin 后运行 searchpin-setup),或用 uvx、Docker 镜像启动。无需账号、API 密钥或环境变量。首次运行会通过 hf-mirror.com 下载约 118MB 的嵌入模型,并需要能访问各搜索引擎的网络。
安装前请注意
搜索请求直接发往百度、搜狗和必应,可能被限流或出现验证码,此时该引擎会被暂停一段时间。查询与抓取的页面内容会发送给这些第三方。PDF 提取上限为 25 MiB、200 页和 200 万字符,且不含 OCR。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Searchpin,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

English | 简体中文

Searchpin

[PyPI version] [Python] [License] [Docker]

Self-hosted web search for AI agents — zero API keys, zero cost. In 2026, the center of gravity in AI development is shifting from "chatting" to "autonomous task execution" — locally deployed, long-running agents are becoming the norm. When an agent runs 24/7, every web search must not be interrupted by API quotas or billing. Searchpin was designed for this from day one: zero external dependencies, zero usage limits. Agents can search, fetch, and verify without restriction, and developers never worry about cost.

Why Searchpin

🇨🇳 Optimized for Chinese Network Environments

Defaults to Baidu, Sogou, Bing CN, and Bing Intl — four search engines queried in parallel. Works natively within China's network, no proxy or VPN needed. Most overseas alternatives rely on Google, DuckDuckGo, or Brave, which are largely inaccessible inside China.

One running server sends Baidu searches at least 20 seconds apart. A Baidu captcha pauses Baidu for 10 minutes. A Sogou challenge pauses Sogou for 60 seconds, then 120 seconds on consecutive challenges. Other engines remain eligible; a search skips a paused engine without waiting for it. In web_search, search_pages[].engines reports which engines ran or were skipped, and retry_after_seconds reports the local time remaining. The next eligible search tests recovery; the timer does not guarantee that the upstream engine has unblocked access.

🧠 Semantic Re-ranking — a Differentiator Few Offer

Results from all four engines are not simply concatenated. They are merged and re-ranked by an embedding model based on semantic similarity to the query. What your AI receives is a curated list of high-quality results, not a pile of noisy links. Among free MCP search servers, very few offer this capability.

💰 Completely Free, Zero Barrier

No account registration, no API key application, no usage limits. No dependency on any commercial API — no risk of sudden paywalls or quota restrictions. The entire pipeline runs on your own machine.

🔍 Built for Modern Websites

Built-in SSR content extraction can parse pages rendered by Next.js, Nuxt, and similar frameworks, and extract JSON-LD structured data and microdata. Plain HTML scraping gets nothing from these sites.

web_fetch also detects PDFs by content type or file signature and extracts page-labelled text locally. Unreadable, encrypted, or image-only PDFs return an explicit error instead of binary garbage; OCR is not included. Extraction is limited to 25 MiB, 200 pages, and 2 million text characters.

🛡️ Pollution Detection + Cross-Verification

Automatically detects and flags results unrelated to your query. Four independent search engines provide cross-verifiable results, enabling your LLM to corroborate information across sources for more credible answers.

⚡ Deliberate Engineering Trade-offs

Every design decision was made with real-world usage in mind:

  • Token-conscious — Search results return only titles, URLs, and snippets. Structured extraction data is compact and truncated. Your LLM decides which pages are worth fetching in full, without wasting context window.
  • Fast response — Four engines queried asynchronously in parallel. Total time depends on the slowest engine, not the sum of all four. A typical search completes in 1–2 seconds.
  • Memory-friendly — The embedding model (~118MB) is downloaded once through hf-mirror.com (HuggingFace mirror for China), then reused from local cache.

Quick Start

bash
pip install searchpin && searchpin-setup

On first run, the embedding model (~118MB) is downloaded once via hf-mirror.com (HuggingFace mirror for China). That is the only one-time setup.

Configuration

Claude Desktop / Cursor / any MCP client

Add to your mcpServers config:

json
{  "mcpServers": {    "Searchpin": {      "command": "searchpin-server",      "args": []    }  }}

VS Code

[Install in VS Code] [Install in VS Code Insiders]

Or manually, add to .vscode/mcp.json:

json
{  "servers": {    "Searchpin": {      "command": "searchpin-server",      "args": []    }  }}

Docker

bash
docker run -i --rm ghcr.io/telly6/searchpin:latest

Python API

python
from searchpin import SearchEngine
engine = SearchEngine()results = engine.search("Python 3.13 新特性")page = engine.fetch("https://docs.python.org/3/whatsnew/3.13.html")engine.close()

来源:README.md,提交 9b912bb

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:该软件包类型无法在沙箱中运行。

版本历史

3
  1. v1.0.10最新Nov 7, 2026
  2. v1.0.9Oct 23, 2026
  3. v1.0.7Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。