LNMP MCP工作区
此目录包含LNMP协议和LNMP的每个管理/控制平面组件 模型上下文协议(MCP)适配器 这将LNMP工具暴露给LLM代理。这棵树的设计是为了在内部工作 lnmp-protocol monorepo和作为独立 lnmplang/lnmp-mcp 存储库通过 git subtree.
tools/mcp/
├── adapter/ # TypeScript MCP provider + WASM bindings
│ ├── src/ # MCP tools, bindings, CLI + HTTP shim
│ ├── dist/ # Compiled JS (generated)
│ ├── wasm/ # Published WASM artifacts
│ ├── test/ # Jest suites for every MCP tool
│ └── rust/ # Rust crate compiled to wasm32-unknown-unknown
├── ARCHITECTURE.md # In-depth engineering spec for the adapter
├── README.md # This file
└── pyproject.toml # Python helper package scaffold (future MCP helpers)MCP适配器提供什么
适配器将完整的LNMP元机箱表面作为MCP工具公开,因此代理可以解析、编码、消毒、封装、路由、传输和分析LNMP记录,而无需直接链接Rust。关键工具系列:
| 模块 | 工具(MCP名称) | 亮点 |
|---|---|---|
| 核心编解码器 | lnmp.parse, lnmp.encode, lnmp.decodeBinary, lnmp.encodeBinary, lnmp.schema.describe, lnmp.debug.explain, lnmp.sanitize | 严格/宽松解析、二进制编解码器、模式检查、消毒剂 |
| 信封和网 | lnmp.envelope.wrap, lnmp.network.decide, lnmp.network.importance | 操作元数据+路由启发式 |
| 运输 | lnmp.transport.toHttp, lnmp.transport.fromHttp | X-LNMP标头+W3C跟踪桥接 |
| 嵌入 | lnmp.embedding.computeDelta, lnmp.embedding.applyDelta | 增量矢量更新,压缩率为80-95% |
| 空间 | lnmp.spatial.encode | 位置流的快照/增量压缩 |
| 上下文评分 | lnmp.context.score | LLM上下文的新鲜度+重要性评分 |
每个工具都有一个TypeScript包装器(adapter/src/tools/*.ts)加上Jest报道(adapter/test/tools/*.test.ts).
入门指南
- 安装依赖项
cd tools/mcp/adapter
npm install- 构建Rust WASM一次
cd rust
rustup target add wasm32-unknown-unknown
wasm-pack build --target nodejs --out-dir ../src/wasm --release
cd ..这将填充 adapter/src/wasm 和 adapter/wasm 和 lnmp_wasm_bg.wasm 加上JS胶水。
- 编译TypeScript适配器
npm run build- 运行MCP测试套件
npm test这将对每个工具以及集成HTTP线束执行单元测试。
- 尝试HTTP垫片(可用于快速手动检查)
node dist/http_server.js
# or npm run start:server端点包括 /parse, /encbin, /decbin, /schema, /explain, /sanitize,以及用于切换严格解析的管理端点。
- 直接调用工具
node - {
await lnmp.initLnmpWasm({ path: __dirname + '/dist/wasm/lnmp_wasm_bg.wasm' }).catch(() => {});
await lnmp.ready();
const parsed = lnmp.parse('F7=1\nF12=14532');
console.log(parsed);
})();
NODE开发适配器
- 锈蚀变化 住在
adapter/rust/src/lib.rs任何更改都需要通过以下方式重建WASMwasm-pack(见上述步骤2)。已编译的输出(src/wasm,wasm,dist/wasm)包装前必须刷新。 - TypeScript工具 在
adapter/src/tools。在此处添加新工具,更新adapter/src/server.ts,并创建匹配的Jest测试。 - 绑定:如果WASM ABI发生变化,请更新
adapter/src/bindings/lnmp.ts因此,新的出口产品浮出水面。 - 测试:
npm test经营所有套房;npm run test:unit或npm run test:integration可用于更精细的粒度。 - 包装:
npm pack(或npm publish)依赖于prepack脚本,它重建TypeScript,并(默认情况下)提醒您复制WASM工件。如果WASM已经构建/复制,包装将自动包含它。
与独立回购同步
monorepo版本是权威的。使用 git subtree 保持 lnmplang/lnmp-mcp 同步:
- 从单仓库推送到独立仓库
git remote add lnmp-mcp https://github.com/lnmplang/lnmp-mcp.git # once
git subtree push --prefix=tools/mcp lnmp-mcp main- 将独立更改拉回到monorepo中
git subtree pull --prefix=tools/mcp lnmp-mcp main --squash避免签入生成的目录(adapter/dist, adapter/node_modules, adapter/coverage, adapter/rust/target, adapter/rust/pkg).已出版的tarball已经收录了 dist 和 wasm 这样最终用户就可以在没有Rust的情况下安装包。
常见问题解答
- 如何更改严格解析默认值与宽松解析默认值? 使用
lnmp.setParseFallback(boolean)助手或HTTP管理端点(/admin/setParseFallback).单个工具调用可以通过{ strict: true }或{ mode: "strict" }. - 我需要安装Rust才能使用适配器吗? 不适用于消费者(预构建的WASM在
wasm/).对开发人员进行更改时是adapter/rust. - 这个可以在Node之外运行吗? 适配器以Node(MCP SDK)为目标。浏览器/Bun支持是可能的,但需要不同的WASM加载器,尚未经过测试。
有关更深入的架构细节(状态图、WASM胶水、MCP清单),请阅读 ARCHITECTURE.md。如果您添加了新的LNMP模块或MCP工具,请通过问题/PR告知我们,这些模块或工具应在此处记录。黑客快乐!
