使用说明
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 - <<'NODE' const { lnmp } = require('./dist/bindings/lnmp.js'); (async () => { 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告知我们,这些模块或工具应在此处记录。黑客快乐!