mcp脚本
具有软/重叠上下文分配的语义路由、地形MCP联邦。 概念来源于神经科学中地图和地形的表示,如《Brainscapes》(Schwarzlose,2021)一书所述
概念
地形布线的灵感来自大脑如何在空间中连续组织表示:具有相似特征的概念彼此靠近,区域之间的边界是梯度而不是硬线。mcp-scapes将这一原则应用于mcp服务器——每个子服务器都是一个域区域,服务器之间的接近度被编码在实时距离矩阵中,每条知识都被分配到所有区域的软成员权重,而不是只属于一个区域。
mcp-scapes没有将查询硬路由到一个服务器,而是嵌入查询并计算所有服务器质心上的softmax。低温产生近乎硬的路由(最近的域获得大部分权重);高温会同时在许多服务器上扩散激活。这反映了皮层映射如何在边界处融合,神经元对多种刺激的反应是分级调谐曲线,而不是二元隶属关系。
建筑
┌────────────────────────────────────────────┐
│ meta-server :8000 │
│ ┌──────────┐ ┌────────┐ ┌───────────┐ │
│ │ Registry │ │ Map │ │ Router │ │
│ │ (SQLite) │ │(cosine │ │(embed + │ │
│ │ │◄─│ dist.) │◄─│ softmax) │ │
│ └──────────┘ └────────┘ └───────────┘ │
│ MCP tools + /internal/* HTTP │
└──────┬──────────────┬──────────────┬───────┘
│ │ │
:8001 ▼ :8002 ▼ :8003 ▼
child-energy child-research child-code
KnowledgeGraph KnowledgeGraph KnowledgeGraph
(SQLite + vec) (SQLite + vec) (SQLite + vec)快速入门——Docker Compose
docker compose up --build这将开始:
meta在8000端口child-energy在端口8001上child-research在8002端口child-code在8003端口
所有子服务器在启动时向meta自动注册。
快速入门-手册
pip install -e ".[dev]"
# Terminal 1 — meta
topomcp-meta
# Terminal 2 — one child
CHILD_ID=energy \
CHILD_NAME="Energy Markets" \
CHILD_DESCRIPTION="Knowledge about energy markets and commodities" \
META_URL=http://localhost:8000 \
topomcp-child添加 --preload 在接受连接之前,可以使用任一命令来预热句子转换器模型。
MCP工具--元服务器
| 工具 | 说明 |
|---|---|
list_domains | 最近3个邻居的所有注册服务器 |
route_query(query, top_k, temperature) | 具有分数和连接信息的最近服务器 |
soft_route_query(query, temperature) | 所有域上的完整softmax权重分布 |
domain_map | 按边缘列表的成对服务器间距离 |
interpolate_domains(domain_a, domain_b, t) | 在两个域之间布置插值中点 |
search_across(query, top_k_servers, top_k_results) | 扇出搜索、合并和重新排序结果 |
add_to_domain(domain_id, content, tags) | 将代理add_memory添加到特定的子节点 |
add_with_soft_routing(content, tags, temperature, threshold) | 写入高于权重阈值的所有服务器 |
MCP工具--子服务器
| 工具 | 说明 |
|---|---|
add_memory(content, tags, domain_weights) | 在本地知识图中添加节点 |
search_memory(query, k) | 语义搜索,返回带有分数的top-k |
get_memory(id) | 按id获取单个节点 |
add_relation(source_id, target_id, relation, weight) | 在节点之间添加有向边 |
describe | 服务器标识、质心、节点计数、顶部标签 |
list_memories(limit, offset) | 所有节点的分页列表 |
软路由是如何工作的
当查询或内容到达元服务器时,mcp会执行以下操作:
- 嵌入 文本使用
all-MiniLM-L6-v2(384维向量)。
- 分数 通过查询嵌入和每个服务器的质心(其所有存储节点嵌入的平均值)之间的余弦相似性来计算每个注册的服务器。
- 随温度应用softmax
τ:
weight_i = exp(sim_i / τ) / Σ exp(sim_j / τ)- τ = 0.1 → 近似硬路由:最接近的域获得全部权重。 - τ = 2.0 → 扩散激活:多个域获得相当大的权重。
- 对于
add_with_soft_routing,任何重量超过threshold(默认值0.15)接收写入。节点存储在domain_weights设置为完整的softmax分布,对所有区域的分数成员进行编码。
服务器质心自动更新:每个 add_memory 调用会触发后台POST meta/internal/refresh_centroid/{id},它获取孩子的更新质心并重建成对距离矩阵。
贡献
- 分叉仓库并创建一个功能分支。
- 安装开发依赖项:
pip install -e ".[dev]". - 运行测试:
pytest tests/. - 打开一个PR
main.
