网络搜索MCP服务器

一个提供八种网络工具(包括搜索、内容提取、截图、PDF生成、JS执行、爬取、快照和归档)的MCP服务器,适用于需要隐私保护和自托管搜索解决方案的开发者和团队。

  • by chngrkvc
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 chngrkvc/web-search-mcp

使用说明

网络搜索MCP

一 主控程序 提供八种工具的服务器:a 网络搜索 由...驱动 SearXNG,五 Crawl4AI-电动工具(web_fetch, web_screenshot, web_pdf, webexecute.js, web_crawl),和2 时间机器 工具(网络快照, web_archive).

建筑

graph LR
    Client["MCP Client<br/>(Claude, Cursor, etc.)"] -->|web_search| Server["MCP Server"]
    Client -->|web_fetch| Server
    Client -->|web_screenshot| Server
    Client -->|web_pdf| Server
    Client -->|web_execute_js| Server
    Client -->|web_crawl| Server
    Client -->|web_snapshots| Server
    Client -->|web_archive| Server
    Server --> SearXNG
    SearXNG --> Redis
    Server --> Crawl4AI
    Server --> Wayback["Wayback Machine"]

这 web_search 该工具向SearXNG查询搜索结果。Crawl4AI工具处理内容提取、屏幕截图、PDF、JS执行和多URL抓取。Wayback机床列表和检索存档页面。

全栈部署为 4服务:Redis、SearXNG、Crawl4AI和这个MCP服务器。

工具

服务器公开了八个MCP工具:

web_search

通过SearXNG进行轻量级网络搜索。返回结构化结果。

参数 类型 说明
query string(必填) 搜索查询
limit number(可选) 要返回的最大结果数(默认值:10,最大值:20)

返回一个JSON数组 { url, title, description } 结果。

web_fetch

获取一个URL,并通过Crawl4AI将其内容作为干净的标记返回。

参数 类型 说明
url string(必需) 要获取的URL
f enum(可选) 内容筛选策略: raw, fit, bm25,或 llm (默认值: fit)
q string(可选) BM25/LLM筛选器的查询字符串

以markdown形式返回页面内容。

web_screenshot

通过Crawl4AI捕获URL的全页PNG屏幕截图。

参数 类型 说明
url string(必填) 截图URL
screenshot_wait_for number(可选) 捕获前等待的秒数(默认值:2)

返回base64编码的PNG图像。

web_pdf

通过Crawl4AI生成URL的PDF文档。

参数 类型 说明
url string(必填) 转换为PDF的URL

返回base64编码的PDF。

web_execute_js

通过Crawl4AI在URL上执行JavaScript代码段,并返回完整的爬网结果。

参数 类型 说明
url string(必需) 执行脚本的URL
scripts string[](必填) 按顺序执行的JavaScript代码段列表

返回完整的CrawlResult JSON,包括markdown、链接、媒体和JS执行结果。

web_crawl

使用Crawl4AI抓取一个或多个URL并提取其内容。

参数 类型 说明
urls string[](必填) 要爬网的URL列表
browser_config 对象(可选) Crawl4AI浏览器配置
crawler_config object(可选) Crawl4AI爬虫配置

返回从每个URL提取的内容。

web_snapshots

列出URL的Wayback Machine快照。

参数 类型 说明
url string(必需) 用于检查快照的URL
from string(可选) YYYYMMDD格式的开始日期
to string(可选) YYYYMMDD格式的结束日期
limit number(可选) 要返回的最大快照数(默认值:100)
match_type enum(可选) URL匹配: exact, prefix, host,或 domain (默认值: exact)
filter string[](可选) CDX API筛选器(例如。 ["statuscode:200", "mimetype:text/html"])

返回一个包含时间戳、状态代码和存档URL的JSON快照数组。

web_archive

从Wayback Machine中检索存档页面。

参数 类型 说明
url string(必填) 要检索的页面的URL
timestamp string(必填) YYYYMMDDHHMMSS格式的时间戳
original boolean(可选) 获取没有Wayback Machine横幅的原始内容(默认值:false)

返回存档的页面内容。

连接到服务器

以下所有示例均假设您的服务器正在运行 https://your-server.up.railway.app/mcp 使用API密钥。将URL和键替换为您自己的值。

克劳德代码(CLI)

claude mcp add web_search \
  --transport http \
  https://your-server.up.railway.app/mcp \
  --header "Authorization: Bearer your-api-key"

项目级配置(.mcp.json)

增添 .mcp.json 在任何项目的基础上,让所有合作者都能使用该工具:

{
  "mcpServers": {
    "web_search": {
      "type": "http",
      "url": "https://your-server.up.railway.app/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

克劳德桌面(claude_desktop_config.json)

{
  "mcpServers": {
    "web_search": {
      "type": "http",
      "url": "https://your-server.up.railway.app/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

替换Claude Code的内置Web搜索和Web提取(可选)

默认情况下,Claude Code使用自己的 WebSearch 和 WebFetch 工具。您可以用此服务器的 web_search 和 web_fetch 用于尊重隐私、自我托管结果的工具。

1.全局添加MCP服务器:

claude mcp add web_search --scope user \
  --transport http \
  https://your-server.up.railway.app/mcp \
  --header "Authorization: Bearer your-api-key"

2.禁用内置工具 通过编辑 ~/.claude/settings.json:

{
  "permissions": {
    "deny": ["WebSearch", "WebFetch"]
  }
}

3.引导克劳德通过 ~/.claude/CLAUDE.md 所以它使用你的工具:

## Search & Fetch

- Use the web_search MCP tool for all web searches
- Use the web_fetch MCP tool to fetch and read web pages
- Do not attempt to use the built-in WebSearch or WebFetch tools

4.验证 通过跑步 /mcp 在Claude Code中检查服务器是否已连接,然后让Claude搜索某些内容或获取URL。

部署

铁路

该项目在铁路上部署了4项服务:

  1. 瑞迪斯 -SearXNG缓存
  2. SearXNG -元搜索引擎
  3. Crawl4AI -浏览器自动化服务
  4. MCP服务器 -此网络搜索mcp服务器

部署步骤:

  1. 分叉/克隆 将此存储库添加到您的GitHub帐户

  2. 创建新项目 上 铁路

  3. 部署Redis:

    • 点击“添加服务”→ “数据库”→ “Redis”
  4. 部署SearXNG:

    • 点击“添加服务”→ “图像”
    • 图片: searxng/searxng:latest
    • 添加端口: 8080
    • 集 SEARXNG_SECRET_KEY 和 SEARXNG_REDIS_URL 环境变量
  5. 部署Crawl4AI:

    • 点击“添加服务”→ “图像”
    • 图片: unclecode/crawl4ai:latest
    • 添加端口: 11235
    • (可选)设置 CRAWL4AI_API_TOKEN 环境变量
  6. 部署MCP服务器:

    • 点击“添加服务”→ “GitHub回购”
    • 选择您的分叉存储库
    • Railway将自动检测Dockerfile
    • 设置环境变量:
      • API_KEY -您的API密钥(使用 ${{random(32)}} 生成)
      • CRAWL4AI_URL - http://crawl4ai.railway.internal:11235 (或您的Crawl4AI服务URL)
  7. 获取您的URL 并测试:

    curl -X POST https://your-service.up.railway.app/mcp \
      -H "Authorization: Bearer your-api-key" \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
    

其他平台

服务器可以部署到任何支持Docker或Node.js的平台:

  • Fly.io -使用Dockerfile
  • 渲染 -使用Dockerfile
  • 数字海洋应用平台 -使用Dockerfile
  • 自托管 -使用docker编写

快速入门(本地)

1.克隆并安装

git clone https://github.com/your-username/web-search-mcp
cd web-search-mcp
pnpm install

2.配置环境

cp .env.example .env.local
# Edit .env.local and set your API_KEY

3.启动Crawl4AI

docker compose up -d crawl4ai

4.运行MCP服务器

CRAWL4AI_URL=http://localhost:11235 pnpm run start

服务器位于 http://localhost:3000/mcp.

5.或者在Docker中运行所有内容

docker compose up

认证

这 API_KEY 环境变量为 必需的.

在铁路上,手动设置钥匙或使用 ${{random(32)}} 自动生成。对于本地开发,请将其设置在您的 .env.local 文件。

客户提供密钥作为 Bearer 令牌在 Authorization 标题(如上述示例所示)或作为 ?api_key= 查询参数。这 /health 端点未经身份验证。

许可证

麻省理工学院