金库抹布mcp
MCP服务器用于黑曜石第二大脑库中的语义搜索,使用Supabase pgvector和Google Gemini嵌入。
建筑
Claude Code vault-rag MCP server (stdio)
|-> Google Gemini gemini-embedding-001 (native 3072d)
|-> Supabase pgvector halfvec cosine similarity混合RAG架构的一部分:
- 索引:n8n(远程)+Google Gemini API
- 本地查询:此MCP服务器+Google Gemini API
- 网络聊天:n8n Vault聊天(AI代理+Gemini原生)或聊天中心(HTTP管道)
- 散装指数:使用Gemini编写脚本
gemini-embedding-001
同一型号(gemini-embedding-001,原生3072d)确保了矢量兼容性。 存储优化 halfvec (float16)——存储空间减半,质量完全(约284 MB对约567 MB)。
不对称任务类型: RETRIEVAL_DOCUMENT 为了索引, RETRIEVAL_QUERY 搜索。
工具
| 工具 | 说明 |
|---|---|
search_vault | 在整个保险库中进行语义搜索(查询、限制、para_folder、note_type) |
search_glossary | 在术语表定义中搜索(3_资源/定义/) |
get_note | 按文件路径检索笔记的完整内容 |
先决条件
- Python>=3.11
- 紫外线 包管理器
- Google API密钥(用于Gemini嵌入)
- Supabase项目
vault_chunks表和pgvector
设置
# Clone and install
cd ~/Projects/vault-rag-mcp
uv sync
# Configure environment
cp .env.example .env
# Edit .env with your Google API key and Supabase credentials环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
SUPABASE_URL | Supabase项目URL | (必填) |
SUPABASE_KEY | Supabase匿名密钥 | (必填) |
GOOGLE_API_KEY | Google AI API密钥 | (必需) |
EMBEDDING_MODEL | Gemini嵌入模型 | gemini-embedding-001 |
EMBEDDING_DIMENSIONS | 输出维度(原生=3072) | 3072 |
用法
作为MCP服务器(克劳德代码)
添加到您的项目 .mcp.json:
{
"mcpServers": {
"vault-rag": {
"command": "uv",
"args": ["run", "--directory", "/path/to/vault-rag-mcp", "vault-rag-mcp"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_KEY": "your-anon-key",
"GOOGLE_API_KEY": "your-google-api-key",
"EMBEDDING_MODEL": "gemini-embedding-001",
"EMBEDDING_DIMENSIONS": "3072"
}
}
}
}重新启动克劳德代码以激活。然后在对话中直接使用这些工具。
批量指数化
通过Google Gemini索引整个黑曜石金库的脚本:
uv run python scripts/bulk_index.py /path/to/vault [--force]选项:
--force:重新索引所有文件,忽略file_hash缓存
脚本:
- 走过金库,跳过
.obsidian/,templates/,.trash/,文件>500 KB - 解析YAML frontmatter(类型、标签、PARA文件夹)
- 按H2部分划分块,拆分超大块(>2000个字符)
- 通过Google Gemini以50个为一批嵌入(task_type=RETRIEVAL_DOCUMENT)
- 使用SHA256 file_hash升级到Supabase以进行增量重新运行
在初始批量索引化之后,n8n通过Gemini API处理增量更新。
项目结构
vault-rag-mcp/
├── pyproject.toml # uv + hatch build config
├── .env.example # Environment template
├── src/
│ └── vault_rag_mcp/
│ ├── __init__.py
│ ├── server.py # MCP server (FastMCP, stdio) — 3 tools
│ ├── embeddings.py # Google Gemini embedding client (native 3072d)
│ └── supabase_client.py # Supabase CRUD + RPC calls
├── scripts/
│ └── bulk_index.py # Bulk indexation via Google Gemini
└── n8n-workflows/ # n8n workflow definitions
├── vault-rag-github-indexation.json
└── vault-rag-chat-hub.jsonSupabase架构
表格 vault_chunks 与:
content TEXT--大块文本embedding HALFVEC(3072)--gemini-embedding-001载体(float16,半存储)metadata JSONB--标签、类型、文件夹file_path TEXT--从vault根的相对路径chunk_index INTEGER--文件中的位置para_folder TEXT--PARA文件夹(1_项目、2_区域等)note_type TEXT--前件类型(备忘录、术语表、操作指南等)file_hash TEXT--SHA256用于变化检测
RPC功能: search_vault(), match_vault_chunks(), delete_file_chunks()
技术栈
- MCP-SDK:
mcp[cli]随着FastMCP(stdio传输) - 嵌入:谷歌双子座
gemini-embedding-001(原生3072d,多语言,2048令牌/文本) - 矢量数据库:Supabase PostgreSQL+pgvector 0.8.0(HNSW余弦,半向量存储)
- 构建:紫外线+舱口
