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用已知相关网址评估排名

适用场景

  1. 01无需搜索 API 搜索点对点网络
  2. 02将网站抓取到 YaCy 节点索引
  3. 03调整排名并比较评估指标
  4. 04检查节点连接并管理抓取任务

MCP 相关

它通过 stdio 与 Agent 并行运行,并通过 HTTP 连接配置的 YaCy 节点。它向 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 服务

适用于单个 YaCy 节点的 MCP 服务:无需搜索 API 或 API 密钥即可进行网页搜索,并支持爬取、排名设置和搜索质量评估。它与 Agent 一起运行(stdio),并通过 HTTP 与 Agent 自己的节点通信。没有中心服务:节点归你所有,它搜索自己所属的点对点网络。注册表名称:io.github.pad01g/yacy-search。

它专为 改进搜索分支 编写(搜索结果包含作者签名判定和标签)。搜索、爬取、状态和设置也适用于上游 YaCy。

运行

在同一个 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

该分支的镜像默认使用管理员账户 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向节点发送单个请求的超时时间
YACY_ALLOW_TRUST_SETTINGS未设置1:set_ranking_setting 还可以更改 trust.search.acceptUnverified 和 trust.policy.excludeTags

在改进搜索分支上,向量搜索(用简短问题即可找到不含完全相同词语的页面)仅用于节点管理员发起的搜索,或来自节点主机的搜索。当 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更改其中一项设置(仅允许列表中的设置:最低匹配度、覆盖率和内容过少页面的权重、标题短语加权、等待时间;只有设置 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暂停或恢复本地爬虫,或停止某个爬取任务(已索引的页面会保留)
delete_document从该节点自己的索引中移除一个页面(先停止对该站点的爬取任务)

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 许可证。它只通过 HTTP 与 YaCy 通信,不包含任何 YaCy 代码;本仓库的其余部分,即 YaCy 本身,仍采用 GPL 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。