mcpField
Y
YaCy peer-to-peer search

YaCy peer-to-peer search

ローカル
pad01g.github.io検索13 週間前に更新

YaCy peer-to-peer search について

自分のYaCyピアを運用する個人やチーム向けに、検索の実行と評価を行うMCPサーバーです。検索APIや中央サービスを使わず、ウェブ検索、クロール、ピア状態、ランキング調整、関連性評価に対応します。

主な機能

  1. 01ローカルまたは接続済みYaCyピアを検索
  2. 02ウェブサイトをクロールして索引化
  3. 03ピアとクロールの状態を確認
  4. 04ランキング設定の参照と変更
  5. 05既知の関連URLでランキングを評価

活用シーン

  1. 01検索APIなしでP2Pネットワークを検索
  2. 02ウェブサイトをYaCyピアの索引に追加
  3. 03ランキングを調整して評価指標を比較
  4. 04ピア接続の確認とクロール管理

MCP 対応

stdioでエージェントと並行して動作し、設定されたYaCyピアとHTTPで通信します。MCPクライアントに検索、クロール、状態確認、ランキング、評価のツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pad01g-yacy-search": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"YACY_URL",
"-e",
"YACY_ADMIN_USER",
"-e",
"YACY_ADMIN_PASSWORD",
"-e",
"YACY_CRAWL_ALLOW_PRIVATE",
"-e",
"YACY_ALLOW_TRUST_SETTINGS",
"ghcr.io/pad01g/yacy-search-mcp:1.0.0"
],
"env": {
"YACY_URL": "<YACY_URL>",
"YACY_ADMIN_USER": "<YACY_ADMIN_USER>",
"YACY_ADMIN_PASSWORD": "<YACY_ADMIN_PASSWORD>",
"YACY_CRAWL_ALLOW_PRIVATE": "<YACY_CRAWL_ALLOW_PRIVATE>",
"YACY_ALLOW_TRUST_SETTINGS": "<YACY_ALLOW_TRUST_SETTINGS>"
}
}
}
}
起動コマンドdocker run -i --rm -e YACY_URL -e YACY_ADMIN_USER -e YACY_ADMIN_PASSWORD -e YACY_CRAWL_ALLOW_PRIVATE -e YACY_ALLOW_TRUST_SETTINGS ghcr.io/pad01g/yacy-search-mcp:1.0.0
設定が必要な環境変数
YACY_URLBase URL of your YaCy peer as seen from the MCP server container, e.g. http://yacy:8090 on a shared Docker network (docker run --network ...), or http://host.docker.internal:8090
YACY_ADMIN_USERYaCy administrator account, needed for crawling and settings
YACY_ADMIN_PASSWORDシークレットYaCy administrator password; without it crawl, settings and the index counts of index_status are not available
YACY_CRAWL_ALLOW_PRIVATE1 lets crawl reach loopback and private addresses (intranets); off by default
YACY_ALLOW_TRUST_SETTINGS1 lets set_ranking_setting change the trust filter settings (acceptUnverified, excludeTags); off by default

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/pad01g/yacy-search-mcp:1.0.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

yacy-search MCP サーバー

1 つの YaCy ピア向けのMCPサーバーです。検索 API や API キーを使わずにウェブ検索、クロール、ランキング設定、検索品質の評価を行えます。エージェントの隣で(stdio で)実行され、HTTP 経由でエージェント自身のピアと通信します。中央サービスはありません。ピアはあなたのものであり、そのピアが属するピアツーピアネットワークを検索します。レジストリ名:io.github.pad01g/yacy-search。

improved-search fork向けに開発されています(検索結果には作者の署名判定とタグが付与されます)。検索、クロール、ステータス、設定は、上流の YaCy でも動作します。

実行

1 つの Docker ネットワーク上で、ピアと MCP サーバーを起動します。

docker network create yacy 2>/dev/null || true
docker run -d --name yacy --network yacy -p 127.0.0.1:8090:8090 \
  -v yacy_data:/opt/yacy_search_server/DATA ghcr.io/pad01g/yacy-improved-search:latest

# Claude Code
claude mcp add yacy -- docker run -i --rm --network yacy \
  -e YACY_URL=http://yacy:8090 -e YACY_ADMIN_PASSWORD='<your password>' ghcr.io/pad01g/yacy-search-mcp:1.0.0

fork のイメージは、管理者アカウント admin / yacy で起動します。MCP サーバーに接続する前に、http://127.0.0.1:8090/ConfigAccounts_p.html でパスワードを変更し、新しいパスワードを渡してください。

その他のクライアント(mcp.json 形式):

{
  "mcpServers": {
    "yacy": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--network", "yacy", "-e", "YACY_URL=http://yacy:8090", "-e", "YACY_ADMIN_PASSWORD=<your password>", "ghcr.io/pad01g/yacy-search-mcp:1.0.0"]
    }
  }
}

Docker の外部にあるピアには、-e YACY_URL=http://host.docker.internal:8090 を使用します(Linux の場合は --add-host=host.docker.internal:host-gateway を追加してください)。Docker を使わない場合は、このディレクトリで npm ci && node src/server.ts を実行します(Node 24)。

変数デフォルト説明
YACY_URLhttp://localhost:8090ピアのベース URL
YACY_ADMIN_USERadmin管理者アカウント(クロール、ステータス件数、設定)
YACY_ADMIN_PASSWORD未設定管理者パスワード。設定しない場合、crawl_site、control_crawl、delete_document、set_ranking_setting は拒否されます(ピアがパスワードなしのローカルリクエストを許可している場合も同様です)。読み取り用の管理者ツールは、ピアがパスワードなしで許可する場合にのみ使用できます。
YACY_CRAWL_ALLOW_PRIVATE未設定1:crawl_site がループバックアドレスやプライベートアドレス(イントラネット)にアクセスできるようになります。それ以外の場合、公開ホストの http(s) URL のみ許可されます。これは開始 URL のみを確認します。YaCy がたどるリンクとリダイレクトは、YaCy 独自の network.unit.domain によって制限されます(公開ピアでは global に設定するとローカルアドレスが拒否されます)。
YACY_TIMEOUT_MS30000ピアへの 1 回のリクエストのタイムアウト
YACY_ALLOW_TRUST_SETTINGS未設定1:set_ranking_setting で trust.search.acceptUnverified と trust.policy.excludeTags も変更できるようになります

improved-search fork では、ベクトル検索(短い質問でも、完全に一致する単語がなくてもページを見つけられる機能)は、ピアの管理者またはそのホストからの検索でのみ使用されます。MCP サーバーを別のコンテナで実行する場合は、ピアで search.vector.public=true を設定してください(設定すると、検索ページへの新しいクエリがすべて埋め込み処理されます)。

ツール

ツール機能
search_web全文検索。resource: "global" は接続済みのピアにも検索を依頼し、waitMs の時間だけ待ってからすべての回答を順位付けします
crawl_siteクロールを開始します(url、depth、range:domain / subpath / wide、ホストごとのmaxPages、デフォルトは200)
get_index_statusインデックス済みドキュメント、クロールキュー、ピアの種類と接続を表示します。一時停止中のクローラー(負荷平均)や、公開アドレスを持たないピアについても説明します
list_peers接続済みのピア:署名済みシード、接続方法(直接/リレー)、タグ
get_ranking_settings順位付けとフィルタリングの設定、およびその意味
set_ranking_setting設定を1つ変更します(許可リストのみ:最小一致数、カバレッジと内容の薄いページの重み、タイトルフレーズのブースト、待機時間。未検証の結果と除外タグはYACY_ALLOW_TRUST_SETTINGS=1の場合のみ変更できます)
evaluate_ranking関連URLが既知のクエリを評価します:precision@k、recall@k、R-precision、各関連URLの順位。約50秒以内に終了します(収まらないクエリはskippedとして報告されます)
get_trust_statusピアが保持する署名済み委任情報とピアリスト
list_crawlsピアで開始されたクロールと、control_crawlに必要なハンドル
control_crawlローカルクローラーを一時停止または再開するか、1つのクロールを停止します(インデックス済みページは保持されます)
delete_documentピア自身のインデックスから1ページを削除します(先にそのサイトの実行中のクロールを停止してください)

1.0.0ではツール名が変更され、一貫したverb_noun形式になりました(別名はありません):search → search_web、crawl → crawl_site、 crawls → list_crawls、crawl_control → control_crawl、index_status → get_index_status、peers → list_peers、 trust_status → get_trust_status。ツール名を指定して呼び出すクライアントでは、新しい名前を使う必要があります。

結果を改善する一般的なサイクル:evaluate_ranking → set_ranking_setting → evaluate_ranking。

タイトルとスニペットはページの作成者やほかのピアから取得されます。ツールの説明では、モデルに対して、これらを指示ではなくデータとして扱うよう伝えています。crawl_site、control_crawl、delete_document、set_ranking_settingには破壊的操作のマークが付いているため、クライアントは呼び出す前に確認を求めます。設定値はキーごとに検証され、YaCyが異なる値として保存した場合はロールバックされます。

テスト

npm ci && npm run typecheck && npm test                      # unit tests
YACY_URL=http://localhost:8090 YACY_ADMIN_PASSWORD=yacy npm test   # also calls every tool on a live peer

ライセンス

このディレクトリ(MCP サーバー)はMITライセンスの下で提供されています。YaCyとはHTTP経由でのみ通信し、YaCyのコードは含みません。このリポジトリの残りの部分であるYaCy自体は、引き続きGPLの下で提供されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。