Token导航 LogoToken导航TokenDH.com
Mult Fetch MCP Server logo
浏览器工具stdio官方级别未说明来源级核验

Mult Fetch MCP Server

MCP Server

@smithery/cli

A versatile MCP-compliant web content fetching tool that supports multiple modes (browser/node), formats (HTML/JSON/Markdown/Text), and intelligent proxy detection, with bilingual interface (English/Chinese).

工具数

5

提示词数

0

GitHub Stars

13

资源数

0
浏览器自动化内容提取TypeScriptClaudeClaudeCursorClaude Desktop

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

lmcc-dev

提供方

lmcc-dev

最后核验

2026/5/18 04:55

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx -y @smithery/cli install @lmcc-dev/mult-fetch-mcp-server --client claude

详细介绍

多点取mcp服务器

](https://www.npmjs.com/package/@lmcc-dev/mult-fetch-mcp-server) ![License: MIT](https://opensource.org/licenses/MIT) ](https://nodejs.org/) ![TypeScript](https://www.typescriptlang.org/) ![MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk) ](https://github.com/lmcc-dev/mult-fetch-mcp-server/stargazers) ](https://github.com/lmcc-dev/mult-fetch-mcp-server/network/members) ](https://github.com/lmcc-dev/mult-fetch-mcp-server/issues) ](https://github.com/lmcc-dev/mult-fetch-mcp-server/pulls) ](https://www.npmjs.com/package/@lmcc-dev/mult-fetch-mcp-server) ](https://github.com/lmcc-dev/mult-fetch-mcp-server/commits/main) ](https://github.com/lmcc-dev/mult-fetch-mcp-server/graphs/contributors) ](https://smithery.ai/server/@lmcc-dev/mult-fetch-mcp-server) ![codecov](https://codecov.io/gh/lmcc-dev/mult-fetch-mcp-server) ![CodeFactor](https://www.codefactor.io/repository/github/lmcc-dev/mult-fetch-mcp-server)

该项目实现了一个符合MCP的客户端和服务器,用于AI助手和外部工具之间的通信。

英语 | 中文文档

项目结构

fetch-mcp/
├── src/                         # Source code directory
│   ├── lib/                     # Library files
│   │   ├── fetchers/            # Web fetching implementation
│   │   │   ├── browser/         # Browser-based fetching
│   │   │   │   ├── BrowserFetcher.ts      # Browser fetcher implementation
│   │   │   │   ├── BrowserInstance.ts     # Browser instance management
│   │   │   │   └── PageOperations.ts      # Page interaction operations
│   │   │   ├── node/            # Node.js-based fetching
│   │   │   └── common/          # Shared fetching utilities
│   │   ├── utils/               # Utility modules
│   │   │   ├── ChunkManager.ts        # Content chunking
│   │   │   ├── ContentProcessor.ts    # HTML to text conversion
│   │   │   ├── ContentExtractor.ts    # Intelligent content extraction
│   │   │   ├── ContentSizeManager.ts  # Content size limiting
│   │   │   └── ErrorHandler.ts        # Error handling
│   │   ├── server/              # Server-related modules
│   │   │   ├── index.ts         # Server entry
│   │   │   ├── browser.ts       # Browser management
│   │   │   ├── fetcher.ts       # Web fetching logic
│   │   │   ├── tools.ts         # Tool registration and handling
│   │   │   ├── resources.ts     # Resource handling
│   │   │   ├── prompts.ts       # Prompt templates
│   │   │   └── types.ts         # Server type definitions
│   │   ├── i18n/                # Internationalization support
│   │   └── types.ts             # Common type definitions
│   ├── client.ts                # MCP client implementation
│   └── mcp-server.ts            # MCP server main entry
├── index.ts                     # Server entry point
├── tests/                       # Test files
└── dist/                        # Compiled files

MCP规范

模型上下文协议(MCP)定义了两种主要的传输方法:

  1. 标准输入/输出(Stdio):客户端将MCP服务器作为子进程启动,它们通过标准输入(stdin)和标准输出(stdout)进行通信。
  2. 服务器发送事件(SSE):用于在客户端和服务器之间传递消息。

本项目采用标准输入/输出(Stdio)传输方法。

特性

  • 基于官方MCP SDK的实现
  • 支持标准输入/输出(Stdio)传输
  • 多种网络抓取方法(HTML、JSON、文本、Markdown、纯文本转换)
  • 智能模式切换:在标准请求和浏览器模式之间自动切换
  • 内容大小管理:自动将大型内容拆分为可管理的块,以解决AI模型上下文大小的限制
  • 分块内容检索:在保持上下文连续性的同时请求特定大内容块的能力
  • 详细的调试日志记录到stderr
  • 双语国际化(中英文)
  • 模块化设计,易于维护和扩展
  • 智能内容提取:基于Mozilla的可读性库,能够从网页中提取有意义的内容,同时过滤掉广告和导航元素
  • 元数据支持:能够提取网页元数据,如标题、作者、发布日期和网站信息
  • 智能内容检测:自动检测页面是否包含有意义的内容,过滤掉登录页面、错误页面和其他没有实质内容的页面
  • 浏览器自动化增强功能:支持页面滚动、cookie管理、选择器等待和其他高级浏览器交互

安装

通过Smithery安装

通过以下方式自动为Claude Desktop安装Mult Fetch MCP服务器 史密瑟里:

npx -y @smithery/cli install @lmcc-dev/mult-fetch-mcp-server --client claude

本地安装

pnpm install

全球安装

pnpm add -g @lmcc-dev/mult-fetch-mcp-server

或者直接使用npx运行(无需安装):

npx @lmcc-dev/mult-fetch-mcp-server

与Claude整合

要将此工具与Claude桌面集成,您需要添加服务器配置:

配置文件位置

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%/Claude/claude_desktop_config.json

配置示例

方法1:使用npx(推荐)

此方法最简单,不需要指定完整路径,适用于全局安装或直接与npx一起使用:

{
  "mcpServers": {
    "mult-fetch-mcp-server": {
      "command": "npx",
      "args": ["@lmcc-dev/mult-fetch-mcp-server"],
      "env": {
        "MCP_LANG": "en"  // Set language to English, options: "zh" or "en"
      }
    }
  }
}

方法2:指定完整路径

如果需要使用特定的安装位置,可以指定完整路径:

{
  "mcpServers": {
    "mult-fetch-mcp-server": {
      "command": "path-to/bin/node",
      "args": ["path-to/@lmcc-dev/mult-fetch-mcp-server/dist/index.js"],
      "env": {
        "MCP_LANG": "en"  // Set language to English, options: "zh" or "en"
      }
    }
  }
}

请更换 path-to/bin/node 使用系统上Node.js可执行文件的路径,并替换 path-to/@lmcc-dev/mult-fetch-mcp-server 与这个项目的实际路径。

使用示例

下面是在Claude桌面客户端中使用此工具的示例:

Claude Desktop Client Example

该图显示了Claude如何使用fetch工具检索web内容并根据您的指示进行处理。

用法

配置后,重新启动Claude桌面,您可以在对话中使用以下工具:

  • fetch_html:获取网页的HTML内容
  • fetch_json:获取JSON数据
  • fetch_txt:获取纯文本内容
  • fetch_markdown:获取Markdown格式的内容
  • fetch_plaintext:获取从HTML转换的纯文本内容(去除HTML标签)

构建

pnpm run build

运行服务器

pnpm run server
# or
node dist/index.js
# if globally installed, you can run directly
@lmcc-dev/mult-fetch-mcp-server
# or use npx
npx @lmcc-dev/mult-fetch-mcp-server

客户端演示工具

备注:以下client.js功能仅用于演示和测试目的。当与Claude或其他AI助手一起使用时,MCP服务器由AI驱动,AI会自动管理分块过程。

命令行客户端

该项目包括一个用于测试和开发目的的命令行客户端:

pnpm run client  

# example
pnpm run client fetch_html '{"url": "https://example.com", "debug": true}'

演示客户端块控制参数

在使用命令行客户端进行测试时,您可以使用这些参数来演示内容分块功能:

  • --all-chunks:命令行标志,用于按顺序自动获取所有块(仅用于演示目的)
  • --max-chunks:命令行标志,用于限制要获取的最大块数(可选,默认值为10)

实时输出演示

client.js演示工具提供实时输出功能:

node dist/src/client.js fetch_html '{"url":"https://example.com", "startCursor": 0, "contentSizeLimit": 500}' --all-chunks --debug

演示客户端将自动按顺序获取所有块并立即显示,展示如何实时处理大型内容。

运行测试

# Run MCP functionality tests
npm run test:mcp

# Run mini4k.com website tests
npm run test:mini4k

# Run direct client call tests
npm run test:direct

语言设置

该项目支持中英文双语国际化。您可以使用环境变量设置语言:

使用环境变量

设置 MCP_LANG 用于控制语言的环境变量:

# Set to English
export MCP_LANG=en
npm run server

# Set to Chinese
export MCP_LANG=zh
npm run server

# Windows system
set MCP_LANG=zh
npm run server

使用环境变量可确保所有相关进程(包括MCP服务器)使用相同的语言设置。

默认语言

默认情况下,系统将根据以下优先级选择语言:

  1. MCP_LANG 环境变量
  2. 操作系统语言(如果以“zh”开头,请使用中文)
  3. 英语(作为最后的后备选项)

调试

此项目遵循MCP协议规范,默认情况下不输出任何日志,以避免干扰JSON-RPC通信。调试信息通过调用参数进行控制:

使用调试参数

设置 debug: true 调用工具时的参数:

{
  "url": "https://example.com",
  "debug": true
}

调试消息使用以下格式发送到标准错误流(stderr):

[MCP-SERVER] MCP server starting...
[CLIENT] Fetching URL: https://example.com

调试日志

启用调试模式时,所有调试消息也会写入位于以下位置的日志文件:

~/.mult-fetch-mcp-server/debug.log

此日志文件可通过MCP资源API访问:

// Access the debug log file
const result = await client.readResource({ uri: "file:///logs/debug" });
console.log(result.contents[0].text);

// Clear the debug log file
const clearResult = await client.readResource({ uri: "file:///logs/clear" });
console.log(clearResult.contents[0].text);

代理服务器设置

此工具支持配置代理设置的各种方法:

1.使用 proxy 参数

最直接的方法是在请求参数中指定代理:

{
  "url": "https://example.com",
  "proxy": "http://your-proxy-server:port",
  "debug": true
}

2.使用环境变量

该工具将自动检测并使用标准环境变量中的代理设置:

# Set proxy environment variables
export HTTP_PROXY=http://your-proxy-server:port
export HTTPS_PROXY=http://your-proxy-server:port

# Run the server
npm run server

3.系统代理检测

该工具尝试根据您的操作系统检测系统代理设置:

  • 视窗:使用从环境变量读取代理设置 set 命令
  • macOS/Linux:使用从环境变量读取代理设置 env 命令

4.代理故障排除

如果您在代理检测方面遇到问题:

  1. 使用 debug: true 参数,用于查看有关代理检测的详细日志
  2. 使用以下命令明确指定代理 proxy 参数
  3. 确保您的代理URL格式正确: http://host:porthttps://host:port
  4. 对于需要浏览器功能的网站,设置 useBrowser: true 使用浏览器模式

5.浏览器模式和代理

使用浏览器模式时(useBrowser: true),该工具将:

  1. 首先尝试使用明确指定的代理(如果提供)
  2. 然后尝试使用系统代理设置
  3. 最后,如果找不到代理,则在没有代理的情况下继续

浏览器模式对于实施反抓取措施或需要执行JavaScript的网站特别有用。

参数处理

此项目以以下方式处理参数:

  • 调试:通过调用参数传递,每个请求都可以单独控制是否启用调试输出
  • MCP_LANG:从环境变量中检索,控制整个服务器的语言设置

用法

创建客户端

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
import path from 'path';
import { fileURLToPath } from 'url';

// Get the directory path of the current file
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// Create client transport layer
const transport = new StdioClientTransport({
  command: 'node',
  args: [path.resolve(__dirname, 'dist/index.js')],
  stderr: 'inherit',
  env: {
    ...process.env  // Pass all environment variables, including MCP_LANG
  }
});

// Create client
const client = new Client({
  name: "example-client",
  version: "1.0.0"
});

// Connect to transport layer
await client.connect(transport);

// Use client
const result = await client.callTool({
  name: 'fetch_html',
  arguments: {
    url: 'https://example.com',
    debug: true  // Control debug output through parameters
  }
});

if (result.isError) {
  console.error('Fetch failed:', result.content[0].text);
} else {
  console.log('Fetch successful!');
  console.log('Content preview:', result.content[0].text.substring(0, 500));
}

支持的工具

  • fetch_html:获取网页的HTML内容
  • fetch_json:获取JSON数据
  • fetch_txt:获取纯文本内容
  • fetch_markdown:获取Markdown格式的内容
  • fetch_plaintext:获取从HTML转换的纯文本内容(去除HTML标签)

资源支持

服务器包括对资源/列表和资源/读取方法的支持,但目前在实现中没有定义资源。资源系统旨在提供对项目文件和文档的访问,但此功能尚未完全实现。

资源使用示例

// Example: List available resources
const resourcesResult = await client.listResources({});
console.log('Available resources:', resourcesResult);

// Note: Currently this will return empty lists for resources and resourceTemplates

支持的提示模板

服务器提供以下提示模板:

  • fetch-website:获取网站内容,支持不同格式和浏览器模式
  • extract-content:从网站中提取特定内容,支持CSS选择器和数据类型规范
  • debug-fetch:调试网站抓取问题,分析可能的原因并提供解决方案

提示模板使用

  1. 使用 prompts/list 获取可用提示模板的列表
  2. 使用 prompts/get 获取特定的提示模板内容
// Example: List available prompt templates
const promptsResult = await client.listPrompts({});
console.log('Available prompts:', promptsResult);

// Example: Get website content prompt
const fetchPrompt = await client.getPrompt({
  name: "fetch-website",
  arguments: {
    url: "https://example.com",
    format: "html",
    useBrowser: "false"
  }
});
console.log('Fetch website prompt:', fetchPrompt);

// Example: Debug website fetching issues
const debugPrompt = await client.getPrompt({
  name: "debug-fetch",
  arguments: {
    url: "https://example.com",
    error: "Connection timeout"
  }
});
console.log('Debug fetch prompt:', debugPrompt);

参数选项

每个工具支持以下参数:

基本参数

  • url:要获取的URL(必需)
  • headers:自定义请求标头(可选,默认{})
  • proxy:格式为的代理服务器URLhttp://host:port或https://host:port(可选)

网络控制参数

  • timeout:超时时间(毫秒)(可选,默认值为30000)
  • maxRedirects:要遵循的最大重定向数(可选,默认值为10)
  • noDelay:是否禁用请求之间的随机延迟(可选,默认为false)
  • useSystemProxy:是否使用系统代理(可选,默认为true)

内容大小控制参数

  • enableContentSplitting:是否将大内容拆分为块(可选,默认为true)
  • contentSizeLimit:拆分前的最大内容大小(以字节为单位)(可选,默认值为50000)
  • startCursor:从特定位置检索内容的起始光标位置(以字节为单位)(可选,默认值为0)

这些参数有助于管理超过AI模型上下文大小限制的大型内容,使您能够以可管理的块检索web内容,同时保持处理完整信息的能力。

区块管理

  • chunkId:内容拆分时块集的唯一标识符(用于请求后续块)

当内容被分割成块时,响应包括元数据,允许AI使用 chunkIdstartCursor 参数。该系统使用字节级块管理来提供对内容检索的精确控制,从而能够无缝处理来自任何位置的内容。

模式控制参数

  • useBrowser:是否使用浏览器模式(可选,默认为false)
  • useNodeFetch:是否强制使用Node.js模式(可选,默认为false,与互斥 useBrowser)
  • autoDetectMode:如果标准模式失败,出现403/禁止错误,是否自动检测并切换到浏览器模式(可选,默认为真)。设置为false,严格使用指定模式,不自动切换。

浏览器模式特定参数

  • waitForSelector:浏览器模式下等待的选择器(可选,默认为“body”)
  • waitForTimeout:浏览器模式下的等待超时(毫秒)(可选,默认值为5000)
  • scrollToBottom:是否在浏览器模式下滚动到页面底部(可选,默认为false)
  • saveCookies:是否在浏览器模式下保存Cookie(可选,默认为true)
  • closeBrowser:是否关闭浏览器实例(可选,默认为false)

内容提取参数

  • extractContent:是否使用可读性算法提取主要内容(可选,默认为false)
  • includeMetadata:是否在提取的内容中包含元数据(可选,默认为false,仅在以下情况下有效 extractContent 是真的)
  • fallbackToOriginal:提取失败时是否回退到原始内容(可选,默认为true,仅在以下情况下有效 extractContent 是真的)

调试参数

  • debug:是否启用调试输出(可选,默认为false)

内容提取功能

使用内容提取功能获取网页的核心内容,过滤掉导航栏、广告、侧边栏和其他分散注意力的元素:

{
  "url": "https://example.com/article",
  "extractContent": true,
  "includeMetadata": true
}

提取的内容将包括以下元数据(如果可用):

  • 标题
  • Byline(作者)
  • 站点名称
  • 摘录
  • 内容长度
  • 可读性标志(isReadable)

特殊用法

内容提取示例

要从文章网页中仅提取有意义的内容,请执行以下操作:

{
  "url": "https://example.com/news/article",
  "extractContent": true,
  "includeMetadata": true
}

对于内容提取可能失败的网站,您可以使用 fallbackToOriginal 为了确保您获得一些内容:

{
  "url": "https://example.com/complex-layout",
  "extractContent": true,
  "fallbackToOriginal": true
}

关闭浏览器而不获取

要关闭浏览器实例而不执行任何获取操作,请执行以下操作:

{
  "url": "about:blank",
  "closeBrowser": true
}

代理优先级

代理按以下顺序确定:

  1. 命令行指定的代理
  2. proxy 请求中的参数
  3. 环境变量(如果 useSystemProxy 是真的)
  4. Git配置(如果 useSystemProxy 是真的)

如果 proxy 设置, useSystemProxy 将自动设置为false。

调试输出

debug: true 设置后,日志将以以下前缀输出到stderr:

  • [MCP-SERVER]:来自MCP服务器的日志
  • [NODE-FETCH]:来自Node.js提取器的日志
  • [BROWSER-FETCH]:来自浏览器提取器的日志
  • [CLIENT]:来自客户端的日志
  • [TOOLS]:工具实施日志
  • [FETCHER]:来自主提取器界面的日志
  • [CONTENT]:与内容处理相关的日志
  • [CONTENT-PROCESSOR]:来自HTML内容处理器的日志
  • [CONTENT-SIZE]:与内容大小管理相关的日志
  • [CHUNK-MANAGER]:与内容分块操作相关的日志
  • [ERROR-HANDLER]:与错误处理相关的日志
  • [BROWSER-MANAGER]:来自浏览器实例管理器的日志
  • [CONTENT-EXTRACTOR]:来自内容提取器的日志

许可证

麻省理工学院

______________________________________________________________________

由lmcc-dev更新

目录标签

目录标签

浏览器自动化内容提取TypeScriptClaudedeveloper-toolsfetchbrowseraiproxymcpcursor网页抓取本地部署AI工具集成MCP协议

支持客户端

ClaudeCursorClaude Desktop

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@smithery/cli

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP