🔍 古巴搜索
用于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:8080MCP配置
添加到您的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 --免费使用和修改, 非商业用途.
