LNMP协议适配器

LNMP MCP适配器是一个为LLM代理提供LNMP协议工具链的中间件,支持解析、编码、传输和上下文评分等核心功能,适用于需要高效处理LNMP记录的场景。

  • by lnmplang
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 lnmplang/lnmp-mcp

使用说明

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).

入门指南

  1. 安装依赖项

    cd tools/mcp/adapter
    npm install
    
  2. 构建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胶水。

  3. 编译TypeScript适配器

    npm run build
    
  4. 运行MCP测试套件

    npm test
    

    这将对每个工具以及集成HTTP线束执行单元测试。

  5. 尝试HTTP垫片(可用于快速手动检查)

    node dist/http_server.js
    # or npm run start:server
    

    端点包括 /parse, /encbin, /decbin, /schema, /explain, /sanitize,以及用于切换严格解析的管理端点。

  6. 直接调用工具

    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任何更改都需要通过以下方式重建WASM wasm-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告知我们,这些模块或工具应在此处记录。黑客快乐!