内容
# Trafilatura MCP 服务器
本仓库包含一个模型上下文协议(MCP)服务器,为 [Trafilatura](https://trafilatura.readthedocs.io/) 库提供基于工具的接口,这是一个用于网页抓取的强大工具。它设计用于与兼容 MCP 的客户端配合使用,允许开发人员和模型以编程方式从网页中提取主要内容和元数据。
## 功能特点
- **网页抓取:** 利用 Trafilatura 从给定 URL 中提取主要文本内容。
- **元数据提取:** 检索标题、作者、日期等元数据。
- **可配置提取:** 选项包括或排除输出中的评论和表格。
- **简单工具:** 暴露一个单一的、易于使用的 `fetch_and_extract` 工具。
- **异步:** 采用异步架构以实现高效的 I/O 操作。
- **MCP 标准:** 通过标准 I/O 进行通信,使其与各种 MCP 客户端兼容。
## 先决条件
在运行服务器之前,您需要安装 Python 3.12+ 和 `uv`。您还需要 Node.js 和 `npx` 来运行 MCP Inspector 工具进行测试。
## 安装
1. **克隆仓库。**
```bash
git clone <仓库 URL>
cd trafilatura_mcp
```
2. **创建虚拟环境并安装所需依赖:**
```bash
# 创建虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate
# 安装依赖
uv sync
```
## 运行和测试服务器
MCP 服务器是一个命令行应用程序,通过标准 I/O 进行通信。要使用它,客户端(例如 IDE、编码代理或检查工具)必须启动服务器进程。
### 运行诊断
您可以直接从终端运行脚本,以查看是否可以启动而无错误。这是一种快速验证 Python 环境和脚本基本语法的方法。
```bash
python3 trafilatura_mcp.py
```
服务器将启动并等待输入,但您无法直接从终端与它交互。
### 使用 MCP Inspector 测试
使用 **MCP Inspector** 是交互式测试服务器的推荐方式。它为向服务器发送请求提供了一个交互式 Shell。
1. **启动 Inspector:**
您可以使用 `npx` 在不进行永久安装的情况下运行 Inspector。Inspector 将为您启动 MCP 服务器脚本。从项目目录运行:
```bash
npx @modelcontextprotocol/inspector uv run -- python3 trafilatura_mcp.py
```
2. **与服务器交互:**
一旦 Inspector 启动,您就可以连接到服务器并使用 `list_tools` 和 `call_tool` 等命令。
**示例会话:**
```bash
# 列出可用工具
> list_tools
# 调用带有 URL 的 'fetch_and_extract' 工具
> call_tool fetch_and_extract '''{"url": "https://www.theguardian.com/us-news/2025/sep/28/mass-shootings-north-carolina-texas-new-orleans"}'''
```
## 配置
此服务器不需要任何外部 API 密钥或配置文件。
## 与 MCP 客户端配合使用(VS Code 示例)
您可以从任何标准 MCP 客户端连接到此服务器。以下是如何在支持 MCP 的 VS Code 环境中执行此操作:
1. **配置 MCP 客户端:**
在您的 IDE 的 MCP 客户端设置中(例如,在 VS Code 的 `mcp.json` 中),配置一个指向脚本的新 MCP 服务器。
**示例 `mcp.json` 条目:**
```json
{
"servers": {
"trafilatura_scraper": {
"command": "uv",
"args": [
"run",
"python3",
"trafilatura_mcp.py"
],
"cwd": "/path/to/your/project/trafilatura_mcp"
}
}
}
```
*注意:请将 `/path/to/your/project/trafilatura_mcp` 替换为项目目录的绝对路径。*
2. **使用工具:**
连接后,您可以在聊天或代理交互中使用公开的工具。例如,要从新闻文章中提取内容,您可以发送以下结构化的工具调用:
```json
{
"tool": "fetch_and_extract",
"arguments": {
"url": "https://apnews.com/article/elon-musk-x-twitter-hate-speech-antisemitism-0d35c5a69fd5c6183b729f7f3c87064a",
"include_comments": false,
"include_tables": true
}
}
```
服务器将获取 URL,提取主要内容和元数据,并以 JSON 对象形式返回。