林博舞者。MCP系统设计
执行摘要
林博舞者。MCP是一个本体论优先的模型上下文协议服务器,它使用Vector和Graph数据库将复杂的文档(规则手册、法规、技术规范)转换为可查询的知识图,使Claude和ChatGPT等人工智能助手能够提供有关复杂规则系统的上下文准确答案。建在。NET 9和Azure,它提取结构化知识,同时保留精确的规则引用(对于“规则A6.41”必须保持不变的兵棋等领域至关重要),处理嵌套异常和交叉引用,通过插件架构集成空间数据(支持基于十六进制的兵棋、基于网格的RPG或自定义坐标系),并为地形变化或部队移动的场景保持动态跟踪。该系统将用于精确规则关系的图遍历与用于语义发现的向量搜索相结合,验证数千条相互关联的规则之间的一致性,并通过多租户隔离进行扩展——将需要专家解释的200页PDF转换为智能系统,通过考虑基本规则、适用例外、当前游戏状态和空间约束,可以回答“我的精英步兵部队可以进入敌方占领的建筑吗?”等问题。该系统满足了垂直市场的人工智能需求,如游戏(桌面市场150亿美元以上)、监管合规、技术文档、法律职业以及必须一致应用复杂条件逻辑的任何领域,为组织提供了使专家知识民主化的能力,同时确保准确性并减少代价高昂的规则解释错误。
目录
______________________________________________________________________
概述和目的
林博舞者。MCP是一个 本体论优先 模型上下文协议(MCP)服务器构建于 .NET 9 和 Azure作为一个功能齐全的MCP实现,它提供了会话管理、内存存储、向量搜索和知识图操作的工具。LimboDancer的独特之处在于它与形式本体的深度集成——每个工具、记忆项和图形实体都基于一个类型化的语义模型。这使系统能够从复杂的文档(例如规则集、规则手册、政府法规或法律文件)中提取结构化知识,保持数据存储的一致性,并向任何兼容MCP的AI助手(例如Claude和ChatGPT)提供上下文感知的响应。
示例:处理策略游戏规则手册
当用户提交棋盘游戏规则手册(例如“高级队长”)时,LimboDancer:
flowchart TD
A[Rulebook PDF] --> B[Document Ingestion]
B --> C{Pattern Recognition}
C --> D[Extract Entities]
C --> E[Parse Rules]
C --> F[Detect Exceptions]
C --> G[Find Cross-References]
D --> H[Ontology Store]
E --> H
F --> H
G --> H
H --> I[Knowledge Graph]
H --> J[Vector Index]
K[User Query:
'Can elite infantry enter
enemy buildings?'] --> L[Query Engine]
L --> I
L --> J
I --> M[Rule 7.4.2: No entry]
I --> N[Exception: Elite units ignore 7.4.2]
J --> O[Similar contexts]
M --> P[Answer: Yes, elite units
can enter due to exception]
N --> P
O --> P- 提取本体 -识别游戏实体(单位、地形、武器)、它们的属性(移动点、火力)和关系(视线规则、堆叠限制)
- 捕获规则结构 -解析编号规则(例如,“7.4.2步兵不得进入敌方单位占用的建筑六角”),创建具有交叉引用的可查询节点
- 处理异常 -检测特殊情况(“EXC:精英单位忽略规则7.4.2”),并将其与具有适当优先级的基本规则联系起来
- 构建知识图谱 -创建一个可导航的结构,其中规则、例外、示例和游戏状态相互关联
益处用户无需在200页的PDF中搜索,而是可以提出相关问题,如“我的精英步兵部队可以进入有敌人的建筑吗?”,并获得考虑所有适用规则、例外和当前游戏状态的准确答案。系统验证规则的一致性,并在摄取过程中标记冲突。
______________________________________________________________________
建筑
高级系统流
graph LR
subgraph "Input Sources"
RS[Rulesets & Documents]
API[OpenAPI Specs]
MD[Map/Board Data]
end
subgraph "LimboDancer Core"
EXT[Extraction Engine]
ONT[Ontology Store]
VAL[Validation Layer]
QE[Query Engine]
PS[Plugin System]
end
subgraph "Storage"
PG[(PostgreSQL)]
CS[(Cosmos DB)]
AI[(AI Search)]
RD[(Reference Data)]
end
RS --> EXT
API --> EXT
MD --> RD
EXT --> ONT
ONT --> VAL
VAL --> CS
ONT --> QE
QE --> AI
QE --> PG
QE --> PS
PS --> RD多租户范围
每个操作都由分层分区键限定范围:
- 租户 -组织边界
- 包裹 -模块分组(例如,“规则”、“核心”)
- 频道 -版本流(例如,“当前”、“v1.0.0”)
插件架构
特定于域的逻辑在插件中是隔离的:
- ASL插件 -基于十六进制的兵棋空间逻辑
- D&D插件 -基于网格的RPG机制
- 国际象棋插件 -代数符号和板逻辑
- 通用插件 -非结构化文档的回退
______________________________________________________________________
核心本体组件
增强型节点类型(第3阶段)
- 实体 -规则中的对象(单位、令牌、游戏块、域概念)
- 属性 -属性和值(统计数据、成本、功能,以及所有者/范围/基数)
- 关系 -元素之间的类型化连接(先决条件、依赖关系、类型化边)
- 枚举 -分类值(状态、类型、阶段、封闭值集)
- 形状 -类似SHACL的数据结构验证模板
- 规则节点 -具有保留规范ID的主要规则语句(A.1,B.23.71)
- 例外节点 -具有优先级权重和嵌套支持的规则修改
- 条件 -上下文相关规则激活和先决条件
- 参考节点 -保留精确规则ID的跨规则链接
- 示例代码 -通过位置引用验证澄清实例
- 定义节点 -具有特殊含义的CAPS术语
- 阶段节点 -阶段特定规则的临时容器
- MatrixRuleNodes -多维规则表(地形图)
- 别名 -规范名称+同义词,实现稳健匹配
动态组件
- HexState -跟踪基地和当前地形以及部队乘员
- 单元 -具有运动和视线特性的动态游戏棋子
- 计数器 -地形修改器(烟雾、瓦砾、火灾)
- 游戏板 -管理预先计算的基础数据上的动态覆盖
______________________________________________________________________
提取和查询功能
强化提取工艺(第3阶段)
提取引擎识别复杂的模式:
- 规范规则ID 精确保存(A.1,B.23.71,10.211)
- 嵌套异常 具有优先级链(EXC内的EXC)
- 矩阵规则 用于地形图和作战表
- 位置参考 从示例(3K3、P5)中提取
- 分层规则结构 (10.211 → 10.21 → 10.2 → 10)
- 模块命名空间 (A部分、B部分、特定模块)
高级查询功能
结构查询:
- 使用规范ID进行规则层次遍历
- 异常优先级解决
- 跨模块引用验证
- 矩阵规则查找
空间查询(通过插件):
- 视线计算
- 距离和邻近检查
- 地形修改效果
- 动态查询
上下文查询:
- “K3树林里的步兵能看到P5的建筑吗?”
- “精英部队进入建筑物时有哪些例外情况?”
- “在消防准备阶段,我有什么选择?”
参考数据集成
- 预先计算的视距数据 为了表现
- JSON文档存储 用于地图/十六进制数据
- 动态地形修改 (建筑物→瓦砾、树林→火焰)
- 机组运动跟踪 随着国家财富的增加
验证层
- 规则ID格式验证 (标准ASL格式)
- 位置参考验证 对照董事会数据
- 异常优先级验证
- 模块兼容性检查
- 循环依赖检测
- 术语一致性 (CAPS术语)
图形与矢量:互补技术
林博舞者。MCP。图表。宇宙Gremlin 商店 结构化关系:
- 具有规范ID的规则层次结构(例如,“10.211”CHILD-OF“10.21”)
- 具有优先级权重的异常链
- 基于阶段的规则激活
- 跨模块引用
林博舞者。MCP。矢量。Azure搜索 手柄 语义相似度:
- 基于意义搜索的嵌入规则文本
- 带有位置参考的示例文本
- 矩阵规则内容
- 基于本体元数据的混合搜索
它们如何与空间插件协同工作:
flowchart LR
Q[Query: Can tanks at 3K3
cross river at 3K4?] --> QE[Query Engine]
QE --> VS[Vector Search]
QE --> GS[Graph Store]
QE --> SP[Spatial Plugin]
VS --> R1[Find river
crossing rules]
GS --> R2[Traverse: Tank
→ Vehicle Rules
→ Terrain Restrictions]
SP --> R3[Check terrain
at 3K4, calculate
movement cost]
R1 --> A[Combined Answer:
Rules + Exceptions
+ Spatial Context]
R2 --> A
R3 --> A______________________________________________________________________
本体设计与实现
MCP工具接口
第3阶段功能的增强工具:
public class OntologyExtractionTool : IMcpTool
{
public Task ExtractOntology(
string documentPath,
string systemType = "Generic") // Plugin selection
{
// Preserves canonical rule IDs
// Handles nested exceptions
// Extracts matrix rules
}
public Task Query(
string ontologyId,
Query query)
{
// Uses appropriate spatial plugin
// Enriches state with reference data
// Handles dynamic terrain state
}
}主要特点
- 规范ID保存 -从不修改规则编号
- 嵌套异常处理 -在EXC模式中支持EXC
- 插件架构 -域逻辑分离
- 动态状态管理 -地形修改和部队移动
- 参考数据集成 -空间数据的JSON文档
发电管道
flowchart TD
DOC[Documents] --> ING[Ingest & Chunk]
API[OpenAPI Specs] --> ING
MAP[Map Data] --> REF[Reference Store]
ING --> EXT[Extract with
Pattern Recognition]
EXT --> PRES[Preserve
Canonical IDs]
PRES --> REL[Build
Relationships]
REL --> VAL[Validate
Cross-References]
VAL --> PUB[Publish to
Ontology]
PUB --> SYNC[Sync with
Spatial Plugins]
REF --> SYNC治理
- 规则ID完整性:规范格式强制
- 位置验证:董事会背景调查
- 例外优先级:重量分配规则
- 模块兼容性:跨模块验证
导出格式
- JSON-LD:保留规则ID
- 海龟/RDF:包括空间谓词
- 插件架构:域特定格式
______________________________________________________________________
核心实施组件
1.持久性基线(EF核心+Postgres)
文件: src/LimboDancer.MCP.Storage/{ChatDbContext.cs, Entities.cs},迁移
关键实体:
[Table("sessions")]
public class Session
{
[Key] public Guid Id { get; set; }
[MaxLength(256)] public string Title { get; set; } = string.Empty;
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
}
[Table("messages")]
public class Message
{
[Key] public long Id { get; set; }
public Guid SessionId { get; set; }
[MaxLength(32)] public string Role { get; set; } = "user";
public string Content { get; set; } = string.Empty;
public DateTimeOffset Ts { get; set; } = DateTimeOffset.UtcNow;
}2.Azure AI搜索的矢量索引(混合)
文件: src/LimboDancer.MCP.Vector.AzureSearch/{SearchIndexBuilder.cs, VectorStore.cs}
特性:
- 混合搜索(BM25+矢量)
- 本体过滤器(类、uri、标签)
- 通过租户/包/渠道字段提供多租户支持
- 元数据中的规则ID保留
3.Cosmos Gremlin图形脚手架
文件: src/LimboDancer.MCP.Graph.CosmosGremlin/{GremlinClientFactory.cs, GraphStore.cs, Preconditions.cs, Effects.cs}
能力:
- 提升顶点/边以增强节点类型
- 异常优先级跟踪
- 规则层次导航
- 跨模块参考支持
4.空间插件系统(第三阶段)
文件: src/LimboDancer.MCP.Core/Plugins/{ISpatialPlugin.cs, ASLSpatialPlugin.cs}
接口:
public interface ISpatialPlugin
{
string SystemType { get; }
object ParseLocation(string location);
bool CheckVisibility(object from, object to, GameState state);
void ApplyModification(GameState state, string type, object target);
}5.参考数据管理
文件: src/LimboDancer.MCP.Core/ReferenceData/{GameBoard.cs, HexState.cs}
组件:
- 预先计算的服务水平存储
- 动态地形覆盖
- 机组运动跟踪
- 国家浓缩管道
6.MCP工具表面
增强工具:
ontology.extract-带系统类型参数ontology.query-支持插件的空间查询reference.load-板/地图数据摄取state.update-动态修改
7.带有SSE事件的HTTP传输
文件: src/LimboDancer.MCP.McpServer.Http/{AuthExtensions.cs, HttpTransport.cs, ChatStreamEndpoint.cs}
特性:
- Entra ID(Azure AD)JWT身份验证
- 服务器在以下位置发送事件
/mcp/events - 聊天流端点
- 基于角色的策略(读者/操作员)
8.操作员控制台(DateTimeServer)
增强页面:
- 规则:使用规范ID浏览提取的本体
- 地图:查看电路板数据和当前状态
- 例外情况:跟踪优先级链
- 验证:检查规则一致性
9.开发人员CLI
增强命令:
limbodancer ontology extract --file asl.pdf --type ASL
limbodancer ontology validate --id asl-rules-v1
limbodancer reference load --board 1 --data board1.json
limbodancer query --ontology asl-rules --location 3K3______________________________________________________________________
开发设置和工具
先决条件
- .NET 9 SDK
- Docker(用于本地Postgres)
- Azure订阅:
- Azure AI搜索(标准版或更高版本) - Azure OpenAI(用于嵌入) - Azure Cosmos DB(Gremlin)或Gremlin模拟器
地方发展设置
- PostgreSQL:
docker run --name pg-limbo -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:16- 配置 (
appsettings.Development.json):
{
"Persistence": {
"ConnectionString": "Host=localhost;Port=5432;Database=limbodancer_dev;Username=postgres;Password=postgres"
},
"Search": {
"Endpoint": "https://.search.windows.net",
"ApiKey": "",
"Index": "ldm-memory"
},
"OpenAI": {
"Endpoint": "https://.openai.azure.com",
"ApiKey": "",
"EmbeddingModel": "text-embedding-3-large"
},
"Gremlin": {
"Host": ".gremlin.cosmos.azure.com",
"Port": "443",
"Database": "ldm",
"Graph": "kg",
"Key": "
"
},
"Plugins": {
"ASL": "LimboDancer.MCP.Plugins.ASL",
"DnD": "LimboDancer.MCP.Plugins.DnD",
"Chess": "LimboDancer.MCP.Plugins.Chess"
}
}Bootstrap脚本
PowerShell脚本(scripts\bootstrap.ps1)创建完整的解决方案结构:
- 创建具有适当引用的所有项目
- 添加所需的NuGet包
- 生成初始文件存根
- 设置项目依赖关系
- 包括插件模板
______________________________________________________________________
用例和好处
用例
- 复杂的战争游戏规则 (ASL、GMT游戏)-具有空间意识
- RPG系统 (D&D,探路者)-基于网格的力学
- 棋盘游戏手册 -动态
- 法律/监管文件
- 技术规格
- API文档
- 业务流程定义
益处
- 标准参考文献保存 -规则ID与发布的完全相同
- 空间智能 -通过插件进行位置感知查询
- 动态状态跟踪 -应对地形变化和部队移动
- 例外优先级 -正确解析嵌套规则修改
- 多系统支持 -不同域的插件架构
- 性能优化 -具有动态叠加的预先计算的空间数据
- 完整的规则上下文 -矩阵规则、示例和交叉引用
______________________________________________________________________
路线图和里程碑
指导原则
- 内置 .NET 9
- 托管于 Azure容器应用
- MCP运行时 =无状态无头工作程序/web API
- 任务服务器用户界面 =仅限操作员/控制台(单独的容器,粘性会话)
- 本体论是一流的:与本体术语相关的每个工具、内存和KG条目
- 增量里程碑 有验收门
里程碑
阿尔法阶段(里程碑1-3)
- ✅ 里程碑1——MCP骨架:脚手架解决方案,使用stdio+noop工具实现MCP服务器
- ✅ 里程碑2——坚持:EF Core+PostgreSQL,基本历史持久化
- ✅ 里程碑3——嵌入和矢量存储:Azure OpenAI集成,混合检索
Beta阶段(里程碑4-9)
- ✅ 里程碑4——本体论v1:JSON-LD上下文、基类、工具模式映射
- 里程碑4.5——第3阶段规则提取引擎:
- 规范规则ID保留 - 具有优先级的嵌套异常检测 - 矩阵规则提取 - 位置参考验证 - 跨模块参考分辨率
- 里程碑4.6——空间插件架构:
- ISpatialPlugin界面设计 - ASL十六进制插件 - 基于D&D网格的插件 - 通用回退插件
- 里程碑4.7——动态状态管理:
- 参考数据集成(JSON文档) - 具有修改模式的预先计算服务水平 - 机组运动跟踪 - 地形变化处理
- 里程碑5——计划+先决条件/效果检查:键入ReAct循环,KG验证
- ✅ 里程碑6——知识图谱集成:Cosmos DB Gremlin,上下文扩展
- ✅ 里程碑7——摄入管道:事件驱动的文档处理
- 里程碑7.5——增强文档处理:
- 规则感知分块保持结构 - 位置验证提取示例 - 矩阵表识别
- 里程碑7.6——空间感知搜索:
- 基于位置的查询丰富 - 具有空间上下文的混合搜索 - 交叉引用保存
- ✅ 里程碑8——HTTP传输:可流式传输的HTTP端点,Entra ID身份验证
- 里程碑9——验证框架:
- 规则ID格式检查 - 位置参考验证 - 异常优先级验证 - 模块兼容性测试
1.0发布(里程碑10-13)
- 里程碑10–增强型操作员控制台:
- 具有规范ID的规则浏览器 - 具有当前状态的地图查看器 - 异常跟踪可视化 - 验证仪表板
- 里程碑11——多租户强化:所有组件之间经过验证的隔离
- 里程碑12——可观察性和治理:OTEL跟踪、SHACL验证器
- 里程碑13——包装和1.0版本发布:容器、CI/CD、文档
实施状态
完成
- 带HPK的多租户Cosmos存储
- 在内存Ontology中存储索引
- JSON-LD/RDF导出服务
- 工具模式绑定框架
- 基本验证器和治理
- 核心MCP服务器实现
- PostgreSQL持久层
- Azure AI搜索集成
- 使用SSE的HTTP传输
- 通过Entra ID进行身份验证
进行中(第3阶段)
- 增强的规则提取引擎
- 空间插件架构
- 动态状态管理
- 参考数据集成
- 规范ID保存
- 嵌套异常处理
未开始
- 带有前提条件/效果检查的计划器
- 高级空间推理
- 跨本体映射
未来
- OWL推理集成
- 高级治理规则
- 生产硬化
- 全面的测试覆盖率
______________________________________________________________________
源代码结构
项目依赖关系(.csproj文件)
林博舞者。MCP。核心 (基础库):
- 目标:。净值9.0
- 无外部依赖关系(仅限合同)
- 包括:ISpatialPlugin接口
林博舞者。MCP。插件。海拔高度:
- 依赖关系:核心
- 实现:基于十六进制的空间逻辑
林博舞者。MCP。插件。龙与地下城:
- 依赖关系:核心
- 实现:基于网格的机制
林博舞者。MCP。存储:
- 依赖关系:
- 微软。EntityFrameworkCore 9.0.0 - Npgsql。EntityFrameworkCore。PostgreSQL 9.0.0
- 参考文献:核心
林博舞者。MCP。矢量。Azure搜索:
- 依赖关系:Azure。搜索。文件11.6.0
- 参考文献:核心
林博舞者。MCP。图表。宇宙Gremlin:
- 依赖关系:Gremlin。净值3.7.2
- 参考文献:核心
林博舞者。MCP。McpServer:
- 依赖关系:
- ModelContextProtocol 0.3.0-综述。3 - 所有数据层包 - Serilog。AspNetCore 8.0.1 - OpenTelemetry 软件包
- 参考文献:所有内部项目
林博舞者。MCP。命令行界面:
- 依赖关系:系统。指挥线2.0.0-beta4
- 参考:所有数据层项目
林博舞者。MCP。BlazorConsole:
- 目标:ASP。NET核心9.0
- 参考:所有数据层项目
关键实施文件
第三阶段本体实现:
OntologyExtractionEngine.cs-使用规范ID增强提取PatternExtractor.cs-嵌套异常和矩阵规则检测ReferenceDataManager.cs-JSON文档集成SpatialPluginRegistry.cs-插件发现和加载
增强型节点类型:
RuleNode.cs-保留规范IDExceptionNode.cs-优先级权重MatrixRuleNode.cs-多维表格HexState.cs-动态地形跟踪
MCP工具:
OntologyExtractionTool.cs-系统类型参数SpatialQueryTool.cs-插件感知查询ReferenceDataTool.cs-板卡数据加载StateManagementTool.cs-动态修改
基础设施:
SearchIndexBuilder.cs-Azure AI搜索索引管理GremlinClientFactory.cs-Cosmos Gremlin连接池AuthExtensions.cs-Entra ID身份验证设置HttpTransport.cs-服务器发送事件实现
______________________________________________________________________
实现注意事项
安全考虑
- 所有操作都需要租户范围
- 明确禁止跨租户查询
- 通过Entra ID进行JWT身份验证
- 基于角色的访问控制(阅读器/操作员)
- 不受信任域的插件沙盒
性能优化
- 预先计算的空间数据(LOS)
- 动态叠加图案
- 规范ID索引
- 插件特定缓存
- 延迟引用数据加载
故障模式和弹性
- LLM节流断路器
- 对BM25搜索的优雅降级
- 对Cosmos 429进行回退重试
- 服务巴士死信队列
- 插件回退到通用
未来的考虑因素
- 本地编排采用.NET Aspire
- 图形引擎评估(Cosmos Gremlin vs Neo4j)
- RDF/OWL推理集成
- 高级规划器(DAG/图执行器)
- 多板空间构成
______________________________________________________________________
*本文件代表完整的LimboDancer。MCP系统设计,将架构愿景与具体实施细节相结合,包括第3阶段的增强。源代码是所有实现细节的权威参考。*
