Skip to main content
Glama
MRNAQA

io.github.MRNAQA/sourceweave-web-search

by MRNAQA

SourceWeave Web Search

Python 3.12+ MIT License MCP Docker managed runtime

ウェブリサーチのための検索ファーストMCPサーバーおよびCLI。

[!NOTE] sourceweave-search-mcpはデフォルトのローカルエントリポイントです。明示的なSOURCEWEAVE_SEARCH_*エンドポイント変数がない場合、ローカルのDockerバックのスタックを自動的に検出または起動します。サービスを自分で実行している場合は、明示的なエンドポイントを設定すると、代わりにそれらを使用します。

概要はじめに管理されたローカルランタイムMCPクライアント設定CLIコンテナデプロイOpenWebUIランタイム設定開発

概要

SourceWeave Web Searchは、MCPクライアントにウェブリサーチのためのコンパクトな3ツール契約を提供します:

  • search_web(query, domains?, urls?, effort?)はソースを発見し、安定したpage_idハンドルを持つコンパクトな結果を返します。

  • read_pages(page_ids, focus?)page_idで保存されたページを読み取ります。

  • read_urls(urls, focus?)は検索せずに直接URLを読み取ります。

以下を組み合わせます:

コンポーネント

役割

SearXNG

検索ディスカバリ

Crawl4AI

クリーンなHTML抽出

Redis or Valkey

永続化されたページキャッシュとpage_idストア

MarkItDown

PDFやその他のサポート対象ファイルのドキュメント変換

Related MCP server: Deep Search MCP Server

はじめに

要件

  • Python 3.12+

  • デフォルトの管理されたローカルランタイムのためのComposeサポート付きDocker

  • ホスト型または自己管理型サービスを希望する場合のみ、明示的なSOURCEWEAVE_SEARCH_*エンドポイント

管理されたローカルランタイム

公開パッケージからサーバーを実行します:

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

またはHTTPでMCPサーバーを起動します:

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

エンドポイント環境変数が設定されていない場合、sourceweave-search-mcpは:

モード

動作

管理されたスタックが見つかった

現在のランタイム状態ディレクトリの既存のSourceWeave管理スタックに参加する

正常な外部スタックが見つかった

所有権なしで標準のローカルポート190801923516379を再利用する

再利用可能なスタックがない

標準または空きローカルポートでDockerバックのスタックを起動して監視する

管理された状態は~/.sourceweave-local/managed-runtimeの下にあります。同じマシン上の複数のMCPプロセスは、状態ディレクトリごとに1つの管理されたスタックを共有します。

[!IMPORTANT] 管理されたランタイムは、最後のアクティブなSourceWeave管理プロセスが終了したときにのみコンテナを削除します。名前付きボリュームは保持されるため、キャッシュデータは再起動後も存続します。元の所有プロセスが終了した場合、後続のプロセスがDockerプロジェクトIDと永続化されたランタイム状態から同じスタックを復元できます。

明示的エンドポイントモード

SearXNG、Crawl4AI、RedisまたはValkeyを自分で実行している場合、またはホスト型サービスを指したい場合は、明示的なエンドポイントを設定すると、MCPエントリポイントは管理されたDocker起動をバイパスします:

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

直接CLI

sourceweave-searchはツールを直接実行します。サポートサービスがすでに利用可能な場合、または明示的なエンドポイントを提供する場合に使用します。Dockerは起動しません。

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

[!TIP] 直接CLIは--searxng-base-url--crawl4ai-base-url--cache-redis-urlのオーバーライドも受け付けます。

MCPクライアント設定

OpenCode

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

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

代わりに共有HTTPエンドポイントを使用する場合:

{
  "$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

例:.vscode/mcp.json

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

代わりに共有HTTPエンドポイントを使用する場合:

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

Claude Code

例:.mcp.json

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

プロジェクトスコープの共有設定の場合は、同じブロックをリポジトリルートの.mcp.jsonに配置します。

CLI

直接CLIは、サポートサービスがすでに到達可能な場合に便利です。MCPラッパーなしで同じ検索ファーストのワークフローを提供します。

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

コンテナデプロイ

管理されたローカルランタイムは、ホスト側のuvxまたはuv run起動用です。コンテナ化されたデプロイでは、依然として明示的なエンドポイント配線を使用します。

  • イメージ:ghcr.io/mrnaqa/sourceweave-web-search-mcp

  • リポジトリローカルのcomposeエントリポイント:docker compose up -d --build mcp

コンテナ実行の例:

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

このリポジトリには、artifacts/sourceweave_web_search.pyに生成されたスタンドアロンのOpenWebUIツールファイルも同梱されています。

リポジトリのチェックアウトから、それが正規の実装と同期していることを確認します:

uv run sourceweave-build-openwebui --check

スタンドアロンのツールファイルデプロイパスが必要な場合は、そのアーティファクトをOpenWebUIに貼り付けます。生成されたファイルは、デフォルトのエンドポイントをリポジトリローカルのcomposeサービス名に書き換えるため、そのままコンテナデプロイパスに一致します。

ランタイム設定

オプションの環境変数:

変数

目的

SOURCEWEAVE_SEARCH_SEARXNG_BASE_URL

SearXNG URLテンプレート。<query>を含む必要があります。

SOURCEWEAVE_SEARCH_CRAWL4AI_BASE_URL

Crawl4AIのベースURL。

SOURCEWEAVE_SEARCH_CACHE_REDIS_URL

キャッシュに使用されるRedisまたはValkeyのURL。

FASTMCP_HOST

sseまたはstreamable-httpトランスポートのホスト。

FASTMCP_PORT

sseまたはstreamable-httpトランスポートのポート。

エンドポイント変数が設定されていない場合、sourceweave-search-mcpは管理されたローカルランタイムをデフォルトとします。

  • 標準のホストエンドポイントは、推奨されるデフォルトおよび外部再利用プローブのターゲットのままです。

  • SourceWeave管理スタックは、標準のデフォルトがすでに占有されている場合、異なる空きホストポートを使用する場合があります。

  • 同じマシン上の複数のMCPプロセスは、ローカルランタイム状態ディレクトリごとに1つの管理されたスタックを共有します。

デフォルトのエンドポイント値:

  • 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

管理された起動のためのデフォルトの推奨ホストポート:

  • SearXNG: 19080

  • Crawl4AI: 19235

  • Redis: 16379

  • MCP: uvxで直接実行する場合は8000、リポジトリのmcp composeサービスを使用する場合は/mcp18000

開発

git clone https://github.com/MRNAQA/sourceweave-web-search.git
cd sourceweave-web-search
uv sync --locked --group dev
uv run sourceweave-search-mcp

便利なチェック:

uv run sourceweave-build-openwebui --check
uv run sourceweave-search-mcp --help
uv run pytest tests/test_config.py tests/test_packaging.py tests/test_tool.py tests/test_managed_runtime.py -m "not integration"
A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
1dRelease cycle
7Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables web search and site-specific search capabilities through the Deepsearch model. Provides unified access to broad web retrieval and targeted site search functionality within the MCP ecosystem.
    2
    11
    5
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive search capabilities including web search, content extraction, news search, academic search, and AI-powered multi-source research. Enables natural language access to web content and research through a production-ready MCP server.
  • A
    license
    B
    quality
    Not graded
    maintenance
    Provides advanced Google Custom Search functionality, web content extraction, and specialized research tools such as search analytics, multi-site search, and fact checking. Works as an MCP server compatible with any MCP client.
    10
    MIT

View all related MCP servers

Related MCP Connectors

  • Stealth web browser for agents: search, fetch, click and type through persistent sessions over MCP.

  • Agentic search over your Dewey document collections from any MCP-compatible client.

  • Access Kernel's cloud-based browsers and app actions via MCP (remote HTTP + OAuth).

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MRNAQA/sourceweave-web-search'

If you have feedback or need assistance with the MCP directory API, please join our Discord server