从这里继续,我们提升一下MCP的使用体验.搜索这个功能应该是AI使用过程中最离不开的一项功能了,不然AI的知识永远是旧的,不能联网获取最新的讯息来辅助分析,给出更符合当前时间和情景的回答.目前比较简单的方式就是使用现成的商业搜索API:比如Tavily, Exa, Jina之类的,这些一般都有免费额度,效果也很好,但是总有人会需要一个基本上没什么限制,完全免费,可以自己部署,隐私友好的搜索服务,那么就是我们今天的主角SearXNG了.他综合了海量的搜索引擎,一次搜索,调用所有配置好的搜索引擎,别看可能会产生大量429等报错,但是总有那么几个引擎是能用的,搜索结果绝对不会少,而且你可以自己配置代理,多弄点socks代理,可以负载均衡,降低各类搜索引擎频率限制引起的报错.配合MCP服务器mcp-searxng可以让AI调用我们部署好的SearXNG.
开始部署:
SearXNG
创建searxng文件夹
mkdir searxng && cd searxng
配置环境变量
nano .env
SEARXNG_HOSTNAME=192.168.0.5:8080
SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME}/
SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml
SEARXNG_UWSGI_WORKERS=1
SEARXNG_UWSGI_THREADS=1
SEARXNG_SECRET=<用比较复杂的数字字母大小写密码>
UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
我们在当前文件夹下再创建一个searxng文件夹,里面用来放置配置文件
mkdir searxng && cd searxng
编辑配置文件settings.yml
nano settings.yml
配置文件太长了,点此下载 (明明配置几个关键字段就可以运行了,根本不需要这么长,但是他的更新频率不低,而且经常破坏性更新,所以推荐是用他生成的最新完整配置文件,修改我说的1个或2个地方是最方便也是最保险的)
别看配置文件这么长,我们只需要修改其中1或2个地方即可
第一个地方:
formats:
- html
- json
这里默认只有html,我们需要再加一个json才能让AI正常调用
第二个地方:
proxies:
all://:
- socks5://192.168.0.253:1080
- socks5://192.168.0.253:1081
- socks5://192.168.0.253:1082
如果你需要配置代理来减少可能出现的频率问题,那么就取消这里的注释,并设置有效的socks代理,不然会报错无法使用
监听地址和端口无需在意,因为已经在环境变量里设置了,环境变量会覆盖配置文件里的配置
(需要注意的就是SearXNG更新频率比较高,而且会有很多破坏性更新,你每次拉取镜像更新以后重新运行容器,一般会提示你有新的settings.yml配置文件,searxng目录下就会多一个settings.yml.new文件,你只需要按照上面那样,添加下json或者添加下socks代理就行了.然后删除旧的settings.yml,重命名settings.yml.new为settings.yml以后重新运行容器即可.)
同目录下应该还会自动生成一个limiter.toml文件,但是这个文件我很久很久很久很久都没动过,而且我们是容器内网调用,应该也不需要配置限制器,暂时忽略.
但还是说下我的limiter.toml的内容:
# This configuration file updates the default configuration file
# See https://github.com/searxng/searxng/blob/master/searx/limiter.toml
[botdetection.ip_limit]
# activate 1ink_token method in the ip_lim1t method
filter_link_local = false
link_token = true
编辑docker-compose.yml
name: searxng
services:
searxng-redis:
container_name: searxng-redis
image: docker.io/valkey/valkey:8-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
volumes:
- ./valkey_data:/data
networks:
- internal
searxng:
container_name: searxng
image: searxng/searxng
restart: unless-stopped
env_file:
- .env
environment:
- SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-0.0.0.0}/
- UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
- UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
volumes:
- ./searxng:/etc/searxng
- ./data:/usr/local/searxng/searx/data
expose:
- 8080
networks:
internal:
cf_tunnel:
ipv4_address: 192.168.0.5
networks:
internal:
internal: true
cf_tunnel:
external: true
拉起容器
docker compose up -d
查看容器是否正常运行
docker logs -f searxng

这里可以看到有警告和报错,但是这些报错我上个版本还没有,看报错详情是部分引擎找不到还有引擎的基础URL没配置,但是我用的是他自己生成的最新的配置文件,所以我们不管,这些都可以忽略,因为引擎实在太多了,只要不影响使用都可以忽略,你正常使用造成的429等报错也会在日志里输出大量Python报错,根据我的使用经验,无需理会即可,只要能正常用就行.
那么我们参照之前部署mcp-proxy-server的步骤,进入mcp-proxy-server目录修改下我们的配置文件config.json, 我们添加mcp-searxng这个MCP服务器
{
"mcpServers": {
"time": {
"type": "stdio",
"name": "Time",
"active": true,
"command": "uvx",
"args": [
"mcp-server-time",
"--local-timezone=Asia/ShanGhai"
]
},
"searxng": {
"type": "stdio",
"name": "SearXNG",
"active": true,
"command": "npx",
"args": [
"-y",
"mcp-searxng"
],
"env": {
"SEARXNG_URL": "http://192.168.0.5:8080"
}
}
}
}
然后我们重启mcp-proxy-server,因为我有赛博洁癖,所以我一般都是docker compose down && docker compose up -d而不是docker restart,即使Compose配置文件没有变.
docker compose down && docker compose up -d
查看容器运行日志:
docker logs -f mcp-proxy-server
看下是否成功连接到新添加的mcp-searxng服务器了,没有报错就可以去Cherry Studio里调用试试看了.

至此我们MCP再添一员大将,我们拥有了自己的免费搜索MCP,无需担心严格的频率限制,搜索隐私,还有烦人的计费令牌了.
学习了!
这个会比谷歌厉害吗?
@EX #2 数量上肯定是不输的
学习了
好东西,帮顶
感谢分享 Mark
学习一下
@ik4r #3 那值得试玩一下
学习了