喵喵搜索开源了——一个可自托管的多引擎联网搜索与 MCP 服务
大家好,我是汉堡🍔。
今天把一个做了一段时间的项目开源了:喵喵搜索(miaomiao-search)。
GitHub 地址:https://github.com/dnwwdwd/miaomiao-search
如果觉得有用,欢迎点个 ⭐ Star,这是我持续更新最大的动力。
它是什么
一句话:可自托管的多引擎联网搜索 + Remote MCP 服务。
你可以把它部署在自己的机器或懒猫微服上,然后让 AI 客户端(比如 Codex、小龙猫)通过 MCP 协议调用它来搜索互联网、读取网页正文——完全在你自己的控制下,不依赖第三方中转。
核心功能
聚合 11 个搜索源,一次搜索覆盖:
- Bing、Baidu、DuckDuckGo、Sogou
- CSDN、掘金
- GitHub(支持可选 Token)
- B站(公开接口,返回官方 CDN 封面)
- Exa、Firecrawl、Tavily(需要用户自己的 API Key,按用户加密存储)
读取网页正文,支持 JavaScript 渲染回退(生产镜像内置 Chromium)。
Remote MCP 服务,通过 Streamable HTTP 暴露 MCP Tools,外部客户端用 Access Token 接入,懒猫应用间可以委托鉴权,不需要额外 Token。
管理门户,可以管理搜索引擎开关、缓存、限流、历史记录和审计日志。
账号体系,支持懒猫 OIDC 和本地账号密码两种登录方式。
技术栈
- 前端:Next.js 16、React 19、TypeScript、Tailwind CSS v4
- 后端:Fastify 5、SQLite、Drizzle ORM
- MCP:MCP TypeScript SDK v2
- 搜索底层:
open-websearch@2.1.11daemon 适配器
单实例运行,数据用 SQLite 持久化,按懒猫 UID 隔离用户数据,包内不含数据库或密钥。
本地跑起来
要求:Node.js 20+、pnpm,以及一个可通过 HTTP(S) 访问的 Open-WebSearch daemon。
▼bash复制代码pnpm install
启动 Open-WebSearch daemon(Windows PowerShell 示例):
▼powershell复制代码$env:SEARCH_MODE="request" $env:USE_PROXY="true" $env:PROXY_URL="http://127.0.0.1:7890/" pnpm --filter @miaomiao-search/server exec open-websearch serve --port 3210
再分别启动服务端和门户:
▼bash复制代码pnpm server:dev pnpm dev
默认地址:
- 门户:
http://127.0.0.1:3000/ - 服务端:
http://127.0.0.1:3001/ - MCP Endpoint:
http://127.0.0.1:3000/mcp
安全设计
几个关键点说一下:
- 实例密钥派生会话、MCP Token Hash 和设置加密密钥,生产环境由懒猫清单注入,不能写进仓库。
- Exa、Firecrawl、Tavily、GitHub 的凭据在门户"引擎管理"中按用户保存,服务端只在当前用户数据库中存加密值。
- 外部 MCP 客户端用
Authorization: Bearer <Token>接入;懒猫应用间调用由 ingress 注入X-HC-SOURCE和X-HC-USER-ID,委托鉴权,不需要额外 Token。 - 门户不把
X-HC-*头当登录凭据,所有受保护 API 将当前 UID 与应用会话绑定校验。
许可
Apache-2.0,详见仓库 LICENSE。
项目还在持续迭代中,欢迎提 Issue 和 PR。
如果觉得有用,点个 Star 是对我最大的支持 ⭐
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
AI 时代学习开源项目的正确姿势
15
DeepSeek 官方偷偷上传 Harness 桌面端安装包,我已经用上了。。附最新下载地址
6
学习开源项目时我们应该画哪些图?
10
最近看了一个视频叫「被 Vibe Coding 抚平的大脑褶皱,还能救回来吗?」,聊的是 AI 时代学编程的困境,感觉说的挺好的,给鱼友们分享一下。视频中提到现在学编程和以前最大的区别是,以前卡住了你只能自己想、查文档、翻 Stack Overflow,这个过程虽然痛苦,但你的脑子确实在转。现在有了 AI,卡住的第一反应就是打开 ChatGPT 问一句,代码瞬间就出来了,跑通了,感觉自己搞定了。但
7
现在安装 MySQL 真方便:直接让 AI 帮忙安装,再跟着它的指引,在 DataGrip 里配置本地连接。
3
作者分享
GPT发癫了,我也没聊彩票啊
3
可以转战Claude订阅了,GPT发布延迟还被吊着打,甚至不如去订阅国产 AI 聚合套餐
4
Notus 正式发布:我做了一个真正属于自己的 AI 知识库
6
Notus太强了,点赞
3
这篇文章我十分赞同,GPT 给我的感觉就是不够灵性、不够聪明,必须要给明确的目标和指定任务才能干的好,倘若任务十分发散开放就变得十分糖。相比之下 Claude 就非常有灵性,它总是能看透用户意图抓到用户实际需要什么,特别是在做调研类任务时 Claude 显得更强,GPT 总是 get 不到我的点,我让它找啥它才找啥,很难把我提出每个需求串起来去找,这就很难受。好在GPT 6 Astra 好了不少,但是太贵了。
https://chatgpt.com/share/6ab08cbd-982c-83e8-8d49-02d6006e75e8 这个对话就是一个活生生的例子,我想找一个可以查看各家coding agent额度的项目,通过官方OAuth登录进行登录认证,而不是读取auth.json等权限文件,因为我想搬砖到懒猫微服上去。但这个 GPT 气得我没话说,我把所有需求说明白了,它找出个dsh 插件来了https://github.com/lninghaha/dsh-coding-subscription-oauth 最后跟我说没找到,还是我告诉它有个项目能符合我的要求才开始分析(实际我并没让它分析,我只是问他合不合适,分析过程中它还说了如何去搬到懒猫微服,因为 GPT 记忆中知道搬到懒猫微服的前提是什么,其中条件之一必须是web端架构且不依赖于其他任何项目,是一个独立的项目个体,但它还是能找出 dsh 插件来搪塞我)。
更别说其他的工作,比如调整UI、写文案等。X 上有个帖子说的很好,我让 GPT 调整网页的文案或者按钮的位置,比如我希望把登录功能作为单独的页面展示而不是弹窗,它会非常脑残得在登录页面底部写上“登录功能已作为单独页面展示,而不是弹窗”,如果你经历过肯定知道我在说什么。
还有codex的多agent协作非常的垃圾,主agent不信任sub-agent的执行结果,非要自己去验证,导致之前我本来想写一个文章介绍如何进行多agent实战,但它耗了我2个重置机会连第一个阶段都没进行完,一共有6阶段。而且 GPT 的重置就是个骗局,因为不断重置你很难判断一周内套餐实际能用多少的token量,从而官方可以不断的削减使用量,而且因为不断重置模型不断降智,速度也很慢。
8
