Metadata-Version: 2.4
Name: wb-privacy-search-mcp
Version: 1.0.6
Summary: 本地隐私搜索 MCP 连接器（聚合搜索+隐私保护）
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: PyYAML
Requires-Dist: aiohttp
Requires-Dist: beautifulsoup4

# 本地隐私搜索工具

**开发者：牛魔科技工作室**

零追踪的本地隐私搜索连接器。把 `privacy-search` 技能的搜索能力封装成 MCP 工具，供 WorkBuddy 及各类 Agent 直接调用。

**关键词**：开放数据源 API 聚合、Perplexity 式答案合成、本地发起、不留痕、无 Key 可降级。

## 提供的工具

| 工具 | 作用 | 关键参数 |
|---|---|---|
| `search` | 开放数据源聚合搜索，SimHash 去重 + 多因子加权排序 | `query`（必填）、`engines`、`num`、`privacy`、`no_cache` |
| `synthesize` | Perplexity 式答案合成，基于搜索摘要生成带 citation 的答案 | `query`（必填）、`results`、`max_sources` |
| `fetch` | 抓取开放数据源正文（仅开放域名），三层降级提取 | `url`（必填）、`timeout` |

### 可用引擎

`wikipedia`、`wikidata`、`arxiv`、`crossref`、`openlibrary`、`pubmed`、`stackoverflow`、`github`（searxng 需自建，可选）

`privacy=strict` 时只使用开放数据源（均无需密钥、明确授权），不向任何商业检索服务发送查询词，也不爬取任何第三方网页。

## 安装

```bash
pip install -r requirements.txt
```

依赖：`aiohttp`、`beautifulsoup4`、`lxml`、`jieba`、`pyyaml`。

其中 **`jieba` 是可选依赖**：缺失时中文分词自动降级为字符 2-gram，功能完整、排序精度略降，不会报错。

## 配置（可选）

复制 `references/config.yaml.example` 到包根目录，改名 `config.yaml` 后按需修改：

- `mcp_server.max_results` — `search` 默认返回条数（默认 10）
- `mcp_server.max_sources` — `synthesize` 默认引用来源数（默认 5）
- `mcp_server.tools` — 只想暴露部分工具时填工具名数组，留空表示全部
- `llm.*` — 配置后 `synthesize` 走真实 LLM 生成；**不配置则自动降级为抽取式摘要**，无需任何 API Key

不创建 `config.yaml` 也能直接跑，此时使用 `references/config.yaml.example` 中的默认值。

## 隐私说明

- 搜索在本机发起，请求直达各开放数据源的官方 API，不经任何中转服务器
- 结果缓存落在本机，可用 `no_cache=true` 跳过
- `synthesize` 若配置了 LLM，摘要才会出域调用模型；不配置则全程本地抽取式摘要

## 与其它连接器的边界

| 连接器 | 负责 |
|---|---|
| **privacy-search** | 开放数据源检索、答案合成、开放域名正文提取（**信息获取**） |
| kingdoc | 金山云端文档的读写与协作（**文档生产**） |
| wps-office | 本地 Office 文件的排版与转换（**文件加工**） |

## 本地调试

```bash
python mcp_server.py --schema   # 打印工具 schema
python mcp_server.py --test     # 协议自测（会真实发起一次搜索）
```
