大模型很好用,但安全与隐私也让人难以取舍:感情、家庭、健康、财务,这些不敢交给第三方的信息,更不该随意上传。mcpbot是运行在自己服务器上的个人AI助手,模型接自己的Ollama,数据存自己的磁盘,删除权掌握在自己手里。开源,免费。

1 你已经有自己的 AI 助手了,只是它住在别人家里。


有些话不是没人可以说,是不能对身边的人说。

一段正在塌的关系,和谁都没法开口讲的那一半;和家里人的僵局,说了又免不了一句“你怎么又提这个”;想辞但又不敢辞的工作;体检报告上突然多出来的那行字;一笔钱的窟窿,或者一个还没成形、甚至不太体面的念头。

这些事情说给身边的人听,总要面对解释和评价,也不知道最后会传到谁耳朵里。

所以 AI 很适合当那个听你说话的人。

它不会累,也不会打断你。问题只是,你愿不愿意把这些话打进一家公司的服务器。

我自己不太愿意。

不是因为我觉得公网大模型不好用。恰恰相反,现在的大模型已经足够好用了。真正让我在意的是,有些内容我根本不会输入进去。

输入框下面出现一句“对话可能用于改进服务”,有些话就已经打不出来了。于是一个挺讽刺的事情发生了:AI 最可能真正帮到你的那些内容,反而是你最不愿意交出去的内容。

当然,你可以相信服务商的隐私政策,也可以去研究数据保存多久、会不会用于训练、谁可能接触到数据。

但这些事情终究发生在别人的系统里。

你的聊天记录存在谁的机器上,什么时候删除,经过哪些服务,账号和历史记录最终能拼出多少关于你的信息,这些都不是你完全能控制的。

换一家服务以后,历史也还留在上一家。

每次重新开始,又得重新解释“我是谁”“我们之前聊到哪里”。

所以我想试试另一种方式。

2 把 AI 搬回自己家

mcpbot 是一个跑在自己服务器上的个人 AI 助手。

它没有自己的大模型,也不需要。

模型接自己的 Ollama,数据写自己的磁盘。配置、聊天记录、日志都放在自己的工作目录里。备份的时候自己拷,哪天不想要了,自己删。

听起来没什么神奇的。

但这就是我想要的东西。

你不需要相信 mcpbot “不会拿你的数据怎么样”。程序就在自己的机器上,可以看它到底把数据发去了哪里,也可以直接看它保存了什么。

目前的具体路径是这样的:

内容 会送到哪里 留在哪里
聊天内容 你配置的推理地址,默认 http://127.0.0.1:11434,附带有限的最近上下文 你指定的数据目录,明文 JSONL
站点授权 Key 浏览器和你的服务器之间 mcpbot.yaml,权限 600
上游凭据 只发给对应的目标地址 配置目录
业务工具调用 你自己配置的 MCP Server 配置目录
运行日志 默认不出这台机器 mcpbot.log

这里有个地方我特意做得比较“麻烦”。

如果配置了日志驱动的通知出站通道,却没有明确关闭相关安全开关,mcpbot 会直接拒绝启动。

不是默认允许,然后提醒你“小心一点”。

没有明确允许,就不出去。

3 但真正有意思的,不只是聊天

现在的 M0 还不能实际调用 MCP,这部分还在做。不过我还是想先把它为什么存在说清楚。

如果只是为了聊天,本地 AI 已经能解决很大一部分问题。

MCP 真正有意义的地方,是让 AI 开始使用你自己的东西,而不需要先把那些东西搬到一个 AI 平台里。

比如账本、NAS、项目系统、家庭服务器、内部 API,或者一些只有自己能访问的业务。

以前想让 AI 帮忙,通常得先做一步:把数据导出来,整理一下,再交给 AI。

“帮我看看这个月花了多少钱”,可能意味着先导出一份银行流水。

“帮我看看项目还有什么没做”,可能意味着把项目文档、任务列表甚至代码丢进一个 AI 平台。

“帮我查一下库存”,则可能需要把内部系统接到一个外部服务。

但如果这些东西本来就在自己的网络里,其实没有必要这么做。

可以让 AI 留在自己的环境里,需要什么,再通过 MCP 调用对应的服务。

大概是这样:

你
 ↓
mcpbot
 ↓
自己的 Ollama
 ↓
MCP
 ├── 记账系统
 ├── 项目管理
 ├── NAS
 ├── 家庭设备
 └── 其他自己的 API

区别不只是少传几个文件。

你不需要为了让 AI 帮你处理一件事,先把整个业务系统的数据交给它。

比如你想知道“这个月哪个客户欠款最多”,真正需要的可能只是调用一个查询接口,而不是把整个客户数据库导出给 AI。

又或者你想知道“昨天的服务器有没有异常”,AI 可以调用自己的监控服务,而不是让你先把日志文件上传出去。

这里有一个前提需要说清楚:如果使用 Ollama 这样的本地模型,MCP 返回给模型的数据可以一直留在自己的环境里。如果换成远程模型,那么这些数据仍然可能随模型请求发到远程服务。

所以这里的关键并不是 MCP 本身提供了什么“绝对隐私”,而是:

你可以把模型、MCP Server 和业务数据放在同一个自己控制的环境里。

这时候,AI 才真正开始接触你的业务。

MCP Server 暴露什么能力、允许访问哪些数据,由你自己配置。mcpbot 不需要保存一份业务数据库,也不需要建立一个中心化的数据层。

需要查什么,就调用什么。

这也是我觉得自托管 AI 比“本地聊天”更有意思的地方。

聊天记录可以留在自己这里;再往前一步,是让自己的数据和业务也不用为了使用 AI 而搬出去。

4 当然,它也没有什么“绝对安全”

这一点我反而希望直接写出来。

mcpbot 不内置 TLS。准备放到公网访问的话,应该自己套反向代理,让代理负责 HTTPS。

聊天记录目前也是明文文件,没有做磁盘静态加密。这样做的好处是数据容易备份、迁移和删除,坏处也很明显:如果有人直接拿到了你的硬盘,它并不会替你保护里面的聊天记录。

它也不是多用户系统。一个部署基本就是给一个人用的,没有账号体系、租户隔离和管理后台。

医疗、法律、财务这些事情也一样。它可以帮你整理资料、梳理问题,但不会因为换成了“私人 AI”,就突然拥有专业资质。

我不太喜欢自托管项目动不动就说“绝对安全”。

自托管真正改变的事情其实很有限:

原来替你处理数据的是别人,现在是你自己。

机器怎么保护,端口怎么开放,备份放在哪里,最终还是自己的责任。

5 那它到底能拿来干什么?

最简单的用途,可能就是找个地方说话。

你不用先把事情组织得很清楚。想到哪儿说到哪儿,过一会儿再让它帮你整理。

第二天回来,也不用从头解释昨天发生了什么。

这也是我觉得个人 AI 和普通问答工具比较明显的区别:它可以一直放在那里,而不是每次打开都从“你好,请问有什么可以帮助你”开始。

目前它会自动带有限的最近上下文,也会记录聊天历史。以后还会继续做真正的长期记忆,但现在我不想把“能延续上下文”和“有长期记忆”混成一件事。

另外还有一个我比较在意的地方:不要让模型说一句“完成了”,系统就真的把它当成完成了。

所以现在的对话过程会区分接纳、生成、收尾和结束,并分别记录回答是否完整、数据有没有确认保存。

模型说过什么,程序实际做过什么,以及数据有没有真正落盘,本来就是三件不同的事情。

MCP 这部分做好以后,助手就不只是回答问题了。它可以开始调用自己的服务,去查东西、做一些实际操作。具体能做到什么,取决于你接进来的 MCP Server。

6 现在做到哪了?

当前是 M0。

认证和一次完整的非流式对话已经可以正常跑起来。

已经有的东西包括:

  • 授权 Key 登录
  • 对话和有限的最近上下文
  • 聊天历史落盘和网页分页查看
  • 过程与结果反馈
  • 一次对话一个名额和总时限
  • 断线后的有界收尾
  • Key、请求体、历史分页、响应大小等限制
  • 启动前自检
  • 数据目录进程独占

还没有做的是:

  • 逐字流式输出
  • MCP 工具实际调用
  • 长期记忆的保存、使用和修正
  • 按 token 预算自动裁剪上下文
  • 手机端专门优化

这些东西还是应该直接写出来。

一个还在开发中的项目,如果把没做完的部分藏起来,等用户自己翻 issue 才发现,反而不太诚实。

7 怎么跑起来?

准备一台可以长期运行的机器,再装一个 Ollama,拉一个模型。

然后:

./setup.sh
./start.sh

第一次运行会打印一次本站授权 Key。

浏览器打开:

http://127.0.0.1:8100

把 Key 粘进去就可以了。

默认工作目录是项目同级的 ../mcpbot-work,配置、聊天记录和日志都放在那里,和代码分开。以后更新代码,不会把自己的数据一起覆盖掉。

如果准备从外面访问,就把它放到自己的反向代理后面。

8 技术上其实没有什么复杂的东西

目前就是 Python 3.13、FastAPI + uvicorn、服务端模板、原生脚本、JSONL 文件、进程独占锁,再通过 httpx 接 Ollama 的 /api/chat 和 MCP Streamable HTTP。

模型没有写死。

工具也没有写死。

模型的事情交给 Ollama,工具的事情交给 MCP Server,mcpbot 自己负责把这些东西串起来。

数据也没有上数据库。

对于一个单用户的个人助手,我暂时没觉得有这个必要。聊天记录就是 JSONL,直接能读、能 grep、能复制,备份就是拷文件,删掉也是删文件。

数据采用什么形态,其实也会影响你对它有多少控制权。

9 它适合谁?

如果你只是偶尔问个 Python 问题,或者让 AI 帮你改一封邮件,那我不觉得有必要折腾 mcpbot。

公网 AI 更方便,直接打开就能用。

它比较适合另一类人:已经开始把 AI 当成长期助手,但又有一些内容不愿意交给第三方。

感情、家庭、健康、财务、工作,甚至一些自己都还没想明白的事情。

再往前一步,如果你还希望 AI 能够访问自己的数据和业务系统,MCP 也提供了一个比较自然的接入方式。

你有一台可以长期运行的机器,也愿意自己配一下环境,那么把 AI 搬回来,可能是值得的。

当然,这个门槛没有被我藏起来。

你得自己部署,自己更新,自己保护机器。

如果你要求开箱即用、多人账号、管理后台,或者希望有人替你保证“绝对安全”,那它现在都不是为这个场景做的。

10 为什么开源?

因为一个主打隐私的自托管项目,如果最后还是只能让你“相信它”,总觉得少了点什么。

所以代码直接放 GitHub,MIT License。

你可以自己看它到底做了什么,也可以自己改。

我也尽量把它现在没做什么写在这里,而不是只介绍已经做好的部分。

隐私这件事,不能只靠一句“我们很重视”。


大模型现在已经足够好用了。

如果准备长期用它,而且它会慢慢知道你的工作、家庭、关系、财务,甚至一些平时不会告诉别人的事情,那么它到底运行在哪里,就变成了一件需要认真考虑的事。

mcpbot 做的事情不复杂:把它放回自己的机器上。

至少模型、数据、凭据和备份在哪里,自己知道。什么时候不用了,也不用去找客服,删掉自己的工作目录就行。


GitHub: mcpbot 主页: srs.pub License: MIT