SourceWeave Web Search

io.github.MRNAQA由 GitHub 帳號 MRNAQA 發布v0.5.0更新於 Oct 25, 2026

Fully local MCP server and CLI for web research

發布方自己的服務:Source

概覽

AI 產生的概覽

本機 MCP 伺服器與命令列工具,用於網路研究:搜尋網頁、依 page_id 讀取已存頁面,並直接讀取 URL。

可以做什麼
搜尋網頁,可依網域與 URL 篩選,回傳帶穩定 page_id 代號的精簡結果,方便後續引用(search_web)。依 page_id 讀取先前儲存的頁面,可附上關注重點(read_pages)。不先搜尋而直接讀取指定 URL,可附上關注重點(read_urls)。透過 MarkItDown 將 PDF 等支援的文件轉為文字。也可用命令列工具在不經 MCP 封裝的情況下執行同樣的搜尋優先流程。
適用情境
適合助理需要在公開網路上研究主題、接著閱讀找到的來源,並在工作階段中保持頁面引用穩定的情境。也適合搜尋、擷取與快取都在本機執行的自架環境。
執行需求
需要 Python 3.12 以上版本,透過 uvx 從 sourceweave-web-search 套件啟動。預設的受管本機執行環境需要支援 Compose 的 Docker,會自動啟動 SearXNG、Crawl4AI 以及 Redis 或 Valkey。也可設定 SOURCEWEAVE_SEARCH_SEARXNG_BASE_URL(必須包含 )、SOURCEWEAVE_SEARCH_CRAWL4AI_BASE_URL 與 SOURCEWEAVE_SEARCH_CACHE_REDIS_URL,指向自行執行或代管的服務。網頁搜尋與頁面擷取需要網路存取。
安裝前請注意
未設定明確端點時,伺服器會在本機啟動並監管 Docker 容器,並在最後一個受管程序結束時移除容器,但會保留具名磁碟區。它會擷取任意 URL,並將查詢送往所設定的 SearXNG 與 Crawl4AI 服務,因此端點應只指向可信服務。Redis URL 可能含有憑證,請勿放入共用設定。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 SourceWeave Web Search,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

SourceWeave Web Search

[Python 3.12+] [MIT License] [MCP] [Docker managed runtime]

Search-first MCP server and CLI for web research.

[!NOTE] sourceweave-search-mcp is the default local entrypoint. When explicit SOURCEWEAVE_SEARCH_* endpoint variables are absent, it discovers or starts the local Docker-backed stack automatically. If you already run the services yourself, set explicit endpoints and it will use them instead.

Overview • Getting started • Managed local runtime • MCP client setup • CLI • Container deployments • OpenWebUI • Runtime configuration • Development

Overview

SourceWeave Web Search gives MCP clients a compact three-tool contract for web research:

  • search_web(query, domains?, urls?, effort?) discovers sources and returns compact results with stable page_id handles.
  • read_pages(page_ids, focus?) reads stored pages by page_id.
  • read_urls(urls, focus?) reads direct URLs without searching first.

It combines:

ComponentRole
SearXNGSearch discovery
Crawl4AIClean HTML extraction
Redis or ValkeyPersisted page cache and page_id store
MarkItDownDocument conversion for PDFs and other supported files

Getting started

Requirements

  • Python 3.12+
  • Docker with Compose support for the default managed local runtime
  • Explicit SOURCEWEAVE_SEARCH_* endpoints only if you want hosted or self-managed services

Managed local runtime

Run the server from the published package:

bash
uvx --from sourceweave-web-search sourceweave-search-mcp

Or start the MCP server over HTTP:

bash
uvx --from sourceweave-web-search sourceweave-search-mcp \  --transport streamable-http \  --host 127.0.0.1 \  --port 8000

When no endpoint env vars are set, sourceweave-search-mcp:

ModeWhat happens
Managed stack foundJoin the existing SourceWeave-managed stack for the current runtime state directory
Healthy external stack foundReuse the canonical local ports 19080, 19235, and 16379 without ownership
No reusable stackStart and supervise a Docker-backed stack on canonical or free local ports

Managed state lives under ~/.sourceweave-local/managed-runtime. Multiple MCP processes on the same machine share one managed stack per state directory.

[!IMPORTANT] Managed runtime removes containers only when the last active SourceWeave-managed process exits. Named volumes are preserved, so cache data survives restarts. If the original owning process dies, a later process can recover the same stack from Docker project identity and persisted runtime state.

Explicit endpoint mode

If you already run SearXNG, Crawl4AI, and Redis or Valkey yourself, or want to point at hosted services, set explicit endpoints and the MCP entrypoint will bypass managed Docker startup:

bash
SOURCEWEAVE_SEARCH_SEARXNG_BASE_URL="http://127.0.0.1:19080/search?format=json&q=<query>" \SOURCEWEAVE_SEARCH_CRAWL4AI_BASE_URL="http://127.0.0.1:19235" \SOURCEWEAVE_SEARCH_CACHE_REDIS_URL="redis://127.0.0.1:16379/2" \uvx --from sourceweave-web-search sourceweave-search-mcp

Direct CLI

sourceweave-search runs the tool directly. Use it when the supporting services are already available or when you provide explicit endpoints. It does not start Docker.

bash
sourceweave-search --query "python programming" --read-first-pages 2sourceweave-search --read-url "https://packaging.python.org/en/latest/"

[!TIP] The direct CLI also accepts --searxng-base-url, --crawl4ai-base-url, and --cache-redis-url overrides.

MCP client setup

OpenCode

Example opencode.json / opencode.jsonc / ~/.config/opencode/opencode.json:

jsonc
{  "$schema": "https://opencode.ai/config.json",  "mcp": {    "sourceweave": {      "type": "local",      "command": [        "uvx",        "--from",        "sourceweave-web-search",        "sourceweave-search-mcp"      ],      "enabled": true,      "timeout": 300000    }  }}

For a shared HTTP endpoint instead:

json
{  "$schema": "https://opencode.ai/config.json",  "mcp": {    "sourceweave": {      "type": "remote",      "url": "http://127.0.0.1:18000/mcp",      "enabled": true,      "timeout": 300000    }  }}

VS Code Copilot

Example .vscode/mcp.json:

json
{  "servers": {    "sourceweave": {      "type": "stdio",      "command": "uvx",      "args": [        "--from",        "sourceweave-web-search",        "sourceweave-search-mcp"      ]    }  }}

For a shared HTTP endpoint instead:

json
{  "servers": {    "sourceweave": {      "type": "http",      "url": "http://127.0.0.1:18000/mcp"    }  }}

Claude Code

Example .mcp.json:

json
{  "mcpServers": {    "sourceweave": {      "type": "stdio",      "command": "uvx",      "args": [        "--from",        "sourceweave-web-search",        "sourceweave-search-mcp"      ]    }  }}

For a project-scoped shared config, place the same block in .mcp.json at the repo root.

CLI

The direct CLI is useful once the supporting services are already reachable. It gives you the same search-first workflow without the MCP wrapper.

bash
sourceweave-search --query "react useEffect cleanup example" --read-first-pagesourceweave-search --query "HTTP overview" --domain developer.mozilla.org --read-first-pagesourceweave-search --read-url "https://packaging.python.org/en/latest/"

Container deployments

The managed local runtime is for host-side uvx or uv run launches. Containerized deployments still use explicit endpoint wiring.

  • Image: ghcr.io/mrnaqa/sourceweave-web-search-mcp
  • Repo-local compose entrypoint: docker compose up -d --build mcp

Example container run:

bash
docker run --rm -p 8000:8000 \  -e SOURCEWEAVE_SEARCH_SEARXNG_BASE_URL="http://host.docker.internal:19080/search?format=json&q=<query>" \  -e SOURCEWEAVE_SEARCH_CRAWL4AI_BASE_URL="http://host.docker.internal:19235" \  -e SOURCEWEAVE_SEARCH_CACHE_REDIS_URL="redis://host.docker.internal:16379/2" \  ghcr.io/mrnaqa/sourceweave-web-search-mcp:latest

OpenWebUI

This repo also ships a generated standalone OpenWebUI tool file at artifacts/sourceweave_web_search.py.

From a repo checkout, verify it is in sync with the canonical implementation:

bash
uv run sourceweave-build-openwebui --check

Paste that artifact into OpenWebUI when you want the standalone tool-file deployment path. The generated file rewrites the default endpoints to the repo-local compose service names so it matches the container deployment path out of the box.

Runtime configuration

Optional environment variables:

VariablePurpose
SOURCEWEAVE_SEARCH_SEARXNG_BASE_URLSearXNG URL template. Must contain <query>.
SOURCEWEAVE_SEARCH_CRAWL4AI_BASE_URLCrawl4AI base URL.
SOURCEWEAVE_SEARCH_CACHE_REDIS_URLRedis or Valkey URL used for caching.
FASTMCP_HOSTHost for sse or streamable-http transport.
FASTMCP_PORTPort for sse or streamable-http transport.

If the endpoint variables are unset, sourceweave-search-mcp defaults to managed local runtime.

  • Canonical host endpoints remain the preferred defaults and the external-reuse probe targets.
  • A SourceWeave-managed stack may use different free host ports when the canonical defaults are already occupied.
  • Multiple MCP processes on the same machine share one managed stack per local runtime state directory.

Default endpoint values:

  • SearXNG: http://127.0.0.1:19080/search?format=json&q=<query>
  • Crawl4AI: http://127.0.0.1:19235
  • Redis: redis://127.0.0.1:16379/2

Default preferred host ports for managed startup:

  • SearXNG: 19080
  • Crawl4AI: 19235
  • Redis: 16379
  • MCP: 8000 when run directly with uvx; 18000 at /mcp when using the repo's mcp compose service

Development

bash
git clone https://github.com/MRNAQA/sourceweave-web-search.gitcd sourceweave-web-searchuv sync --locked --group devuv run sourceweave-search-mcp

Useful checks:

bash
uv run sourceweave-build-openwebui --checkuv run sourceweave-search-mcp --helpuv run pytest tests/test_config.py tests/test_packaging.py tests/test_tool.py tests/test_managed_runtime.py -m "not integration"

來源:README.md,提交 e151f5f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.5.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Source 整合