内容
# 狮子爬虫 MCP + CLI + HTTP API 桥接
[简体中文](README_cn.md)
- **官方网站**: [lionscraper.com](https://www.lionscraper.com/)
- **npm**: [软件包 `lionscraper`](https://www.npmjs.com/package/lionscraper)
- **PyPI**: [项目 `lionscraper`](https://pypi.org/project/lionscraper/)
## 这是什么?
**LionScraper** 是一款浏览器扩展,可以从网页收集列表、文章、链接、图片等内容。该仓库提供了与该扩展的配套 **桥接**,通过三种方式连接您的工具:
- **MCP** (`lionscraper-mcp`):连接 **AI 应用**(例如 Cursor),使模型可以通过标准输入输出调用爬虫工具。
- **CLI** (`lionscraper`):在与扩展程序相同的本地 HTTP/WebSocket 端口上,从终端运行 **守护进程**、**爬取**、**ping** 等。
- **HTTP API**:当守护进程运行时,通过 **回环 JSON HTTP**(例如 `/v1/...`)从脚本或任何 HTTP 客户端调用相同功能,无需 MCP 或 CLI 前端。
**实际的爬取逻辑在扩展中运行**;这些软件包连接并转发请求。
## 开始之前
1. **浏览器**:Chrome 或 Edge(遵循扩展支持的浏览器)。
2. **LionScraper 扩展**:从商店安装并启用。
- **Chrome**: [Chrome 网上应用店 — LionScraper](https://chromewebstore.google.com/detail/godiccfjpjdapemodajccjjjcdcccimf)
- **Microsoft Edge**: [Edge 加载项 — LionScraper](https://microsoftedge.microsoft.com/addons/detail/llfpnjbphhfkgbgljpngbjpjpnljkijk)
3. **运行时**(选择一个或两个实现):
- **Node.js** **18+** 用于 npm 软件包 — [Node.js](https://nodejs.org/)
- **Python** **3.10+** 用于 PyPI 软件包 — [Python](https://www.python.org/downloads/)
4. **对于 MCP**:支持 MCP 的 AI 应用(例如 Cursor、Trae)。
5. **对于 HTTP API**:与 CLI 相同的浏览器、扩展和守护进程;参见软件包的 README 以获取路径和示例。
**无 Chrome/Edge 的 HTTP 回退**:如果在标准路径下未检测到任一浏览器且扩展未连接,MCP 仍会启动;`ping` 成功并使用 **http_fetch** 模式,而 `scrape*` 使用最小的服务器端 HTTP GET(无 JS 执行)。如果已安装浏览器但扩展未连接,您仍会获得扩展连接流程。Node 自动生成路径修复了 Unix 安装中的问题,其中 `lionscraper.js` 未以 `/` 开头解析(例如 Glama/Docker)。Python 软件包使用 **aiohttp** 进行到守护进程的输出 HTTP/WebSocket。
## 两个实现
| | **Node.js (npm)** | **Python (pip)** |
|--|-------------------|------------------|
| **注册表** | `io.github.dowant/lionscraper-node` | `io.github.dowant/lionscraper-python` |
| **文档(英文)** | [packages/node/README.md](packages/node/README.md) | [packages/python/README.md](packages/python/README.md) |
| **文档(中文)** | [packages/node/README_cn.md](packages/node/README_cn.md) | [packages/python/README_cn.md](packages/python/README_cn.md) |
安装一个或两个;它们是独立的软件包,具有相同的 CLI 命令名称。
### 安装(npm)
在 npm 上发布为 **[lionscraper](https://www.npmjs.com/package/lionscraper)**。
```bash
npm install -g lionscraper
```
无需全局安装,MCP 可以使用 **`npx`**;参见 [在 AI 应用中添加 MCP](#在-ai-应用中添加mcp) 下的 **npx** JSON 示例。
### 安装(pip)
在 PyPI 上发布为 **[lionscraper](https://pypi.org/project/lionscraper/)**。
```bash
pip install -U lionscraper
```
建议使用 **虚拟环境**,或者如果您不想安装到系统解释器,可以使用 `pip install -U --user lionscraper`。
### 命令(两个软件包)
| 命令 | 角色 |
|--------|------|
| **`lionscraper-mcp`** | AI 应用的薄 MCP 服务器(标准输入输出) |
| **`lionscraper`** | CLI:`daemon`、`stop`、`scrape`、`ping` 等(也在同一端口上提供 **HTTP API**) |
在 **`pip install -U lionscraper`** 后,如果 `lionscraper-mcp` 不在您的 `PATH` 中,请使用 **`python -m lionscraper`**,无需额外参数即可进行 MCP 标准输入输出(参见 [packages/python/README.md](packages/python/README.md))。
**`PORT`**(默认 **13808**)必须与扩展的 **桥接端口** 匹配,在所有模式下均如此。
## CLI 快速入门
```bash
lionscraper daemon
lionscraper ping
lionscraper scrape -u https://www.example.com
```
完整的标志、多个 URL、分页和 **HTTP API** 详细信息:[packages/node/README.md](packages/node/README.md) / [packages/python/README.md](packages/python/README.md)。
## 在 AI 应用中添加 MCP
示例假设 **`lionscraper-mcp`** 在您的 `PATH` 中(来自 npm 或 pip)。在 MCP JSON 中,每个 **`env`** 值都是字符串。
**最小配置**(`PORT` 默认值为 **13808**;必须与扩展的桥接端口匹配):
```json
{
"mcpServers": {
"lionscraper": {
"command": "lionscraper-mcp"
}
}
}
```
**完整的 `env` 示例**(省略您不需要的键):
```json
{
"mcpServers": {
"lionscraper": {
"command": "lionscraper-mcp",
"env": {
"PORT": "13808",
"TIMEOUT": "120000",
"LANG": "zh-CN",
"TOKEN": "",
"DAEMON": ""
}
}
}
}
```
**npx(无全局安装)** — 需要 Node.js;第一次运行可能会下载软件包。npm **软件包名称** 为 `lionscraper`;可执行文件为 `lionscraper-mcp`。使用命令 **`npx`** 并在参数中传递 **`lionscraper`**,然后传递 **`lionscraper-mcp`**(在 `-y` 之后)。
**最小配置(npx):**
```json
{
"mcpServers": {
"lionscraper": {
"command": "npx",
"args": ["-y", "lionscraper", "lionscraper-mcp"]
}
}
}
```
**完整的 `env` 示例(npx):**
```json
{
"mcpServers": {
"lionscraper": {
"command": "npx",
"args": ["-y", "lionscraper", "lionscraper-mcp"],
"env": {
"PORT": "13808",
"TIMEOUT": "120000",
"LANG": "zh-CN",
"TOKEN": "",
"DAEMON": ""
}
}
}
}
```
要固定版本号,请在 `args` 中使用例如 `"lionscraper@1.0.1"` 代替 `"lionscraper"`。
- **`PORT`**:HTTP + WebSocket 监听端口;默认 **13808**;必须与扩展的 **桥接端口** 匹配。
- **`TIMEOUT`**:等待前一个实例释放端口的毫秒数;默认 **120000**; **`0`** 强制快速接管。
- **`LANG`**:工具描述和标准错误语言( **`zh-CN`**、 **`en-US`** 或 POSIX 形式)。
- **`TOKEN`**:与守护进程共享的 Bearer 令牌;空表示无身份验证。
- **`DAEMON`**:仅 **`0`** 禁用从薄 MCP 自动启动 `lionscraper daemon`。
在更改配置后重启 MCP 或主机应用。
### Python:通过 `python -m` 进行 MCP
```json
{
"mcpServers": {
"lionscraper": {
"command": "python",
"args": ["-m", "lionscraper"]
}
}
}
```
使用您安装软件包时使用的相同 **`python`**(或某些系统上的 `python3`)。
## 在浏览器扩展中匹配端口
1. 打开 LionScraper **设置/选项**。
2. 将 **桥接端口** 设置为与 **`PORT`**(例如 `13808`)相同的值。
3. 如果需要,使用 **重新连接**,重新加载扩展,或重启浏览器。
## 日常使用
1. 保持扩展 **启用**,并根据需要打开目标页面。
2. 用自然语言提问(例如检查连接,爬取列表/文章/电子邮件/电话号码/链接/图片)。
3. 如果您看到“未连接”或超时,请重试连接检查,并确认 **PORT** 匹配。
## 常见问题
**扩展未连接或爬取失败?**
- 扩展是否启用?
- AI 应用中的 **PORT** 是否与扩展的 **桥接端口** 完全匹配?
- 通常每个机器一个桥接就足够了;重复的 MCP 配置可能会冲突。
**在客户端看到 MCP 工具意味着一切正常吗?**
不一定。工具仅证明 **AI → 桥接**;扩展还必须在同一端口上注册。
## MCP 注册表和目录
官方 MCP 注册表条目(两者都使用 `server.json`):
| 路径 | 注册表名称 | 软件包 |
|------|----------------|---------|
| [packages/node/server.json](packages/node/server.json) | `io.github.dowant/lionscraper-node` | [npm: lionscraper](https://www.npmjs.com/package/lionscraper) (`mcpName` 在 `package.json` 中) |
| [packages/python/server.json](packages/python/server.json) | `io.github.dowant/lionscraper-python` | [PyPI: lionscraper](https://pypi.org/project/lionscraper/)(英文 `README.md` 中的 `mcp-name` 注释) |
**发布大纲**(安装官方 CLI,参见 [快速入门](https://modelcontextprotocol.io/registry/quickstart)):
1. 在每个 `server.json` 中发布 **npm / PyPI** 版本。
2. 在 **`packages/node`** 中:`mcp-publisher login github`,然后 `mcp-publisher publish`。
3. 在 **`packages/python`** 中:`mcp-publisher publish`(重用登录)。
第三方列表(例如 [Glama](https://glama.ai/mcp/servers))有其自己的规则; [Smithery](https://smithery.ai/docs/build/publish) 针对公共 HTTPS/流媒体设置,而不是本地标准输入输出 + npm/pip 默认。
## 第三方目录(Glama)
该项目列在 Glama 上(例如 [Glama 上的 LionScraper](https://glama.ai/mcp/servers/dowant/lionscraper-mcp))。如果页面显示 **无法安装** 或 **找不到许可证**,则通常的解决方法是:添加根目录 **`LICENSE`**(此仓库包含 [LICENSE](LICENSE)),添加 **`glama.json`**,包含组织拥有的仓库的维护者 **GitHub 用户名**([glama.json](glama.json)—编辑 `maintainers` 如果声明失败),在 Glama 上 **声明** 服务器,并可选地完成 Glama 的 **Docker / 发布** 流程,如果您需要他们的安装和安全/质量检查—官方安装仍然是 **`npm install -g lionscraper`** 和 **`pip install -U lionscraper`**。另请参见 [评分/检查清单页面](https://glama.ai/mcp/servers/dowant/lionscraper-mcp/score)。
## 许可证
[MIT](LICENSE)(与 npm 和 PyPI 软件包相同)。