fetch-mcp开发指南:从源码解析到自定义功能扩展
fetch-mcp开发指南从源码解析到自定义功能扩展【免费下载链接】fetch-mcpA flexible HTTP fetching Model Context Protocol server.项目地址: https://gitcode.com/gh_mirrors/fe/fetch-mcpfetch-mcp是一个灵活的HTTP抓取模型上下文协议MCP服务器能够将网页内容转换为HTML、Markdown、纯文本、JSON或YouTube转录文本。本文将带您从源码解析到自定义功能扩展全面掌握这个强大工具的开发技巧。项目概述fetch-mcp核心功能解析fetch-mcp作为MCP服务器和CLI工具主要解决网页内容抓取与格式转换的需求。从package.json可以看到项目使用TypeScript开发依赖了modelcontextprotocol/sdk作为MCP协议基础同时集成了jsdom、mozilla/readability和turndown等工具处理网页内容解析与格式转换。fetch-mcp项目logo展示了霓虹风格的FETCHMCP文字与电路板图案体现其技术属性主要技术栈核心语言TypeScript运行环境Node.js (18)构建工具Bun主要依赖modelcontextprotocol/sdkMCP协议支持jsdomDOM解析mozilla/readability文章内容提取turndownHTML转Markdownzod类型验证快速开始环境搭建与基础使用一键安装步骤首先克隆项目仓库git clone https://gitcode.com/gh_mirrors/fe/fetch-mcp cd fetch-mcp使用Bun安装依赖bun install构建项目bun run build基础命令示例fetch-mcp提供了直观的CLI工具支持多种内容抓取命令。以下是几个常用示例获取网页HTMLmcp-fetch html https://example.com转换网页为Markdownmcp-fetch markdown https://example.com --max-length 5000提取YouTube视频转录文本mcp-fetch youtube https://www.youtube.com/watch?vexample --lang en完整的命令说明可通过mcp-fetch --help查看或参考src/cli.ts源码。源码解析核心模块与工作原理Fetcher类内容抓取的核心实现src/Fetcher.ts是项目的核心模块实现了各种内容类型的抓取与转换功能。该类包含多个静态方法对应不同的内容处理策略html()获取原始HTML内容markdown()将HTML转换为Markdownreadable()使用Readability提取文章核心内容txt()提取纯文本内容json()处理JSON响应youtubeTranscript()获取YouTube视频转录文本Fetcher类实现了完善的安全机制包括验证URL协议、检查私有IP地址防止SSRF攻击等安全措施。例如validateUrl()方法确保只允许HTTP和HTTPS协议private static validateUrl(url: string): void { const parsedUrl new URL(url); if (parsedUrl.protocol ! http: parsedUrl.protocol ! https:) { throw new Error( Fetcher blocked URL with disallowed protocol ${parsedUrl.protocol}. Only HTTP and HTTPS are allowed., ); } // 私有IP检查逻辑... }CLI模块命令行交互实现src/cli.ts实现了命令行交互功能解析用户输入的命令和参数并调用Fetcher类的相应方法。CLI支持的命令包括html、markdown、readable、txt、json和youtube每个命令都有特定的参数选项。命令解析流程主要在parseArgs()函数中实现它负责验证命令合法性、解析URL和各种标志参数并返回结构化的参数对象。自定义功能扩展从零开始开发新特性扩展Fetcher类添加新的内容处理方法要添加新的内容处理功能最直接的方式是扩展Fetcher类。例如我们可以添加一个pdf()方法来支持PDF内容提取static async pdf(requestPayload: RequestPayload) { try { const response await this._fetch(requestPayload); // PDF处理逻辑... return { content: [{ type: text, text: pdfText }], isError: false }; } catch (error) { return { content: [{ type: text, text: error instanceof Error ? error.message : String(error) }], isError: true, }; } }扩展CLI添加新命令添加新命令需要修改src/cli.ts文件主要包括以下步骤在SUBCOMMANDS数组中添加新命令名称在fetchers对象中添加命令与Fetcher方法的映射添加新命令所需的参数解析逻辑例如添加pdf命令// 在SUBCOMMANDS中添加 const SUBCOMMANDS [html, markdown, readable, txt, json, youtube, pdf] as const; // 在fetchers对象中添加 const fetchers: Recordstring, (p: any) Promiseany { // ...现有命令 pdf: Fetcher.pdf.bind(Fetcher), };类型定义扩展如果添加了新的参数或返回类型需要更新src/types.ts文件中的类型定义确保类型安全。测试与调试确保代码质量fetch-mcp项目使用Bun的测试框架进行测试测试文件以.test.ts结尾如Fetcher.test.ts和YouTubeTranscript.test.ts。运行测试bun test添加新测试为新功能添加测试时可以创建新的测试文件或在现有测试文件中添加测试用例。例如为新的pdf功能添加测试test(Fetcher.pdf returns pdf text content, async () { const result await Fetcher.pdf({ url: https://example.com/test.pdf }); expect(result.isError).toBe(false); expect(result.content[0].type).toBe(text); // 更多断言... });部署与发布分享你的扩展构建项目bun run build本地测试./dist/cli.js 新命令 测试URL发布到npm维护者bun run publish:npm常见问题与解决方案问题YouTube转录文本获取失败解决方案确保已安装yt-dlp工具fetch-mcp会优先使用yt-dlp获取转录文本若未安装则尝试直接获取。安装方法# Ubuntu/Debian sudo apt install yt-dlp # macOS brew install yt-dlp问题处理大型网页时内存溢出解决方案使用--max-length参数限制返回内容大小或修改src/types.ts中的maxResponseBytes常量调整默认限制。总结fetch-mcp开发的最佳实践通过本文的介绍您已经了解了fetch-mcp的核心功能、源码结构和扩展方法。在开发自定义功能时建议遵循以下最佳实践保持类型安全利用TypeScript的类型系统为新功能添加完善的类型定义实现错误处理遵循现有代码的错误处理模式确保错误信息清晰添加测试用例为新功能编写测试保证代码质量更新文档修改README.md添加新功能的使用说明fetch-mcp作为一个灵活的内容抓取工具其模块化设计使得扩展功能变得简单直观。无论是添加新的内容格式支持还是优化现有功能都可以通过本文介绍的方法实现。希望这篇指南能帮助您更好地理解和使用fetch-mcp【免费下载链接】fetch-mcpA flexible HTTP fetching Model Context Protocol server.项目地址: https://gitcode.com/gh_mirrors/fe/fetch-mcp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

GNU Emacs notebook-mode配置指南:自定义Python解释器、CSS样式与导出选项

GNU Emacs notebook-mode配置指南:自定义Python解释器、CSS样式与导出选项

GNU Emacs notebook-mode配置指南:自定义Python解释器、CSS样式与导出选项 【免费下载链接】notebook-mode GNU Emacs notebook mode 项目地址: https://gitcode.com/gh_mirrors/no/notebook-mode GNU Emacs notebook-mode是一款基于org-mode的轻量级笔记本工…

2026/10/12 11:49:42 阅读更多 →
Kun 完整上手教程:一条主线从安装到交付可交互 UI 设计稿

Kun 完整上手教程:一条主线从安装到交付可交互 UI 设计稿

Kun 完整上手教程:一条主线从安装到交付可交互 UI 设计稿 【免费下载链接】Kun Local-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI. 项目地址: https://gitcode.com/gh_mirrors/de/…

2026/10/12 11:47:22 阅读更多 →
BetterJoy 从零到精通:5 步让 Switch 手柄在 PC 上满血复活

BetterJoy 从零到精通:5 步让 Switch 手柄在 PC 上满血复活

BetterJoy 从零到精通:5 步让 Switch 手柄在 PC 上满血复活 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode…

2026/10/7 23:08:09 阅读更多 →

最新新闻

软件系统项目实施方案怎么写?六个板块与避坑指南

软件系统项目实施方案怎么写?六个板块与避坑指南

简介:面向互联网领域的软件项目立项与交付场景,这份方案文档系统梳理了从需求分析、总体设计、详细设计到系统开发、实施试运行、验收及正式维护的完整项目周期,并覆盖项目管理组织、范围、进度、风险、质量、配置、文档与保密等关键模块&…

2026/10/12 12:47:59 阅读更多 →
优先队列实战指南:从二叉堆原理到Top-K与任务调度

优先队列实战指南:从二叉堆原理到Top-K与任务调度

PriorityQueue这个类,在各种语言的底层库里都存在,但很多开发者对它的认识停留在“一个会自动排序的队列”这种程度。实际用下来,它是一门非常重要的算法数据结构,在任务调度、Top-K问题、图搜索、事件驱动等场景里都是心脏级别的…

2026/10/12 12:47:59 阅读更多 →
软考高项成本管理:估算、预算与挣值分析考点精讲

软考高项成本管理:估算、预算与挣值分析考点精讲

备考软考高项的考生,一提到项目成本管理,很多人第一反应就是背公式、算挣值。这个章节确实贯穿上午选择题和下午案例题,是拿分性价比非常高的部分——它不依赖死记硬背,更看重对管理逻辑的理解。第11章的上半部分主要在讲成本管理…

2026/10/12 12:47:58 阅读更多 →
Linux图形栈分层详解:X.Org、GTK、Qt与GNOME/KDE的关系

Linux图形栈分层详解:X.Org、GTK、Qt与GNOME/KDE的关系

很多人第一次接触 Linux 桌面时,都会被这一串名字绕晕:X Window、X.Org、GTK、Qt、GNOME、KDE,看起来都跟“图形界面”有关,但到底谁是谁?我之前带新人时发现,最有效的解释方式不是按名词一个个背&#xff…

2026/10/12 12:47:58 阅读更多 →
Zynq7020开发板Linux实验全流程:从环境搭建到PL端协同开发

Zynq7020开发板Linux实验全流程:从环境搭建到PL端协同开发

1. 为什么这块Zynq7020开发板值得拿来跑Linux实验手里这块Zynq7020开发板,在嵌入式圈子里算是老面孔了。它最特别的地方在于芯片内部同时集成了ARM Cortex-A9双核处理器(PS端)和FPGA可编程逻辑(PL端),这种&…

2026/10/12 12:47:58 阅读更多 →
openai/gpt-oss-120b 接入 TaoToken 统一 Key 通道:从 endpoint 到 Base URL 的可复制配置

openai/gpt-oss-120b 接入 TaoToken 统一 Key 通道:从 endpoint 到 Base URL 的可复制配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 12:46:57 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →