URL文本抓取服务器

一个基于FastMCP框架的现代MCP服务器,提供URL文本抓取、网页爬取和网络搜索功能,适用于LM Studio和其他MCP兼容客户端。

  • by billallison
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 billallison/brsearch-mcp-server

使用说明

URL文本提取器MCP服务器

一种现代的模型上下文协议(MCP)服务器,使用FastMCP框架提供URL文本获取、网络抓取和网络搜索功能,供LM Studio和其他MCP兼容客户端使用。

服务器使用现代FastMCP框架构建,该框架提供:

  • 基于干净装饰器的工具定义
  • 从类型提示自动生成架构
  • 简化的服务器设置和配置
  • 更好的错误处理和日志记录

在按照MCP最佳实践进行现代化改造的同时,所有安全特性和功能都得到了保留。

特性

此MCP服务器使AI模型能够:

  • 获取文本内容 从任何URL提取所有可见文本
  • 提取链接 从网页发现相关资源
  • 搜索网页 使用Brave搜索并自动从热门结果中获取内容
  • 优雅地处理错误 具有适当的超时和异常处理

安全特性

企业级安全实施:

  • SSRF保护:阻止对内部网络和元数据端点的请求
  • 输入消毒:验证并清除所有URL和查询输入
  • 内存保护:内容大小限制可防止内存耗尽
  • 速率限制:具有可配置阈值的安全API速率限制
  • 错误处理:全面的异常处理,无信息泄露

工具

服务器提供三个主要工具:

fetch_url_text

  • 描述:从URL下载所有可见文本
  • 参数:
    • url (string,必填):从中获取文本的URL
  • 退货:清除网页中的文本内容

fetch_page_links

  • 描述:从网页中提取所有链接
  • 参数:
    • url (string,必填):从中获取链接的URL
  • 退货:页面上找到的所有href链接列表

brave_search_and_fetch

  • 描述:使用Brave Search搜索网络,并自动从顶部结果中获取内容
  • 参数:
    • query (字符串,必填):搜索查询
    • max_results (整数,可选):获取内容的最大结果数(默认值:3,最大值:10)
  • 退货:来自每个结果URL的包含全文内容的搜索结果

先决条件

勇敢搜索API密钥

要使用搜索功能,您需要一个免费的Brave search API密钥:

  1. 访问 勇敢搜索API
  2. 注册免费帐户(每月2000次查询,每秒最多1次)
  3. 获取API密钥
  4. 复制 .env.example 到 .env 并添加您的API密钥:
    cp .env.example .env
    # Edit .env and set: BRAVE_API_KEY=your_actual_api_key
    

安装

  1. 克隆此存储库
  2. 安装依赖项:
    uv sync --dev --all-extras
    
  3. 配置您的环境:
    cp .env.example .env
    # Edit .env file and set your BRAVE_API_KEY
    

用法

LM工作室

  1. 打开LM Studio并导航到集成部分

  2. 点击“安装”,然后点击“编辑mcp.json”

  3. 选项A:使用配置助手脚本

    ./configure_lmstudio.sh
    

    这将为您的系统生成具有正确路径的正确配置。

  4. 选项B:手动配置 -添加服务器配置:

{
  "mcpServers": {
    "url-text-fetcher": {
      "command": "uv",
      "args": [
        "run", 
        "url-text-fetcher"
      ],
      "cwd": "/path/to/mcp-server"
    }
  }
}

注: API密钥将自动从您的 .env 项目目录中的文件。

  1. 保存配置并重新启动LM Studio
  2. 服务器将出现在集成部分

独立使用

您也可以直接运行服务器:

uv run url-text-fetcher

例子

一旦配置了LM Studio,您可以要求AI:

  • “从以下位置获取文本内容https://example.com"
  • “从获取所有链接https://news.example.com"
  • “搜索‘Python网页抓取’,并向我显示前3个结果中的内容”
  • “关于人工智能的最新消息是什么?搜索并获取完整文章”
  • “查找有关MCP服务器的信息并获取详细内容”

依赖项

  • mcp>=1.12.3 -模型上下文协议框架
  • requests>=2.31.0 -用于web请求和勇敢搜索API的HTTP库
  • beautifulsoup4>=4.12.0 -HTML解析和文本提取

配置

服务器可以通过以下方式配置 .env 文件:

# Required: Brave Search API Key
BRAVE_API_KEY=your_api_key_here

# Brave Search API Rate Limit (requests per second)
# Free tier: 1 request per second (default)
# Paid tier: 20 requests per second  
# Higher tier: 50 requests per second
# Set this to match your subscription level
BRAVE_RATE_LIMIT_RPS=1

# Optional: Request timeout in seconds (default: 10)
REQUEST_TIMEOUT=10

# Optional: Content length limit in characters (default: 5000)
CONTENT_LENGTH_LIMIT=5000

# Optional: Maximum response size in bytes (default: 10MB)
MAX_RESPONSE_SIZE=10485760

Brave搜索订阅级别

服务器会根据您的Brave Search订阅自动调整其速率限制:

  • 免费层:每秒1个请求(BRAVE_RATE_LIMIT_RPS=1)
  • 付费等级:每秒20个请求(BRAVE_RATE_LIMIT_RPS=20)
  • 更高层次:每秒50个请求(BRAVE_RATE_LIMIT_RPS=50)

服务器将对所有并发请求强制执行配置的速率限制,以确保您保持在API配额范围内。

看 .env.example 对于模板。

发展

本项目使用:

  • Python 3.13+
  • 紫外线 用于依赖关系管理
  • MCP-SDK 用于协议实施

为发展而设立:

  1. 克隆存储库
  2. 跑 uv sync --dev --all-extras
  3. 进行更改
  4. 使用MCP兼容客户端进行测试

故障排除

LM Studio配置问题

如果你看到类似“生成失败: url-text-fetcher“在LM Studio日志中:

  1. 运行配置帮助程序:

    ./configure_lmstudio.sh
    
  2. 确保您使用的是完整路径:

    • 使用完整路径 uv (例如。, /Users/username/.local/bin/uv)
    • 包括 cwd (当前工作目录)在您的配置中
    • 设置 BRAVE_API_KEY 环境变量
  3. 手动测试服务器:

    uv run url-text-fetcher
    

    服务器应启动并等待输入(按Ctrl+C退出)。

  4. 检查您的API密钥:

    # Check if your .env file has the API key set
    cat .env | grep BRAVE_API_KEY
    

    或手动测试:

    export BRAVE_API_KEY=your_actual_api_key
    echo $BRAVE_API_KEY  # Should show your key
    

常见问题

  • “BRAVE_API_KEY环境变量是必需的”:确保你的 .env 文件包含 BRAVE_API_KEY=your_actual_api_key
  • “网络错误”:检查您的互联网连接和API密钥的有效性
  • “内容被截断”:超长网页的正常行为(默认内容限制为5000个字符)

错误处理

该服务器包括强大的错误处理功能,用于:

  • 网络超时(默认10秒)
  • URL无效
  • HTTP错误(4xx、5xx响应)
  • 解析失败
  • 缺少API密钥
  • 一般例外

所有错误都以描述性文本消息的形式返回,以帮助用户了解问题所在。

发展

本项目使用:

  • Python 3.13+
  • 紫外线 用于依赖关系管理
  • MCP-SDK 用于协议实施

为发展而设立:

  1. 克隆存储库
  2. 跑 uv sync --dev --all-extras
  3. 进行更改
  4. 使用MCP兼容客户端进行测试

调试

由于MCP服务器在stdio上运行,调试可能具有挑战性。为了达到最佳调试效果 经验,我们强烈建议使用 MCP检查员.

您可以通过以下方式启动MCP检查器 npm 使用此命令:

npx @modelcontextprotocol/inspector uv --directory /Users/wallison/TechProjects/mcp-server run url-text-fetcher

启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。

许可证

MIT许可证-有关详细信息,请参阅许可证文件