Token导航 LogoToken导航

MCP Server · 开发工具

Fetch MCP Docker

Fetch MCP Server是一款支持多种格式的网页内容抓取服务,可集成到VS Code、Cursor等开发工具中,提供HTML、JSON、纯文本和Markdown格式的内容转换。

stdio官方级别未说明来源级核验工具 4
开发工具浏览器自动化ShellClaudeClaude DesktopCursorWindsurfClineVS Code

快速开始

作者 / 组织
MekayelAnik
提供方
MekayelAnik
运行时
Docker

工具数量

4

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Fetch MCP Docker 属于开发工具类 MCP Server,公开资料标注 4 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude、Cursor,有可以直接复制的安装命令;接入前要先准备 访问 Token。

分类

开发工具

传输方式

stdio

认证方式

访问 Token

部署方式

公开资料未说明

安装与配置

安装命令

docker run -d \

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Docker,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 4 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

详细介绍

获取MCP服务器

分布式部署的多架构Docker镜像

______________________________________________________________________

📋 目录

______________________________________________________________________

概述

Fetch MCP Server为AI助手提供了强大的web内容检索功能。获取任何网页并接收您首选格式的内容——HTML、JSON、纯文本或Markdown。与VS Code、Cursor、Windsurf、Claude Desktop和任何兼容MCP的客户端无缝集成。

主要特点

✨ 支持多种格式 -HTML、JSON、纯文本和Markdown转换\ 🔒 安全且可配置 -自定义标头、SSL验证、重定向控制\ ⚡ 高性能 -可配置的超时、大小限制和重定向处理\ 🌐 CORS就绪 -基于浏览器的客户端内置CORS支持\ 🚀 多个协议 -HTTP、SSE和WebSocket传输支持\ 🎯 零配置 -使用合理的默认值即可开箱即用\ 🔧 高度可定制 -通过环境变量微调各个方面\ 📊 健康监测 -内置健康检查端点

支持的架构

架构状态注释
x86-64✅ 稳定英特尔/AMD处理器
ARM64✅ 稳定树莓派,苹果硅

可用标签

标签稳定性用例
stable⭐⭐⭐生产(推荐)
latest⭐⭐⭐最新稳定功能
1.x.x⭐⭐⭐版本固定
beta⚠️仅测试

______________________________________________________________________

快速开始

先决条件

  • Docker引擎23.0+
  • 获取网络内容的网络访问

Docker Compose(推荐)

services:
  fetch-mcp:
    image: mekayelanik/fetch-mcp:stable
    container_name: fetch-mcp
    restart: unless-stopped
    ports:
      - "8060:8060"
    environment:
      - PORT=8060
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Dhaka
      - PROTOCOL=SHTTP
      - CORS=*
      - DEFAULT_LIMIT=0
      - FETCH_TIMEOUT=30000
      - MAX_REDIRECTS=5
      - FOLLOW_REDIRECTS=true
      - VERIFY_SSL=true

部署:

docker compose up -d
docker compose logs -f fetch-mcp

Docker命令行界面

docker run -d \
  --name=fetch-mcp \
  --restart=unless-stopped \
  -p 8060:8060 \
  -e PORT=8060 \
  -e PUID=1000 \
  -e PGID=1000 \
  -e PROTOCOL=SHTTP \
  -e CORS=* \
  mekayelanik/fetch-mcp:stable

访问端点

协议端点用例
超文本传输协议http://host-ip:8060/mcp推荐
上海证券交易所http://host-ip:8060/sse实时流媒体
WebSocketws://host-ip:8060/message双向
健康http://host-ip:8060/healthz监测
⏱️ 容器启动后5-10秒内服务器就绪

______________________________________________________________________

配置

环境变量

核心设置
变量默认值描述
PORT8060服务器端口(1-65535)
PUID1000文件权限的用户ID
PGID1000文件权限的组ID
TZAsia/Dhaka集装箱时区
PROTOCOLSHTTP传输协议
CORS_(无)_跨源配置
获取设置
变量默认值描述
DEFAULT_LIMIT0最大响应大小(字节,0=无限制)
FETCH_TIMEOUT30000请求超时(毫秒,1000-300000)
MAX_REDIRECTS5最大重定向关注次数(0-20)
FOLLOW_REDIRECTStrue启用自动重定向跟踪
VERIFY_SSLtrue启用SSL证书验证
USER_AGENT_(默认)_自定义用户代理标头
高级设置
变量默认值描述
RATE_LIMIT0每台设备的最大请求数 RATE_LIMIT_PERIOD 按IP(0 =禁用)
RATE_LIMIT_PERIOD10s用于速率限制的滑动窗口(例如。, 10s, 1m, 1h)
MAX_CONNECTIONS_PER_IP0每个IP的最大并发连接数(0 =禁用)
IP_ALLOWLIST*(空)*允许逗号分隔的IPs/CIDR(阻止所有其他IP/CIDR)
IP_BLOCKLIST*(空)*要阻止的逗号分隔IP/CIDR
DEBUG_MODEfalse启用调试模式(true, false, verbose)

协议配置

# HTTP/Streamable HTTP (Recommended)
environment:
  - PROTOCOL=SHTTP

# Server-Sent Events
environment:
  - PROTOCOL=SSE

# WebSocket
environment:
  - PROTOCOL=WS

CORS配置

# Development - Allow all origins
environment:
  - CORS=*

# Production - Specific domains
environment:
  - CORS=https://example.com,https://app.example.com

# Mixed domains and IPs
environment:
  - CORS=https://example.com,192.168.1.100:3000,/.*\.myapp\.com$/

# Regex patterns
environment:
  - CORS=/^https:\/\/.*\.example\.com$/
⚠️ 安全: 从不使用 CORS=* 在生产环境中

尺寸限制示例

# Unlimited (default)
environment:
  - DEFAULT_LIMIT=0

# 1 MB limit
environment:
  - DEFAULT_LIMIT=1048576

# 5 MB limit
environment:
  - DEFAULT_LIMIT=5242880

# 10 MB limit
environment:
  - DEFAULT_LIMIT=10485760

超时示例

# Quick responses (10 seconds)
environment:
  - FETCH_TIMEOUT=10000

# Default (30 seconds)
environment:
  - FETCH_TIMEOUT=30000

# Long-running requests (2 minutes)
environment:
  - FETCH_TIMEOUT=120000

自定义用户代理

environment:
  - USER_AGENT=MyBot/1.0 (+https://example.com/bot)

______________________________________________________________________

MCP客户端设置

运输兼容性

客户端HTTPSSEWebSocket推荐
VS代码(Cline/Roo-Cline)✅✅❌HTTP
克劳德桌面版✅✅⚠️\*HTTP
光标✅✅⚠️\*HTTP
帆板运动✅✅⚠️\*HTTP
⚠️ \*WebSocket支持是实验性的

VS代码(Cline/Roo-Cline)

添加 .vscode/settings.json:

{
  "mcp.servers": {
    "fetch": {
      "url": "http://host-ip:8060/mcp",
      "transport": "http",
      "autoApprove": [
        "fetch_html",
        "fetch_json",
        "fetch_txt",
        "fetch_markdown"
      ]
    }
  }
}

克劳德桌面版

配置位置:

  • Linux: ~/.config/Claude/claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "fetch": {
      "transport": "http",
      "url": "http://localhost:8060/mcp"
    }
  }
}

光标

添加 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "fetch": {
      "transport": "http",
      "url": "http://host-ip:8060/mcp"
    }
  }
}

风帆冲浪(Codeium)

添加 .codeium/mcp_settings.json:

{
  "mcpServers": {
    "fetch": {
      "transport": "http",
      "url": "http://host-ip:8060/mcp"
    }
  }
}

克劳德代码

添加 ~/.config/claude-code/mcp_config.json:

{
  "mcpServers": {
    "fetch": {
      "transport": "http",
      "url": "http://localhost:8060/mcp"
    }
  }
}

或者通过CLI进行配置:

claude-code config mcp add fetch \
  --transport http \
  --url http://localhost:8060/mcp

GitHub Copilot命令行界面

添加 ~/.github-copilot/mcp.json:

{
  "mcpServers": {
    "fetch": {
      "transport": "http",
      "url": "http://host-ip:8060/mcp"
    }
  }
}

或者使用环境变量:

export GITHUB_COPILOT_MCP_SERVERS='{"fetch":{"transport":"http","url":"http://localhost:8060/mcp"}}'

______________________________________________________________________

可用工具

🌐 fetch_html

获取一个网站并返回原始HTML内容。

参数:

  • url (string,必填):要获取的网站的URL
  • headers (object,可选):请求的自定义标头

使用案例:

  • 抓取结构化web数据
  • 分析页面结构
  • 测试web应用程序
  • 提取特定的HTML元素

示例提示:

  • “从以下位置获取HTMLhttps://example.com"
  • “获取HTMLhttps://news.ycombinator.com带有自定义标题”
  • “从此页面下载原始HTML”

______________________________________________________________________

📦 fetch_json

从URL获取并解析JSON数据。

参数:

  • url (string,必填):JSON资源的URL
  • headers (object,可选):请求的自定义标头

使用案例:

  • 使用REST API
  • 读取配置文件
  • 处理结构化数据
  • API测试和调试

示例提示:

  • “从以下位置获取JSONhttps://api.example.com/data"
  • “从此API终结点获取JSON数据”
  • “从下载并解析JSONhttps://example.com/config.json"

______________________________________________________________________

📄 fetch_txt

获取一个网站并返回干净的纯文本(HTML标签已删除)。

参数:

  • url (string,必填):要获取的网站的URL
  • headers (object,可选):请求的自定义标头

使用案例:

  • 阅读文章和博客文章
  • 文本分析和处理
  • 无标记的内容提取
  • 以可访问性为重点的内容检索

示例提示:

  • “从获取文本内容https://blog.example.com/post"
  • “从本文中获取纯文本”
  • “从中提取文本https://example.com没有HTML”

______________________________________________________________________

📝 fetch_markdown

获取一个网站并将HTML转换为Markdown格式。

参数:

  • url (string,必填):要获取的网站的URL
  • headers (object,可选):请求的自定义标头

使用案例:

  • 将网页内容转换为Markdown
  • 从网页创建文档
  • 以可读格式存档web内容
  • 内容迁移到基于Markdown的系统

示例提示:

  • “转换https://example.com到Markdown”
  • “以Markdown格式获取此网页”
  • “获取此文章并将其转换为Markdown”

______________________________________________________________________

高级用法

自定义标题示例

{
  "url": "https://api.example.com/data",
  "headers": {
    "Authorization": "Bearer YOUR_TOKEN",
    "Accept": "application/json",
    "User-Agent": "MyApp/1.0"
  }
}

生产配置

services:
  fetch-mcp:
    image: mekayelanik/fetch-mcp:stable
    container_name: fetch-mcp
    restart: unless-stopped
    ports:
      - "8060:8060"
    environment:
      # Core settings
      - PORT=8060
      - PUID=1000
      - PGID=1000
      - TZ=UTC
      - PROTOCOL=SHTTP
      
      # Security
      - CORS=https://app.example.com,https://admin.example.com
      - VERIFY_SSL=true
      
      # Performance
      - DEFAULT_LIMIT=5242880  # 5 MB limit
      - FETCH_TIMEOUT=30000    # 30 seconds
      - MAX_REDIRECTS=5
      - FOLLOW_REDIRECTS=true
      
      # Custom identification
      - USER_AGENT=MyCompany-Bot/1.0 (+https://example.com/bot)
    
    # Resource limits
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 512M
        reservations:
          cpus: '0.5'
          memory: 256M
    
    # Health check
    healthcheck:
      test: ["CMD", "nc", "-z", "localhost", "8060"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

反向代理设置

Nginx
server {
    listen 80;
    server_name fetch.example.com;
    
    location / {
        proxy_pass http://localhost:8060;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # Timeouts for long-running requests
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
    }
}
交通
services:
  fetch-mcp:
    image: mekayelanik/fetch-mcp:stable
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.fetch-mcp.rule=Host(`fetch.example.com`)"
      - "traefik.http.routers.fetch-mcp.entrypoints=websecure"
      - "traefik.http.routers.fetch-mcp.tls.certresolver=myresolver"
      - "traefik.http.services.fetch-mcp.loadbalancer.server.port=8060"

Docker网络设置

services:
  fetch-mcp:
    image: mekayelanik/fetch-mcp:stable
    container_name: fetch-mcp
    networks:
      - mcp-network
    environment:
      - PORT=8060
      - PROTOCOL=SHTTP
    
  other-service:
    image: other-service:latest
    networks:
      - mcp-network
    environment:
      - FETCH_MCP_URL=http://fetch-mcp:8060/mcp

networks:
  mcp-network:
    driver: bridge

多个实例

services:
  fetch-mcp-primary:
    image: mekayelanik/fetch-mcp:stable
    container_name: fetch-mcp-primary
    ports:
      - "8060:8060"
    environment:
      - PORT=8060
      - FETCH_TIMEOUT=30000
  
  fetch-mcp-fast:
    image: mekayelanik/fetch-mcp:stable
    container_name: fetch-mcp-fast
    ports:
      - "8061:8060"
    environment:
      - PORT=8060
      - FETCH_TIMEOUT=10000
      - DEFAULT_LIMIT=1048576  # 1 MB for quick fetches
  
  fetch-mcp-large:
    image: mekayelanik/fetch-mcp:stable
    container_name: fetch-mcp-large
    ports:
      - "8062:8060"
    environment:
      - PORT=8060
      - FETCH_TIMEOUT=120000
      - DEFAULT_LIMIT=52428800  # 50 MB for large content

______________________________________________________________________

故障排除

飞行前检查表

  • ✅ Docker 23.0+
  • ✅ 端口8060可用
  • ✅ 网络连接
  • ✅ 最新稳定图像
  • ✅ 正确的环境变量

常见问题

容器无法启动

# Check logs
docker logs fetch-mcp

# Pull latest image
docker pull mekayelanik/fetch-mcp:stable

# Restart container
docker restart fetch-mcp

连接被拒绝

# Verify container is running
docker ps | grep fetch-mcp

# Check port binding
docker port fetch-mcp

# Test health endpoint
curl http://localhost:8060/healthz

超时错误

# Increase timeout for slow websites
environment:
  - FETCH_TIMEOUT=60000  # 60 seconds

# Adjust redirect limit
environment:
  - MAX_REDIRECTS=10

SSL证书错误

# Disable SSL verification (not recommended for production)
environment:
  - VERIFY_SSL=false

# Or update CA certificates in container
docker exec fetch-mcp apk add --update ca-certificates

CORS错误

# Development - allow all
environment:
  - CORS=*

# Production - specific origins
environment:
  - CORS=https://yourdomain.com,https://app.yourdomain.com

权限错误

# Check your user ID
id $USER

# Update PUID/PGID
environment:
  - PUID=1001  # Your actual UID
  - PGID=1001  # Your actual GID

超出大小限制

# Increase or remove size limit
environment:
  - DEFAULT_LIMIT=0  # Unlimited
  # or
  - DEFAULT_LIMIT=10485760  # 10 MB

调试模式

# Enable verbose debugging
environment:
  - DEBUG_MODE=verbose

# Then check logs
docker logs -f fetch-mcp

健康检查测试

# Basic health check
curl http://localhost:8060/healthz

# Test MCP endpoint
curl http://localhost:8060/mcp

# Test with tool invocation
curl -X POST http://localhost:8060/mcp \
  -H "Content-Type: application/json" \
  -d '{"method":"tools/list"}'

______________________________________________________________________

资源与支持

文档

  • 📦
  • 🔧
  • 🐳

MCP资源

获取帮助

Docker镜像问题:

一般问题:

  • 检查日志: docker logs fetch-mcp
  • 测试健康状况: curl http://localhost:8060/healthz
  • 查看此README中的配置

更新

# Docker Compose
docker compose pull
docker compose up -d

# Docker CLI
docker pull mekayelanik/fetch-mcp:stable
docker stop fetch-mcp
docker rm fetch-mcp
# Re-run your docker run command

版本固定

# Use specific version
services:
  fetch-mcp:
    image: mekayelanik/fetch-mcp:1.0.0

# Or use stable tag (recommended)
services:
  fetch-mcp:
    image: mekayelanik/fetch-mcp:stable

______________________________________________________________________

性能提示

优化速度

environment:
  - FETCH_TIMEOUT=10000      # Faster timeout
  - DEFAULT_LIMIT=1048576    # 1 MB limit
  - MAX_REDIRECTS=3          # Fewer redirects
  - FOLLOW_REDIRECTS=true

针对大型内容进行优化

environment:
  - FETCH_TIMEOUT=120000     # 2 minutes
  - DEFAULT_LIMIT=0          # No limit
  - MAX_REDIRECTS=10

资源限制

deploy:
  resources:
    limits:
      cpus: '2.0'
      memory: 1G
    reservations:
      cpus: '1.0'
      memory: 512M

速率限制和IP访问控制

  • 速率限制: 集 RATE_LIMIT=100 允许每100个请求 RATE_LIMIT_PERIOD (默认值 10s)每个IP。超过限制将返回HTTP 429 Retry-After 头球
  • 连接限制: 集 MAX_CONNECTIONS_PER_IP=50 限制每个IP的并发连接。超过此值将返回HTTP 429。
  • IP阻止列表: 集 IP_BLOCKLIST=192.0.2.0/24,198.51.100.5 以阻止特定IP/CIDR。被阻止的IP接收HTTP 403。
  • IP地址列表: 集 IP_ALLOWLIST=10.0.0.0/8,192.168.1.0/24 只允许列出的IP/CIDR。所有其他人都接收HTTP 403。始终允许本地主机。
  • 所有功能默认为禁用。根据需要进行组合——在分配列表之前检查块列表。

______________________________________________________________________

安全最佳实践

  1. **从不使用 CORS=* 生产中**
  2. 总是使用 VERIFY_SSL=true 除了开发
  3. 设置适当的尺寸限制 防止滥用
  4. 使用反向代理 具有速率限制
  5. 以非root身份运行 (默认puid/PGID)
  6. 监控日志 可疑活动
  7. 保持Docker镜像更新
  8. 使用特定的版本标签 用于生产

______________________________________________________________________

许可证

Docker镜像:GPL许可证-请参阅 许可证 了解详情。

免责声明: 非官方Docker镜像 mcp获取服务器。用户有责任遵守所取网站的服务条款和适用法律。

______________________________________________________________________

工具与能力

工具数量

4

资源数量

0

提示词数量

0

能力标签

Shell本地部署网页抓取内容转换Docker服务AI工具集成开发者工具

支持客户端

Claude DesktopClaudeCursorWindsurfClineVS Code

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 4 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude、Cursor,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Docker,换机器要重新装一遍。
  • 需要自备访问 Token,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到访问 Token的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Fetch MCP Docker

MCP World · 本页

4stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Fetch MCP Docker 怎么安装?

公开资料给出的安装命令是 docker run -d \,运行环境为 Docker。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Fetch MCP Docker 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Docker;保存后完全退出客户端再打开,配置才会生效。

Fetch MCP Docker 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Fetch MCP Docker 需要 API Key 吗?

公开资料标注的认证方式是访问 Token,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Fetch MCP Docker 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude、Cursor、Windsurf、Cline、VS Code;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP