隐私网络搜索服务

一个基于Go语言实现的高性能隐私保护网络搜索服务,通过SearXNG提供70多种搜索引擎的元搜索能力,并支持网页内容提取为Markdown格式。

  • by Tomlord1122
  • Go
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 Tomlord1122/mcp-searxng-claude-go

使用说明

MCP SearXNG Go

高性能的 模型上下文协议(MCP) 用Go语言实现的服务器,为AI助手提供注重隐私的网页搜索功能,通过 SearXNG。

构建于 官方 MCP Go SDK 与谷歌合作维护。

特点/特性

  • 🔍 看起来像一个放大镜的符号,常用于表示搜索或查看细节。 网页搜索由支持70多个搜索引擎的SearXNG元搜索引擎提供动力
  • 🌐(这个符号本身在中文中没有直接对应的翻译,它通常代表“网络”或“互联网”的概念,可以简单理解为“网络”或“互联网”的标志。) URL内容提取获取网页并将其转换为Markdown格式
  • 🔒(锁形符号,常用于表示安全、保密或锁定状态) 注重隐私所有搜索都通过您自己的SearXNG实例进行
  • ⚡(闪电符号,常用于表示速度、活力、能量或电等概念,在中文中无直接对应词汇,通常保留原样或根据上下文意译) 高性能用Go语言构建,带有内存缓存(TTL为60秒)
  • 🐳 这个表情符号通常代表“海豚”,在中文里可以简单翻译为“海豚”。不过,具体含义可能根据上下文有所不同,有时也可能被用作一种网络用语或特定社群内的梗。 Docker 已就绪使用docker-compose一键部署
  • 🛡️ 译为中文是“盾牌”。 安全的非root容器执行,大小限制,请求超时

快速入门

先决条件

使用 Docker(推荐)

  1. 克隆仓库:

    git clone https://github.com/Tomlord1122/mcp-searxng-claude-go.git
    cd mcp-searxng-claude-go
    
  2. 创建环境文件:

    cp .env.example .env
    echo "SEARXNG_SECRET=$(openssl rand -hex 16)" >> .env
    
  3. 启动服务:

    # Build and start both SearXNG and MCP server
    docker compose up -d
    
    # Or use convenience script
    ./start-mcp.sh
    
  4. 验证它是否正在运行:

    docker compose logs -f mcp-searxng-go
    
  5. 设置您的环境以在Claude Code中使用 创建一个名为该名称的文件 ~/.mcp.json

    {
      "mcpServers": {
        "searxng": {
          "command": "docker",
          "args": ["exec", "-i", "mcp-searxng-go", "/app/mcp-searxng-go"],
          "env": {
            "SEARXNG_URL": "http://searxng:8080"
          }
        }
      }
    }
    

    加上这个到 ~/.claude/settings.json

    {
     "permissions": {
     "allow": [
       "mcp__searxng__searxng_web_search",
       "mcp__searxng__web_url_read"
     ]
     },
     "enabledMcpjsonServers": [
       "searxng"
     ]
     }
    
    

本地开发

  1. 安装依赖项:

    make deps
    
  2. 构建二进制文件:

    make build
    
  3. 本地运行:

    # Requires a running SearXNG instance
    SEARXNG_URL=http://localhost:8080 ./mcp-searxng-go
    

MCP 工具

1. searxng_web_search

使用SearXNG进行网页搜索。

参数:

  • query (必填):搜索查询字符串
  • pageno (可选):页码(默认:1)
  • time_range (可选):按时间过滤 - “天”、“月”或“年”
  • language (可选):语言代码(例如,“en”、“fr”、“de”,默认:“all”)
  • safesearch (可选):安全搜索级别 - “0”,“1”,或“2”(默认:“0”)

示例:

{
  "query": "Go programming best practices",
  "pageno": 1,
  "language": "en"
}

2. web_url_read

读取网页内容并将其转换为Markdown格式。

参数:

  • url (必需):要获取的URL
  • startChar (可选):起始字符位置
  • maxLength (可选):返回的最大字符数
  • section (可选):提取特定标题部分
  • paragraphRange (可选):段落范围(例如,“1-5”,“10-”)
  • readHeadings (可选):仅返回标题(布尔值)

示例:

{
  "url": "https://example.com/article",
  "maxLength": 5000
}

与Claude桌面版的集成

添加到您的Claude桌面配置中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上):

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": ["exec", "-i", "mcp-searxng-go", "/app/mcp-searxng-go"],
      "env": {
        "SEARXNG_URL": "http://searxng:8080"
      }
    }
  }
}

或者如果本地安装:

{
  "mcpServers": {
    "searxng": {
      "command": "/usr/local/bin/mcp-searxng-go",
      "env": {
        "SEARXNG_URL": "http://localhost:8080"
      }
    }
  }
}

配置

环境变量

变量 必填 默认值 描述
SEARXNG_URL ✅ 是 - SearXNG 实例的URL(例如。, http://localhost:8080)
SEARXNG_SECRET 推荐 - SearXNG 实例的密钥
AUTH_USERNAME 编号 - SearXNG的基本认证用户名
AUTH_PASSWORD 编号 - SearXNG的基本认证密码
HTTP_PROXY 序号 - HTTP 代理 URL
HTTPS_PROXY 编号 - HTTPS 代理 URL
CACHE_TTL 编号 60 缓存生存时间(以秒为单位)

SearXNG 配置

SearXNG 实例已自动配置为输出 JSON 格式。可以配置自定义搜索引擎以 searxng/config/settings.yml.

可用的Make命令

make help          # Show all available commands
make deps          # Download Go dependencies
make build         # Build the binary
make run           # Run locally (requires SEARXNG_URL)
make test          # Run tests
make docker-up     # Start Docker containers
make docker-down   # Stop Docker containers
make docker-logs   # View Docker logs
make install       # Install to /usr/local/bin
make build-all     # Build for multiple platforms

建筑学

┌─────────────────────────┐
│   AI Assistant (Claude) │
└───────────┬─────────────┘
            │ MCP Protocol (stdio)
            │
┌───────────▼─────────────┐
│    MCP Server (Go)      │
│  ┌──────────────────┐   │
│  │  Search Client   │───┼──► SearXNG (Docker)
│  │  URL Reader      │───┼──► Internet
│  │  Cache (60s TTL) │   │
│  └──────────────────┘   │
└─────────────────────────┘

项目结构

mcp-searxng-claude-go/
├── main.go              # Application entry point
├── searxng.go          # SearXNG API client
├── urlreader.go        # URL fetching and HTML-to-Markdown conversion
├── cache.go            # In-memory caching with TTL
├── proxy.go            # HTTP proxy configuration
├── resources.go        # MCP resources (config, help)
├── Dockerfile          # Multi-stage Docker build
├── docker-compose.yml  # Service orchestration
├── Makefile            # Build automation
└── .env.example        # Environment template