内容
# 浏览器 🦢
*浏览网页 — 一个无干扰的终端浏览器和适用于人类和 AI 代理的 MCP 服务器.*


`gander` 获取网页内容,去除导航、广告和脚本,并为您提供
仅可读的内容 — 以终端中格式化的文本形式显示,或作为交互式
TUI,您可以滚动和点击浏览,或者作为 AI 代理可以通过 **模型上下文协议(MCP)** 调用的工具。
## 为什么
当今大多数“AI 友好”的浏览方式意味着需要一个完整的无头 Chromium 实例。
`gander` 则采取相反的策略:像 `lynx` 这样的文本浏览器一样读取网页,
但具有现代内容提取功能和一流的 MCP 服务器,
因此任何与 MCP 兼容的代理都可以浏览可读的网页内容,而无需 GPU 或渲染引擎。
## 安装
```bash
git clone https://github.com/abdulkhaliqfarah/gander.git
cd gander
uv venv && source .venv/bin/activate
uv pip install -e .
```
## 使用
### 从命令行读取页面
```bash
gander view https://example.com/some-article
gander view https://example.com/some-article --json # 结构化输出
```
### 交互式浏览
```bash
gander tui # 打开时地址栏为空
gander tui https://example.com # 直接打开页面
```
快捷键:`o` 打开网址 · `b` 后退 · `f` 前进 · `j`/`k` 滚动 · `g`/`G` 顶部/底部 · `q` 退出。
在右侧面板中选择任意链接并按 Enter 键即可访问。
### 作为 MCP 服务器运行
```bash
gander mcp
```
这启动了一个 stdio MCP 服务器,暴露了两个工具:
| 工具 | 描述 |
| --- | --- |
| `browse_url(url)` | 获取网址,返回标题、Markdown 内容和链接 |
| `search_in_page(url, query)` | 获取网址,返回与搜索查询匹配的片段 |
将其添加到您的 MCP 客户端配置中(例如 Claude Desktop、VS Code):
```json
{
"mcpServers": {
"gander": {
"command": "gander",
"args": ["mcp"]
}
}
}
```
## 工作原理
1. **获取** — `httpx` 获取原始 HTML。
2. **提取** — [`trafilatura`](https://github.com/adbar/trafilatura) 提取主要可读内容为 Markdown,
而 `lxml` 收集页面上的每个链接(解析为绝对网址)。
3. **呈现** — 根据运行方式,以 `rich` 格式化的终端输出、`textual` TUI 或 MCP 工具响应显示。
## 开发
```bash
uv pip install -e ".[dev]"
pytest
ruff check .
```
## 许可证
MIT © Abdulkhaliq Farah — 请参阅 [LICENSE](LICENSE)。