网页内容提取服务器

一个提供智能网页搜索和内容提取功能的MCP服务器,能够自动将网页内容转换为干净的Markdown格式。

  • by hmalfee
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 hmalfee/web-content-mcp

使用说明

Web内容MCP服务器

一个强大的 模型上下文协议(MCP)服务器 它提供智能网络搜索和内容提取功能。该服务器使人工智能助手能够搜索谷歌并获取网页内容,自动将所有内容转换为干净、可读的markdown格式。

🚀 特性

  • 谷歌搜索集成:使用可定制的结果计数执行谷歌搜索
  • 内容提取:自动从网页中提取主要内容
  • Markdown转换:将HTML内容转换为干净、可读的markdown
  • 智能内容过滤:删除广告、导航和无关元素
  • 多种内容策略:使用智能选择器查找主要内容
  • 错误处理:具有回退机制的强大错误处理
  • 类型安全:使用TypeScript和Zod验证构建

🛠️ 可用工具

1.网络搜索(web_search)

搜索谷歌并返回带有提取内容的格式化结果。

参数:

  • query (string,必填):要执行的搜索查询
  • numResults (number,可选):要返回的结果数(1-20,默认值:5)

例子:

{
  "name": "web_search",
  "arguments": {
    "query": "TypeScript best practices",
    "numResults": 3
  }
}

2.获取网页(fetch_webpage)

从特定网页URL获取和提取内容。

参数:

  • url (string,必填):要获取的网页的URL

例子:

{
  "name": "fetch_webpage",
  "arguments": {
    "url": "https://example.com/article"
  }
}

📋 先决条件

  • Node.js 18+
  • SerpAPI密钥 (用于谷歌搜索功能)

🔧 安装

  1. 克隆存储库:

    git clone <repository-url>
    cd web-content-mcp
    
  2. 安装依赖项:

    npm install
    
  3. 设置环境变量: 创建一个 .env 根目录中的文件:

    SERPAPI_KEY=your_serpapi_key_here
    

    从以下位置获取SerpAPI密钥 https://serpapi.com/

🚀 用法

运行服务器

只需使用以下命令运行服务器 npx tsx 直接:

npx tsx --env-file=.env src/index.ts

此命令:

  • 用途 tsx 直接运行TypeScript而无需编译
  • 从加载环境变量 .env 文件
  • 立即启动MCP服务器

作为MCP服务器

此服务器旨在与MCP兼容的客户端一起使用。配置您的MCP客户端以通过stdio传输连接到此服务器。

MCP客户端配置示例:

{
  "mcpServers": {
    "web-content": {
      "command": "npx",
      "args": [
        "tsx",
        "--env-file=/path/to/web-content-mcp/.env",
        "/path/to/web-content-mcp/src/index.ts"
      ],
      "env": {
        "SERPAPI_KEY": "your_api_key"
      }
    }
  }
}

🏗️ 建筑

服务器遵循干净的模块化架构:

src/
├── index.ts      # Main server setup and request handling
├── tools.ts      # Tool implementations (WebSearch, FetchWebpage)
├── types.ts      # TypeScript types and Zod schemas
└── env.ts        # Environment variable configuration

关键组件

  • 服务器:具有stdio传输的主MCP服务器实例
  • 工具:具有抽象基类的模块化工具类
  • 内容提取:智能HTML到markdown转换
  • 类型安全:全面的Zod验证模式
  • 错误处理:优雅的错误处理,信息丰富

🔍 内容提取策略

服务器使用智能内容提取方法:

  1. 内容选择器:尝试多个选择器来查找主要内容:

    • main, article, .content, .main-content
    • .post-content, .entry-content, #content
    • .container (作为后备方案)
  2. 内容物清理:删除不需要的元素:

    • 脚本、样式、导航
    • 页眉、页脚、侧边栏
    • 广告和促销内容
  3. Markdown转换:

    • 将HTML转换为干净的markdown
    • 使用alt文本保留图像
    • 保持正确的标题结构
    • 限制内容长度以防止溢出

⚙️ 配置

服务器包括几个可配置的选项 tools.ts:

const config = {
  serpApiKey: env.SERPAPI_KEY,
  timeout: 10000, // Request timeout (ms)
  maxContentLength: 5000, // Max content length per page
  userAgent: "Mozilla/5.0 (compatible; WebContentMCP/1.0)",
};

🔒 环境变量

变量 描述 必填
SERPAPI_KEY 您用于谷歌搜索的SerpAPI密钥 是

📄 输出格式

这两个工具都以markdown格式返回内容:

网络搜索结果

# Web Search Results for: "query"

Found X results:

## 1. Page Title

**URL:** https://example.com
**Snippet:** Brief description...
**Content:**
Main page content in markdown...

---

网页内容

# Webpage Content

**URL:** https://example.com
**Content:**
Extracted page content in markdown...

🛡️ 错误处理

服务器包括全面的错误处理:

  • 网络错误:超时和连接失败
  • API错误:SerpAPI速率限制和身份验证
  • 内容错误:URL无效和解析失败
  • 验证错误:输入参数无效

📞 支持

如果您遇到任何问题或有疑问:

  1. 检查 问题 页
  2. 创建包含详细信息的新问题
  3. 包括错误消息和环境详细信息

内置于❤️ 使用TypeScript和模型上下文协议