Searchpin

io.github.telly6Published by GitHub account telly6v1.0.10Updated Nov 7, 2026

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

Overview

AI-generated overview

Self-hosted, key-free web search and page fetching for AI agents, querying Baidu, Sogou and Bing in parallel and re-ranking results with an embedding model.

What you can do
  • Search the web across four engines (Baidu, Sogou, Bing CN, Bing Intl) queried in parallel, with per-engine status and retry timers reported.
  • Merge and semantically re-rank results with a local embedding model, flagging results unrelated to the query.
  • Fetch a page and extract content from server-rendered sites, JSON-LD and microdata, returning compact structured data.
  • Detect and extract text from PDFs locally, with explicit errors for unreadable or image-only files.
  • Use the same search and fetch functions from a Python API.
When to use it
Useful when an agent needs unrestricted, cost-free web search and page reading, especially on long-running local agents or in Chinese network environments where Google-based alternatives are hard to reach.
Requirements
Runs as a local process, installed from PyPI (pip install searchpin, then searchpin-setup) or via uvx, or as a Docker image. No account, API key or environment variable is needed. First run downloads an embedding model of about 118MB through hf-mirror.com; network access to the search engines is required.
Before you install
Searches go directly to Baidu, Sogou and Bing, which may rate-limit or show captchas; the server then pauses that engine for a while. Fetched pages and queries leave your machine to those third parties. PDF extraction is capped at 25 MiB, 200 pages and 2 million characters, and OCR is not included.

Installation

In SourceWeft

  1. Open Searchpin in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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()

Source: README.md at commit 9b912bb

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

3
  1. v1.0.10LatestNov 7, 2026
  2. v1.0.9Oct 23, 2026
  3. v1.0.7Sep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.