LPC验证调试工具

FluffOS MCP Server是一个为LPC开发提供实际驱动级验证和调试的工具,通过暴露FluffOS的CLI工具(如symbol和lpcc)给AI助手,使它们能够验证LPC代码并检查编译后的字节码。

  • by gesslar
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 gesslar/fluffos-mcp

使用说明

FluffOS MCP服务器

LPC开发的真实驱动程序验证 -一个MCP服务器,它封装了FluffOS CLI工具,以提供实际的驱动程序级验证和调试。

此MCP服务器公开了FluffOS强大的CLI实用程序(symbol 和 lpcc)AI助手,使他们能够根据实际驱动程序验证LPC代码并检查编译的字节码。

这能带来什么

AI助手现在可以:

  • 使用实际的FluffOS驱动程序验证LPC文件(不仅仅是语法检查)
  • 捕捉静态分析遗漏的运行时编译问题
  • 检查编译的字节码以调试性能或行为问题
  • 了解LPC代码的实际编译方式

工具

  • fluffos_validate:使用FluffOS验证LPC文件 symbol 工具
  • fluffos_disassemble:使用以下命令将LPC分解为字节码 lpcc
  • fluffos_doc_lookup:在FluffOS文档中搜索efun、应用程序、概念等。
  • fluffos_eval:根据以下内容评估LPC语句 活着 驾驶员使用 lpcshell (选择加入)

fluffos_validate, fluffos_disassemble,以及 fluffos_doc_lookup 是 只读 和 幂等 --它们从不修改文件、驱动程序或正在运行的MUD,并且代理可以安全地自动调用。

fluffos_eval 是 不 只读:它启动完整的运行时 执行 您提供的LPC,因此它可能会产生副作用(写入文件、更改守护进程/数据库状态、触发事件)。仅在以下情况下注册 FLUFFOS_ENABLE_EVAL 已设置,不应在不受信任的输入上自动调用。

何时使用哪种工具

我想… 使用
检查文件是否按照驱动程序编译 fluffos_validate
查看函数编译为的字节码 fluffos_disassemble
调查模式缓慢的原因 fluffos_disassemble
查找efun签名或应用语义 fluffos_doc_lookup
找出是否存在efun 这 驱动程序构建 fluffos_validate 在一个调用它的文件上
预提交/预部署健全性检查 fluffos_validate
查看表达式的实际运行时值/行为 fluffos_eval
以交互方式再现运行时错误 fluffos_eval

fluffos_doc_lookup 仅在服务器启动时注册 FLUFFOS_DOCS_DIR 集。 fluffos_eval 仅在以下情况下注册 FLUFFOS_ENABLE_EVAL 已设置。

先决条件

1.FluffOS安装

您需要使用可用的CLI工具安装FluffOS。应存在以下二进制文件:

  • symbol -用于验证LPC文件
  • lpcc -用于反汇编为字节码
  • lpcshell -(可选)用于 fluffos_eval;仅在以下情况下需要 FLUFFOS_ENABLE_EVAL 已设置

2.Node.js

需要Node.js 16+:

node --version  # Should be v16.0.0 or higher

安装

您可以通过npm安装服务器:

npm install -g @gesslar/fluffos-mcp

或者克隆并在本地安装:

git clone https://github.com/gesslar/fluffos-mcp.git
cd fluffos-mcp
npm install

配置

服务器需要以下环境变量:

  • FLUFFOS_BIN_DIR -包含FluffOS二进制文件的目录(symbol, lpcc,并且可选 lpcshell)
  • MUD_RUNTIME_CONFIG_FILE -FluffOS配置文件的路径(例如。, /mud/lib/etc/config.test)
  • FLUFFOS_DOCS_DIR -(可选)包含FluffOS文档的目录,用于文档查找
  • FLUFFOS_ENABLE_EVAL -(可选)设置为 true (或 1/yes/on(不区分大小写)注册 fluffos_eval,它通过以下方式执行实时LPC lpcshell默认情况下为.Off--任何其他值,包括 false/0 或者将其设置为未设置,会使工具保持禁用状态,因为它不是只读的。
  • FLUFFOS_EVAL_TIMEOUT_MS -(可选)单个时钟的时钟上限(毫秒) fluffos_eval 跑之前 lpcshell 孩子被杀了。默认为 30000 (30s);忽略,除非 fluffos_eval 已启用。
  • FLUFFOS_EVAL_MAX_BYTES -(可选) fluffos_eval code 有效载荷;在将任何内容写入磁盘之前,较大的请求都会被拒绝。默认为 10485760 (10 MiB);忽略,除非 fluffos_eval 已启用。
  • FLUFFOS_EVAL_MAX_CONCURRENT -(可选)最大数量 fluffos_eval 允许立即飞行;进一步的请求将被拒绝,直到有空闲的插槽。每次跑步都会产生一个完整的 lpcshell 驱动程序启动,因此这限制了临时存储的使用和驱动程序的加载。默认为 4除非被忽略 fluffos_eval 已启用。

不同AI工具的设置

翘曲(终端)

添加到曲速MCP配置中:

位置:设置→ AI → 模型上下文协议

如果通过npm安装:

{
  "fluffos": {
    "command": "npx",
    "args": ["@gesslar/fluffos-mcp"],
    "env": {
      "FLUFFOS_BIN_DIR": "/path/to/fluffos/bin",
      "MUD_RUNTIME_CONFIG_FILE": "/mud/lib/etc/config.test",
      "FLUFFOS_DOCS_DIR": "/path/to/fluffos/docs"
    }
  }
}

如果在本地克隆:

{
  "fluffos": {
    "command": "node",
    "args": ["/absolute/path/to/fluffos-mcp/index.js"],
    "env": {
      "FLUFFOS_BIN_DIR": "/path/to/fluffos/bin",
      "MUD_RUNTIME_CONFIG_FILE": "/mud/lib/etc/config.test",
      "FLUFFOS_DOCS_DIR": "/path/to/fluffos/docs"
    }
  }
}

重要:使用绝对路径!

添加配置后重新启动Warp。

Claude 桌面版

增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或同等版本:

如果通过npm安装:

{
  "mcpServers": {
    "fluffos": {
      "command": "npx",
      "args": ["@gesslar/fluffos-mcp"],
      "env": {
        "FLUFFOS_BIN_DIR": "/path/to/fluffos/bin",
        "MUD_RUNTIME_CONFIG_FILE": "/mud/lib/etc/config.test",
        "FLUFFOS_DOCS_DIR": "/path/to/fluffos/docs"
      }
    }
  }
}

如果在本地克隆:

{
  "mcpServers": {
    "fluffos": {
      "command": "node",
      "args": ["/absolute/path/to/fluffos-mcp/index.js"],
      "env": {
        "FLUFFOS_BIN_DIR": "/path/to/fluffos/bin",
        "MUD_RUNTIME_CONFIG_FILE": "/mud/lib/etc/config.test",
        "FLUFFOS_DOCS_DIR": "/path/to/fluffos/docs"
      }
    }
  }
}

配置后重新启动Claude Desktop。

启用实时LPC评估(可选)

上面的示例仅注册了三个只读工具。也要揭露 fluffos_eval --这让司机和 执行 LPC,所以它可以 副作用-添加 FLUFFOS_ENABLE_EVAL 到 env 旁边的块 其他:

"env": {
  "FLUFFOS_BIN_DIR": "/path/to/fluffos/bin",
  "MUD_RUNTIME_CONFIG_FILE": "/mud/lib/etc/config.test",
  "FLUFFOS_ENABLE_EVAL": "true"
}

接受的“on”值为 true, 1, yes,或 on 不区分大小写任何 其他值(或完全省略变量)将禁用该工具。 这 lpcshell 二进制文件必须存在于 FLUFFOS_BIN_DIR 为了使其发挥作用。

使用示例

配置后,您可以询问您的AI助手:

“使用实际驱动程序验证此LPC文件” → AI使用 fluffos_validate 运行 symbol

“显示此函数的字节码” → AI使用 fluffos_disassemble 运行 lpcc

“为什么这段代码很慢?” → AI检查拆卸以识别低效模式

“call_out的语法是什么?” → AI使用 fluffos_doc_lookup 搜索文档

“我如何使用映射?” → AI搜索文档以查找与地图相关的文档

运作原理

AI Assistant
    ↓ (natural language)
  MCP Protocol
    ↓ (tool calls: fluffos_validate, fluffos_disassemble)
  This Server
    ↓ (spawns: symbol, lpcc)
  FluffOS CLI Tools
    ↓ (validates/compiles with actual driver)
  Your LPC Code
  1. AI助手发送MCP工具请求
  2. 服务器生成适当的FluffOS CLI工具
  3. CLI工具使用驱动程序进行验证/反汇编
  4. 服务器将结果返回给AI
  5. AI在驱动程序级别理解你的代码,可以参考FluffOS文档来解释函数是如何工作的!

实现细节

建筑学

服务器是使用 模型上下文协议SDK 并遵循基于类的架构:

  • FluffOSMCPServer类:主服务器实现
  • MCP SDK服务器:通过stdio处理协议通信
  • 子进程产卵:执行FluffOS CLI工具
  • 路径规范化:将绝对路径转换为mudlib相对路径

路径处理

服务器智能地处理文件路径:

  1. 作语法分析 mudlib directory 从FluffOS配置文件
  2. 将绝对路径标准化为mudlib相对路径
  3. 将规范化路径传递给FluffOS工具(需要相对路径)

例子: /mud/ox/lib/std/object.c → std/object.c

工具实施

fluffos_validate:

  • 生成物 symbol <config> <file> 从配置目录
  • 捕获stdout/stderr
  • 返回编译错误的成功/失败
  • 退出代码0=验证通过

fluffos_disassemble:

  • 生成物 lpcc <config> <file> 从配置目录
  • 返回完整的字节码反汇编
  • 包括函数表、字符串和指令级详细信息

fluffos_doc_lookup (可选):

  • 跑动 scripts/search_docs.sh 辅助脚本
  • 用途 grep 搜索markdown文件
  • 仅在以下情况下可用 FLUFFOS_DOCS_DIR 已设置

fluffos_eval (可选):

  • 将提交的LPC语句写入临时脚本文件,然后生成 lpcshell <config> <tmpfile>
  • 临时文件是一个普通的操作系统文件(由读取 lpcshell 直接,而不是通过驱动程序的文件系统),也是如此 不 需要住在穆德利布监狱里——只有LPC的声明才能在监狱里执行
  • 启动整个运行时并执行代码;捕获stdout/stderr和退出代码,然后删除临时文件
  • 仅在以下情况下可用 FLUFFOS_ENABLE_EVAL 已设置

错误处理

  • 启动时验证所需的环境变量
  • 通过MCP返回结构化错误响应
  • 优雅地处理丢失的配置或工具执行失败
  • 报告非零退出代码,但不会使服务器崩溃

补充工具

此服务器配合使用效果很好:

  • lpc mcp -用于代码智能的语言服务器集成
  • 具有jlchmura LPC扩展的VS码 -IDE支持

将它们一起使用,获得完整的LPC开发体验!

贡献

PR欢迎!这是一个简单的包装器,可以用更多的FluffOS工具进行扩展。

鸣谢

许可证

@gesslar/fluffos-mcp 根据 0BSD.

此软件包包含或依赖于第三方组件 许可证:

依赖关系 许可证
@gesslar/toolkit 0BSD
@模型上下文协议/sdk 麻省理工学院
佐德 麻省理工学院