网页内容提取服务

一个基于Model Context Protocol的服务器,提供网页内容抓取和转换为Markdown的功能,适用于需要从网页中提取和处理内容的场景。

  • by tgambet
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 tgambet/mcp-fetch-node

使用说明

获取MCP服务器

[!注意] 此存储库已存档。还有许多其他MCP服务器实现可以做同样的事情,甚至更多。

官方港口 获取MCP服务器 对于Node.js。请检查 与原始项目的主要区别 有关更多详细信息,请参阅第节。

描述

A. 模型上下文协议 提供web内容获取功能的服务器。此服务器使LLM能够从网页中检索和处理内容,将HTML转换为markdown以便于使用。

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

可用工具

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

可用提示

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

用法

mcp-fetch-node 在以下位置公开SSE端点 /sse 默认情况下在端口8080上。

Node.js:

npx -y mcp-fetch-node

Docker:

docker run -it tgambet/mcp-fetch-node

定制-robots.txt

默认情况下,如果请求来自模型(通过工具),服务器将遵守网站robots.txt文件,但如果请求是用户发起的(通过提示),则不会遵守。可以通过添加参数来禁用此功能 --ignore-robots-txt 转到run命令。

定制-用户代理

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

# Tool call
ModelContextProtocol/1.0 (Autonomous; +https://github.com/tgambet/mcp-fetch-node)

# Prompt
ModelContextProtocol/1.0 (User-Specified; +https://github.com/tgambet/mcp-fetch-node)

这可以通过添加参数进行自定义 --user-agent=YourUserAgent 到run命令,它将覆盖这两个命令。

与原始项目的主要区别

  • 此实现是用TypeScript编写的,目标是Node.js运行时。 它适用于python不可用的情况。

  • 此实现提供了一个SSE接口,而不是stdio。 它更适合作为web服务部署,增加了灵活性。

  • 此实现不依赖Readability.js库进行内容提取。 它使用了一种更通用的自定义实现,适用于与新闻相关的其他网站。

然而,api和工具描述与原始项目相同,因此您可以尝试 mcp-fetch-node 作为原始项目的替代品。

如有任何问题,请向 问题跟踪系统.

特征

  • 从URL获取并提取相关内容
  • 尊重 robots.txt (可以禁用)
  • 用户代理定制
  • Markdown转换
  • 分页

发展

pnpm install
pnpm dev
pnpm lint:fix
pnpm format
pnpm test
pnpm build
pnpm start
pnpm inspect

贡献

欢迎投稿!请随时提交拉取请求。

许可证

麻省理工学院

待办事项

  • []添加用户日志和进度
  • []添加文档和示例
  • []性能基准和改进
  • []提取质量基准:cfhttps://github.com/adbar/trafilatura/blob/master/tests/comparison_small.py