AI代理搜索服务器

Cuba-Search是一个自托管的MCP搜索服务器,专为AI代理设计,提供8种工具,包括网络搜索、URL抓取、文档解析和事实验证等功能。

  • by LeandroPG19
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 LeandroPG19/cuba-search

使用说明

🔍 古巴搜索

用于AI代理的自托管MCP搜索服务器。 零成本。API密钥为零。零云依赖。

8个工具、6个信号置信度评分、语义重排序、事实验证和可选的JS渲染——在~48MB RAM中。

特性

工具 说明
cuba_search 通过SearXNG+DuckDuckGo回退进行网络搜索,并进行语义重新排序
cuba_scrape 删除URL→ 纯文本+标记。SPA可选编剧
cuba_crawl 抓取网站(最大深度3,最多20页,同一域名)
cuba_extract 使用令牌预算从多个URL中提取内容
cuba_map 发现页面上的所有URL(站点地图发现)
cuba_validate 对5+个来源的索赔进行交叉引用,发现矛盾
cuba_docs 解析库→ 官方文件→ 刮擦→ 压缩
cuba_research 深度研究管道:搜索→ 刮擦→ 验证→ 压缩

是什么让它独一无二

  • 6信号置信度评分 --BM25+源层+语义+新鲜度+信息密度+协议
  • 事实验证 --具有矛盾检测的交叉源验证
  • 来源可信度等级 --官方文档(T1)>已知存储库(T2)>一般存储库(T3)
  • 语义重排序 --基于8M的2vec模型(256维,<0.5ms/查询)
  • 双语同义词扩展 --100个EN/ES术语组
  • 结构化降价输出 --保留标题、表格、列表、代码块
  • SSRF保护 --8个私有范围+方案阻塞(OWASP A01)
  • 断路器 --SearXNG自动恢复(5次故障→ 60s冷却→ 重试)

安装

pip install -e .

可选依赖

# JS rendering (SPAs: React, Angular, Vue)
pip install -e ".[js]"
playwright install chromium

# PDF extraction
pip install -e ".[pdf]"

先决条件

  • Python 3.14+
  • 瑟克斯NG 实例(可选--回退到DuckDuckGo)

集 SEARXNG_URL 如果不在本地主机上,则使用环境变量:

export SEARXNG_URL=http://localhost:8080

MCP配置

添加到您的MCP设置(克劳德桌面、反重力等):

{
  "cuba-search": {
    "command": "python3.14",
    "args": ["-m", "cuba_search.server"],
    "env": {
      "SEARXNG_URL": "http://localhost:8080"
    }
  }
}

建筑

server.py          Entry point (asyncio.run)
protocol.py        JSON-RPC MCP transport
handlers.py        8 tool handlers
├── retrieval.py   SearXNG + DDG backends, circuit breaker
├── query.py       Normalization, decomposition, synonym expansion
├── quality.py     Deduplication, classification, normalization
├── ranking.py     BM25, RRF, 6-signal confidence
├── semantic.py    model2vec embedding + cosine reranking
├── grounding.py   Fact validation, contradiction detection
├── scraper.py     Content extraction, SSRF protection, robots.txt
├── crawler.py     Same-domain crawling, URL canonicalization
├── markdown.py    HTML → Markdown structured conversion
├── js_render.py   Optional Playwright JS rendering
├── compression.py BM25 sentence scoring for token budgets
├── partitioning.py Token budget distribution
├── cache.py       LRU + TTL caching
├── docs.py        Library → official docs resolver
└── constants.py   Tool definitions, config

基准测试

运行SimpleQA精度基准:

PYTHONPATH=src python3.14 benchmarks/simpleqa.py

输出:准确度得分、每次查询的延迟、每个问题的通过/失败 simpleqa_results.json.

内存占用

组件 RAM
基本(httpx,bs4,可读性) ~25MB
2vec型号(基于锂-8M) ~23MB
剧作家(可选) ~140MB
总计(不含编剧) ~48MB

安全

  • SSRF保护:8个私有IP范围+被阻止的方案(文件、ftp、gopher、数据、javascript)
  • robots.txt:具有1小时的域缓存
  • 没有eval/pickle:所有反序列化通过 json
  • 输入净化:查询规范化、URL验证

许可证

CC BY NC 4.0 --免费使用和修改, 非商业用途.