TOS网桥MCP服务器v0.2.0
MCP服务器将克劳德桌面/代码桥接到VPS托管的Qdrant+Neo4j。提供 图增强语义搜索(GraphRAG)、双存储写入、实体/关系 CRUD和跨文档发现——所有这些都通过单个MCP服务器完成。
工具(8)
基础设施
check_tos_health --监控Qdrant和Neo4j的连接、延迟、节点/集合计数。
sync_to_tos --将模式批量同步到Qdrant和/或Neo4j。
patterns:列表{text, source, category, importance}词典target:“qdrant”、“neo4j”或“两者都有”(默认值:“两者都”)collection:Qdrant集合名称
文档存储和搜索(GraphRAG)
store_doc_with_graph --使用Neo4j图交叉引用将文档存储在Qdrant中。 在Neo4j中创建一个文档节点,其中MENTIONS/REFERENCES边指向实体节点, 并将嵌入的向量转换为Qdrant——所有这些都在一次工具调用中完成。两者都能处理 命名向量(例如。 dense)自动生成未命名的默认向量。
text:用于嵌入的文档内容collection:Qdrant集合名称title:文档标题path,summary,metadata:可选富集entities:[{name, type, importance}]--创建通过MENTIONS链接的实体节点relationships:[{target, rel_type, context}]--创建其他类型化边- 退货:
qdrant_id,neo4j_id,实体/关系计数
search_with_graph --图增强语义搜索(GraphRAG)。 嵌入查询,搜索Qdrant,然后通过Neo4j共享实体扩展结果 穿越。通过知识图谱连接的文档得分会提高。
query,collection:必填limit:最大结果(默认值10)relationship_boost:图表连接文档的得分提升(0.0–0.5,默认0.2)include_graph_context:在结果中包含实体连接- 返回:用原始/提升的分数重新排列结果,
discovered_via_graph旗帜
find_related_docs --从已知文档遍历图。 查找通过共享Neo4j实体连接到源文档的文档。
qdrant_id:源文档的Qdrant UUIDmax_depth:横向深度1–3(默认值2)limit:最大相关文档数(默认值10)include_paths:包括关系类型路径- 返回:具有距离、共享实体、关系类型的相关文档
实体和关系CRUD(v0.2.0)
create_or_update_entities --使用观察值创建或更新实体。 使用MERGE进行重复数据消除:现有实体会附加新的观察结果 (重复数据消除),创建新实体。替换 neo4j-memory-remote:create_entities
add_observations.
entities:[{name, type, observations: [...]}]check_existing:如果为真(默认),则MERGE;如果为false,则始终为CREATE- 返回:创建、更新、总计数
create_relationships --在实体之间创建类型化关系。 使用MERGE安全机制——自动创建缺失实体 concept 类型。 替换 neo4j-memory-remote:create_relations.
relationships:[{from_entity, to_entity, rel_type, context}]- 返回:创建计数
find_entities --按名称搜索实体(不区分大小写的子字符串)。 返回实体及其观测值、类型以及哪些文档提到了它们。 用于在创建新实体之前进行重复数据删除。替换 neo4j-memory-remote:search_memories + find_memories_by_name.
query:搜索字符串entity_type:可选类型过滤器limit:最大结果(默认值20)- 返回:将实体与观察和文档引用进行匹配
安装
git clone https://github.com/No-Smoke/tos-bridge.git
cd tos-bridge
python -m venv .venv
source .venv/bin/activate
pip install -e .环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
QDRANT_URL | 是的 | http://localhost:6333 | Qdrant服务器URL |
QDRANT_API_KEY | 是 | - | Qdrant API密钥 |
NEO4J_URI | 是的 | bolt://localhost:7687 | Neo4j连接URI |
NEO4J_USER | 没有 | neo4j | Neo4j用户名 |
NEO4J_PASSWORD | 是 | -- | Neo4j密码 |
OLLAMA_URL | 没有 | http://localhost:11434 | Ollama嵌入式服务器 |
OLLAMA_EMBED_MODEL | 没有 | mxbai-embed-large | 嵌入模型(1024 dims) |
Claude桌面配置
{
"mcpServers": {
"tos-bridge": {
"command": "/path/to/tos-bridge/.venv/bin/python",
"args": ["-m", "tos_bridge"],
"env": {
"QDRANT_URL": "http://your-vps:6333",
"QDRANT_API_KEY": "your-api-key",
"NEO4J_URI": "bolt://your-vps:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "your-password",
"OLLAMA_URL": "http://nuc-ip:11434"
}
}
}
}Neo4j架构
所需索引(手动创建或让TOS桥自动创建):
CREATE INDEX doc_qdrant_id IF NOT EXISTS FOR (d:Document) ON (d.qdrant_id);
CREATE INDEX doc_collection IF NOT EXISTS FOR (d:Document) ON (d.qdrant_collection);
CREATE INDEX entity_name IF NOT EXISTS FOR (e:Entity) ON (e.name);节点标签: Document (与 qdrant_id 交叉引用), Entity (与 observations 列表)。 关系类型: MENTIONS (文件→实体), REFERENCES (文件→实体), 加上通过创建的任何自定义类型 create_relationships.
建筑
┌─────────────────┐ ┌─────────────────┐
│ Claude Desktop │────▶│ TOS-Bridge │
│ or Claude.ai │ │ MCP Server │
└─────────────────┘ └────────┬────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Qdrant │ │ Neo4j │ │ Ollama │
│ (vectors)│ │ (graph) │ │(embeddings)
└──────────┘ └──────────┘ └──────────┘什么TOS桥不能替换
这些仍然需要直接工具访问:
- qdrant新:收藏管理、删除文档、混合搜索、索引降级、搜索代码
- neo4j mcp远程:用于复杂多跳分析的原始Cypher查询
- neo4j内存遥控器:delete_entities、delete_observations、delete_relations、read_graph
更新日志
v0.2.0(2026-03-14)
- 新工具:
create_or_update_entities,create_relationships,find_entities - 固定的:
graph_tools.py现在通过以下方式处理命名向量_get_collection_vector_name - 固定的:
sync_to_tosQdrant路径——是一个占位符,现在嵌入和追加 - 移除:冗余
graph_tools_1.py - 聊天完成奇偶校验:TOS桥现在可以作为以下内容的主要存储工具
Claude的聊天完成工作流程(第2阶段),取代了单独的qdrant+ neo4j内存远程调用
v0.1.0(2026-02-04)
- 初始版本:健康检查、模式同步
- 图形增强搜索(store_doc_with_Graph、search_with_ggraph、find_related_docs)
- Qdrant、Neo4j和Ollama的断路器
- 带有重试逻辑的Neo4j连接池
许可证
麻省理工学院
