图增强语义搜索服务

TOS Bridge MCP Server是一个桥接Claude Desktop/Code到VPS托管的Qdrant和Neo4j的服务,提供图增强的语义搜索(GraphRAG)、双存储写入、实体/关系CRUD和跨文档发现功能。

  • by No-Smoke
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 No-Smoke/tos-bridge

使用说明

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,实体/关系计数

collection 和 title 在语义上是必需的,但带有 "" 默认值,因此 当一个格式错误的工具调用信封将它们折叠起来时,调用仍然会到达服务器 text;服务器打开信封并正确存储文档。当 它们确实不存在,没有存储任何内容, 而不是误导性的“预期字符串,收到未定义”。看 arg_recovery.py.

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 UUID
  • max_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_tos Qdrant路径——是一个占位符,现在嵌入和追加
  • 移除:冗余 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连接池

许可证

麻省理工学院