返回 MCP 目录
public公开dns本地运行

mcp-searxng-1g0

mcp-searxng是一个为AI代理设计的MCP服务器示例,通过SearXNG开源元搜索引擎实现外部信息搜索功能。项目展示了如何集成SearXNG和微软的markdownify工具,将网页内容转换为Markdown格式文本,并通过SSE协议与MCP客户端通信。

article

README

🚀 mcp-searxng

mcp-searxng 是一个基于 SSE(Server-Sent Events)协议实现的 MCP 服务器。它主要为用户提供通过 SearXNG 搜索引擎进行网页搜索和内容抓取的能力,并且支持用户通过配置不同的搜索引擎 URL 来扩展搜索功能。

🚀 快速开始

项目结构

mcp-searxng/
├── server.py             # 基于 SSE 协议的 MCP 服务器实现
├── Dockerfile           # 项目的 Docker 配置文件
└── README.md            # 项目文档

安装依赖

安装 Python 环境

python -m pip install --upgrade pip
pip install "uvicorn>=0.25.0"
pip install "httpx>=0.26.0"

安装 Node.js 和 npm

# 下载并安装 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash

# 在 shell 中加载 nvm:
source ~/.nvm/nvm.sh

# 安装 Node.js 版本 22:
nvm install 22

# 验证 Node.js 和 npm 是否安装成功:
node -v # 应输出 "v22.14.0"
npm -v # 应输出 "10.9.2"

运行项目

使用 Docker 启动 MCP 服务器

docker build -t mcp-searxng .
docker run -d --env SEARXNG_URL=http://localhost:8888 -p 5488:5488 mcp-searxng

使用命令行直接运行

uvicorn server:app --host 0.0.0.0 --port 5488

验证结果

安装并启动 MCP Inspector

npx @modelcontextprotocol/inspector

# 打开浏览器访问 http://localhost:5173

在 MCP Inspector 中进行操作

  • 选择 SSE 作为传输类型
  • 输入 MCP 服务器地址:http://localhost:5488/sse
  • 点击连接,验证是否成功连接
  • 切换到工具标签页,点击“List Tools”按钮,查看可用工具:
    • web_search:用于关键词搜索
    • web_url_read:用于网页内容抓取

✨ 主要特性

  • 基于 SSE 协议实现长连接通信
  • 支持通过 SearXNG 引擎进行关键词搜索
  • 提供网页内容抓取功能
  • 支持自定义 SearXNG 服务地址

🔧 技术细节

为什么选择 SSE

SSE(Server-Sent Events)协议是一种允许服务器向客户端推送实时事件的技术。相比传统的轮询机制,SSE 具有以下优势:

  1. 长连接支持:每个客户端连接可以保持较长时间,减少资源消耗
  2. 实时更新:服务器可以即时推送数据到客户端
  3. 低延迟:数据传输更快,适合需要实时响应的场景

MCP 服务器配置参数

# server.py 中定义的默认参数
class ServerConfig:
    def __init__(self):
        self.host = "0.0.0.0"
        self.port = 5488
        self.searxng_url = "http://localhost:8888"

# 启动命令示例:
uvicorn server:app --host <your host> --port <your port>

参数说明

| 参数名称 | 是否必填 | 默认值 | 类型 | 描述 | |--------------|----------|--------------------|--------|--------------------| | --host | 否 | "0.0.0.0" | 字符串 | 服务器监听地址 | | --port | 否 | 5488 | 整数 | 服务器监听端口 | | --searxng_url | 否 | "http://localhost:8888" | 字符串 | SearXNG 服务地址 |

💻 使用示例

基础用法

# server.py 中的核心实现
from fastapi import FastAPI
from starlette.responses import EventStreamResponse

app = FastAPI()

@app.get("/sse")
async def sse_endpoint():
    return EventStreamResponse()

运行截图

 运行截图

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端