这是官方MCP服务器在Node.js上的移植版本。更多详情请参阅与原项目的关键差异部分。
这是一个提供网页内容抓取能力的模型上下文协议服务器。该服务器使LLMs能够从网页中检索并处理内容,将HTML转换为Markdown以便于消费。
抓取工具会截断响应,但通过使用start_index参数,你可以指定从何处开始提取内容。这使得模型可以分块读取网页,直到找到所需的信息。
fetch - 从互联网抓取一个URL并将其内容提取为Markdown。
url(字符串,必需):要抓取的URLmax_length(整数,可选):返回的最大字符数(默认值:5000)start_index(整数,可选):从此字符索引开始提取内容(默认值:0)raw(布尔值,可选):获取未经Markdown转换的原始内容(默认值:false)fetch - 抓取一个URL并将其内容提取为Markdown
url(字符串,必需):要抓取的URLmcp-fetch-node默认在8080端口的/sse上暴露一个SSE端点。
Node.js:
npx -y mcp-fetch-node
Docker:
docker run -it tgambet/mcp-fetch-node
默认情况下,如果请求来自模型(通过工具),服务器将遵守网站的robots.txt文件;但如果请求是由用户发起的(通过提示),则不会遵守。可以通过向运行命令添加参数--ignore-robots-txt来禁用此功能。
默认情况下,根据请求是来自模型(通过工具)还是由用户发起(通过提示),服务器将使用以下用户代理之一:
# 工具调用
ModelContextProtocol/1.0 (Autonomous; +https://github.com/tgambet/mcp-fetch-node)
# 提示
ModelContextProtocol/1.0 (User-Specified; +https://github.com/tgambet/mcp-fetch-node)
可以通过向运行命令添加参数--user-agent=YourUserAgent来自定义用户代理,这将覆盖上述两种情况。
此实现使用TypeScript编写,并针对Node.js运行时环境。 它适用于Python不可用的情况。
此实现提供了一个SSE接口,而不是stdio。 这更适合部署为网络服务,增加了灵活性。
此实现不依赖Readability.js库进行内容提取。 它使用了一个更通用的自定义实现,适合新闻以外的其他类型网站。
然而,API和工具描述与原项目相同,因此你可以尝试将mcp-fetch-node作为原项目的替代品。
任何问题请报告至问题跟踪器。
robots.txt(可禁用)pnpm install
pnpm dev
pnpm lint:fix
pnpm format
pnpm test
pnpm build
pnpm start
pnpm inspect
欢迎贡献!请随意提交Pull Request。