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 集成