Token导航 LogoToken导航TokenDH.com
Fetch MCP Docker logo
开发工具stdio官方级别未说明来源级核验

Fetch MCP Docker

MCP Server

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

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
开发工具浏览器自动化ShellClaudeClaude DesktopClaudeCursorWindsurfClineVS Code

安装说明

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

作者 / 组织

MekayelAnik

提供方

MekayelAnik

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

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

命令预览

docker run -d \

详细介绍

获取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获取服务器。用户有责任遵守所取网站的服务条款和适用法律。

______________________________________________________________________

目录标签

目录标签

开发工具浏览器自动化ShellClaude本地部署网页抓取内容转换Docker服务AI工具集成开发者工具

支持客户端

Claude DesktopClaudeCursorWindsurfClineVS Code

接入字段

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

stdio

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

token

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiotoken部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP