使用说明
知识mcp
一个自托管的MCP(模型上下文协议)服务器,为AI助手提供跨对话的持久内存。人工智能在每次会话开始时查找相关上下文,并写回它发现的学习内容——偏好、要避免的错误、个人上下文、沟通模式——这样未来的每一次对话都比上一次更有信息。
内置Go。将数据存储在以下任一位置 SQLite (简单、独立)或 ChromaDB (语义搜索、现有基础设施)。支持MCP流式HTTP传输,与openwebui和其他MCP客户端兼容。
运作原理
在对话开始时,AI会呼叫 lookup_context 服务器搜索存储的学习信息并返回相关信息——比如你的通信偏好、人工智能过去犯的错误、相关的个人背景或关于你的堆栈的技术细节。人工智能在说话前使用它来校准自己的反应。
在会话结束时(或发现有用的东西时),AI会调用 store_learning 随着时间的推移,商店会建立一个详细的、可搜索的图片,说明如何有效地与你合作。
人工智能直接书写,无需经过人类的批准。您可以随时使用以下命令查看、编辑或修剪条目 list_learnings, update_learning,以及 delete_learning.
暴露的工具
| 工具 | 说明 |
|---|---|
lookup_context |
先叫这个。 按关键字搜索存储的学习内容并返回相关内容。增量使用返回结果的计数。 |
store_learning |
使用类别、内容、标签和置信度分数存储新的学习内容。 |
list_learnings |
列出所有存储的学习,可选择按类别过滤。 |
update_learning |
按ID更新现有学习 |
delete_learning |
按ID删除学习 |
get_stats |
返回每个类别的学习次数。 |
分类
| 类别 | 目的 |
|---|---|
preferences |
沟通风格、格式偏好、总是/从不做的事情 |
personal_context |
提供更好回应的相关个人事实 |
technical |
堆栈细节、使用的工具、技术偏好 |
personal_growth |
正在进行的工作、模式、该人正在经历的事情 |
mistakes |
出错的事情以及如何避免重复 |
general |
抓住所有不适合上面的东西 |
后端
SQLite(默认)
简单、自给自足。磁盘上的单个文件。在可用时使用FTS5全文搜索(Alpine Linux包括在内),回退到按单词搜索 LIKE 否则查询。适用于单实例部署。
数据库在第一次运行时自动创建,除了确保目录存在外,不需要任何设置。
ChromaDB
使用您现有的ChromaDB HTTP API(v2)。使用元数据存储文档。如果您配置了Ollama嵌入模型,嵌入将通过Ollama生成并传递给Chroma,从而为您提供真正的语义搜索而不是关键字匹配。在没有配置嵌入模型的情况下,Chroma使用自己的默认嵌入器。
要求ChromaDB≥0.6(API v2)。
配置
配置是一个TOML文件。打印一个示例:
./self-improvement-mcp --print-config
全参考
[server]
addr = ":8080" # Listen address
[backend]
type = "sqlite" # "sqlite" or "chroma"
[sqlite]
path = "/data/learnings.db" # Path to SQLite file; created automatically
[chroma]
url = "http://chroma:8000"
tenant = "default_tenant" # Chroma v2 tenant (default: "default_tenant")
database = "default_database" # Chroma v2 database (default: "default_database")
collection = "self_improvement" # Collection name; created automatically if missing
# Optional: use Ollama for semantic embeddings
# embedding_model = "nomic-embed-text"
# ollama_url = "http://ollama:11434"
配置文件解析顺序
服务器按以下顺序查找配置文件,在找到的第一个文件处停止:
--config <path>旗帜CONFIG_FILE环境变量./config.toml(当前目录)/config/config.toml/etc/self-improvement-mcp/config.toml
如果没有找到配置文件,则应用所有默认值(SQLite后端,端口8080, /data/learnings.db).
在本地运行
从源代码构建
需要Go 1.22+和C编译器(用于SQLite CGO绑定)。
git clone <repo>
cd self-improvement-mcp
go build -o self-improvement-mcp .
./self-improvement-mcp --print-config > config.toml
# edit config.toml as needed
./self-improvement-mcp --config config.toml
使用SQLite运行
mkdir -p data
./self-improvement-mcp --config config.toml
SQLite数据库是自动创建的。不 touch 或者需要预初始化。
使用ChromaDB运行
更新 config.toml:
[backend]
type = "chroma"
[chroma]
url = "http://192.168.1.20:8001"
collection = "self_improvement"
如果集合不存在,则会在首次运行时自动创建。
使用Docker运行
塑造形象
docker build -t self-improvement-mcp:latest .
Dockerfile使用多阶段Alpine构建。最终图像大小约为15MB。
使用SQLite运行
docker run -d \
--name self-improvement-mcp \
-p 8080:8080 \
-v $(pwd)/config.toml:/config/config.toml:ro \
-v self-improvement-data:/data \
self-improvement-mcp:latest
使用ChromaDB运行
docker run -d \
--name self-improvement-mcp \
-p 8080:8080 \
-v $(pwd)/config.toml:/config/config.toml:ro \
self-improvement-mcp:latest
从另一个容器连接
如果您的MCP客户端(例如openwebui)在容器中运行,而服务器在Docker主机上运行,请使用:
http://host.docker.internal:8080/mcp
在Linux上, host.docker.internal 需要显式配置。添加到客户端容器的compose服务:
extra_hosts:
- "host.docker.internal:host-gateway"
Kubernetes部署
完整的清单见 k8s.yaml。它包括一个ConfigMap、PVC(用于SQLite)、部署和服务,所有这些都在 ai 命名空间。
部署
# Update the image reference in k8s.yaml first
kubectl apply -f k8s.yaml
通过ConfigMap切换后端
要从SQLite切换到ChromaDB,请编辑ConfigMap并更新 type = "chroma" --无需重建或重新部署,只需滚动重启:
kubectl edit configmap self-improvement-mcp-config -n ai
kubectl rollout restart deployment/self-improvement-mcp -n ai
服务URL(来自群集中)
http://self-improvement-mcp.ai.svc.cluster.local:8080/mcp
连接到打开的webui
在openwebui中,添加一个新的MCP工具服务器:
- 网址:
http://host.docker.internal:8080/mcp(如果在Docker主机上运行) - 运输: 可流式传输的HTTP
服务器使用MCP instructions 现场 initialize 响应,告诉AI打电话 lookup_context 在每次谈话的开始。遵循的严格程度取决于模型和openwebui的系统提示配置。
端点
| 端点 | 方法 | 描述 |
|---|---|---|
/mcp |
POST |
MCP JSON-RPC端点(可流式传输HTTP) |
/mcp |
GET |
服务器发起的消息的SSE流 |
/health |
GET |
健康检查-退货 {"status":"ok","version":"1.0.0"} |
MCP协议
服务器实现 MCP 2024-11-05 通过可流式传输的HTTP。支持的方法:
initializenotifications/initializedpingtools/listtools/call- 批处理请求(JSON数组)
项目结构
self-improvement-mcp/
├── main.go # Entry point, config loading, server startup
├── config.go # TOML config types and defaults
├── backend.go # Backend interface + factory
├── backend_sqlite.go # SQLite implementation (FTS5 + LIKE fallback)
├── backend_chroma.go # ChromaDB v2 HTTP API implementation
├── server.go # Streamable HTTP MCP server
├── tools.go # Tool definitions and handlers
├── Dockerfile # Multi-stage Alpine build
└── k8s.yaml # Kubernetes manifests (ConfigMap, PVC, Deployment, Service)
添加新后端
实施 Backend 接口在 backend.go:
type Backend interface {
Add(category, content, tags string, confidence float64) (*Learning, error)
Search(query, category string, limit int) ([]*Learning, error)
List(category string, limit int) ([]*Learning, error)
Update(id, content, tags string, confidence float64) error
Delete(id string) error
IncrementUseCount(id string)
Stats() (map[string]int, error)
Close() error
}
然后将案例添加到 NewBackend 工厂在 backend.go 以及中的新配置部分 config.go.
依赖项
| 依赖性 | 目的 |
|---|---|
github.com/mattn/go-sqlite3 |
SQLite驱动程序(CGO) |
github.com/BurntSushi/toml |
TOML配置解析 |
没有其他运行时依赖关系。ChromaDB和Ollama是外部服务,而不是Go依赖项。
许可证
麻省理工学院
