网页内容抓取服务器

一个提供网页内容抓取功能的模型上下文协议服务器,内置提示注入防护,可将HTML转换为Markdown格式以便于处理。

  • by Tommertom
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Tommertom/fetch_mcp

使用说明

更安全的获取MCP服务器

提供web内容获取功能的模型上下文协议服务器 内置快速注射保护措施此服务器使LLM能够从网页中检索和处理内容,将HTML转换为markdown以便于使用,同时防止可能操纵LLM的恶意内容。

致谢

该项目基于Anthropic的Fetch MCP服务器实现,并结合了Goose的提示注入保护代码/模式。

🚀 快速开始

安装服务器

使用以下命令运行MCP服务器 紫外线:

uvx --refresh mcp-server-fetch-tom

这 --refresh flag确保您始终获得最新版本。

在AI IDE中配置

选择您的IDE并添加配置以启用获取MCP服务器:

克劳德桌面

编辑您的Claude Desktop配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["--refresh", "mcp-server-fetch-tom"]
    }
  }
}

VS代码(Cline/Roo-Cline)

添加到您的VS代码设置(.vscode/mcp.json 在工作区或用户设置JSON中):

{
  "mcp": {
    "servers": {
      "fetch": {
        "command": "uvx",
        "args": ["--refresh", "mcp-server-fetch-tom"]
      }
    }
  }
}

或者使用一键安装按钮:

光标

添加到光标设置:

  1. 打开光标设置(Cmd/Ctrl + ,)
  2. 搜索“MCP”
  3. 添加服务器配置,或编辑 .cursor/mcp.json:
{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["--refresh", "mcp-server-fetch-tom"]
    }
  }
}

继续(VS代码扩展)

编辑 ~/.continue/config.json:

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["--refresh", "mcp-server-fetch-tom"]
    }
  }
}

鹅AI

编辑 ~/.config/goose/profiles.yaml:

default:
  provider: openai
  processor: gpt-4
  accelerator: gpt-4o-mini
  moderator: passive
  toolkits:
    - developer
    - mcp
  mcp_servers:
    fetch:
      command: uvx
      args:
        - --refresh
        - mcp-server-fetch-tom

⚠️ 免责声明

本软件按“原样”提供,不提供任何形式的保修。 虽然该服务器实现了快速注射检测和缓解措施, 没有一种安全解决方案是100%有效的实施的保障措施旨在降低风险,但不能保证完全防止所有快速注入攻击。

用户应当:

  • 从不受信任的来源获取内容时要小心
  • 在敏感环境中对获取的内容采取行动之前,先进行审查
  • 了解坚定的攻击者可能会找到绕过检测的方法
  • 对于安全关键的应用程序,不要仅仅依赖这些安全措施

维护人员对使用此软件造成的任何损坏或安全事件不承担责任。

安全功能

此服务器包括提示注入保护措施,以保护LLM免受恶意web内容的侵害:

1.内容边界包装

所有提取的内容都用安全边界标签包裹 随机边界ID (防止逃跑袭击)。包装材料包括:

  • 明确说明内容应被视为 仅数据,而不是作为指示
  • LLM要遵循的关键安全规则
  • 源URL归因

2.快速注射模式检测

扫描内容以查找20多种可疑模式,包括:

  • 指令覆盖:“忽略前面的说明”,“忽略前面提示”
  • 角色操纵:“你现在是”,“扮演”,“假装是”
  • 系统提示攻击:“新系统提示”、“覆盖指令”
  • 越狱企图:“开发人员模式”、“DAN模式”和“绕过限制”
  • 输出操纵:“不提”,“保守这个秘密”
  • 编码指令:Base64模式,“解码并执行”

当检测到可疑模式时:

  • 未返回任何数据 -提取的内容完全被阻止
  • 只返回一条警告消息,指示检测到的模式数量
  • 提供源URL,以便用户可以手动查看是否认为这是误报

[!小心] 此服务器可以访问本地/内部IP地址,可能存在安全风险。使用此MCP服务器时请小心,以确保不会暴露任何敏感数据。

fetch工具将截断响应,但通过使用 start_index 参数,您可以指定从哪里开始内容提取。这让模型可以分块阅读网页,直到找到所需的信息。

可用工具

  • fetch -从互联网获取URL并将其内容提取为markdown。
    • url (字符串,必填):要获取的URL
    • max_length (整数,可选):返回的最大字符数(默认值:5000)
    • start_index (整数,可选):从此字符索引开始内容(默认值:0)
    • raw (boolean,可选):获取原始内容而不进行markdown转换(默认值:false)

当输出类型为“md”并且获取的资源为PDF时,它将自动转换为纯文本。

提示

  • 获取
    • 获取一个URL并将其内容提取为markdown
    • 论据:
      • url (字符串,必填):要获取的URL

安装

使用紫外线(推荐)

使用时 uv 不需要特定的安装。我们将 使用 uvx 直接运行 mcp服务器获取tom:

uvx --refresh mcp-server-fetch-tom

高级配置

替代安装方法

上述示例使用 uvx 为了简单起见。您还可以使用:

Docker
{
  "mcpServers": {
    "fetch": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp/fetch"]
    }
  }
}
pip installation

首次安装: pip install mcp-server-fetch-tom

然后配置:

{
  "mcpServers": {
    "fetch": {
      "command": "mcp-server-fetch-tom"
    }
  }
}

定制-用户代理

默认情况下,根据请求是来自模型(通过工具)还是由用户发起(通过提示) 服务器将使用用户代理

ModelContextProtocol/1.0 (Autonomous; +https://github.com/modelcontextprotocol/servers)

或

ModelContextProtocol/1.0 (User-Specified; +https://github.com/modelcontextprotocol/servers)

这可以通过添加参数进行自定义 --user-agent=YourUserAgent 到 args 配置中的列表。

自定义-代理

可以使用以下命令将服务器配置为使用代理 --proxy-url 争论。

Windows配置

如果您在Windows上遇到超时问题,可能需要设置 PYTHONIOENCODING 环境变量,以确保正确的字符编码:

Windows configuration (uvx)
{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["--refresh", "mcp-server-fetch-tom"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}
Windows configuration (pip)
{
  "mcpServers": {
    "fetch": {
      "command": "mcp-server-fetch-tom",
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

这解决了可能导致服务器在Windows系统上超时的字符编码问题。

调试

您可以使用MCP检查器调试服务器。对于uvx安装:

npx @modelcontextprotocol/inspector uvx mcp-server-fetch-tom

或者,如果您已将软件包安装在特定目录中或正在其上开发:

cd path/to/fetch_mcp
npx @modelcontextprotocol/inspector uv run mcp-server-fetch-tom

建筑与出版

对于维护人员:请参阅 出版指南 有关构建和发布到PyPI的详细说明。

快速参考:

# Build the package
uvx --from build pyproject-build --installer uv

# Check the build
uvx twine check dist/*

# Upload to PyPI
uvx twine upload dist/*

或者使用Makefile:

make build   # Build package
make check   # Verify package
make upload  # Upload to PyPI

有关更多详细信息,请参阅:

贡献

我们鼓励捐款以帮助扩展和改进mcp服务器获取。无论您是想添加新工具、增强现有功能还是改进文档,您的意见都是有价值的。

有关其他MCP服务器和实现模式的示例,请参阅: https://github.com/modelcontextprotocol/servers

欢迎拉取请求!请随时贡献新想法、错误修复或增强功能,使mcp服务器fetch更加强大和有用。

安全考虑

虽然此服务器实现了快速注入保护,但安全是一项共同责任:

  1. 纵深防御这些保障措施是一层保护措施;结合其他安全措施
  2. 定期更新:保持服务器更新,以从新的模式检测规则中受益
  3. 报告漏洞:如果您发现旁路或漏洞,请负责任地报告
  4. 假阳性:模式检测可以标记合法内容;根据上下文查看警告

许可证

mcp服务器获取是根据MIT许可证授权的。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。