使用说明
CL-TRON-MCP
cl-tron-mcp 是用于Common Lisp开发的模型上下文协议(MCP)服务器。它启动或连接到实时Swank会话,并允许MCP客户端检查对象、读取调试器状态、评估代码、热重新加载修复程序、调用重启,并在同一Lisp映像中继续工作。
Tron是什么
Tron是围绕Common Lisp工作流构建的,这对代理编程最为重要:
- 保持一个Lisp会话运行,
- 遇到错误,
- 检查烟囱和当地人,
- 编译修复程序而不重新启动,
- 继续或从调试器重新启动。
Tron经过测试,可在SBCL或ECL下运行。
一张图片中的建筑
SBCL + Swank <----> Tron (MCP server) <----> MCP client / AI agent
your code tools/resources Cursor, Copilot, etc.
debugger state approval flow
loaded systems stdio or HTTP transport
快速开始
1.使用Quicklisp安装
最简单的方法是将仓库克隆到Quicklisp本地项目中:
git clone https://github.com/Alba-Intelligence/cl-tron-mcp.git ~/quicklisp/local-projects/cl-tron-mcp
cd ~/quicklisp/local-projects/cl-tron-mcp
如果您将repo放在其他地方,请确保Quicklisp仍然可以通过将目录推送到 ql:*local-project-directories* 或者通过符号链接到 ~/quicklisp/local-projects/.
2.预加载系统一次
这避免了SBCL首次编译项目时可能发生的第一个客户端启动超时:
sbcl --non-interactive \
--eval '(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))' \
--eval '(ql:quickload :cl-tron-mcp :silent t)'
3.启动Tron
最简单的方法是从存储库根开始:
./start-mcp.sh # long-running HTTP/combined mode
./start-mcp.sh --stdio-only # for stdio-based MCP clients
./start-mcp.sh --http-only # for http-based MCP clients
./start-mcp.sh --use-sbcl # choose your weapon of choice
./start-mcp.sh --use-ecl
start-mcp.sh 是规范运行时入口点。 run-mcp.sh 仅作为可选的便利包装存在 devenv 用户。
对于长时间运行的模式, Ctrl+C 被拦截并干净地停止发射器; ./start-mcp.sh --stop 同时关闭正在运行的实例。
4.开始Swank会话
如果没有Swank服务器正在运行,则会自动启动一个。否则,一个已经在运行,Tron将只启动MCP服务器。
在Lisp映像中,您希望代理使用:
(ql:quickload :swank)
(swank:create-server :port 4006 :dont-close t)
5.验证MCP是否启动
# Assuming that the MCP was actually started on port 4006
curl -X POST http://127.0.0.1:4006/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
您应该收到一个JSON-RPC响应,显示所有可用的命令/工具。
6.将Tron连接到Swank
MCP服务器运行后,使用以下任一方法:
repl_connect对于更高级别的统一工作流,或swank_connect用于低级Swank访问。
示例工具调用:
{
"name": "repl_connect",
"arguments": { "port": 4006 }
}
工具表面
当前注册表公开 91工具 穿过 14个类别,包括:
- 调试器工具(
debugger_*,breakpoint_*,step_frame) - 统一的REPL工具(
repl_*) - 原始Swank工具(
swank_*) - 热装工具(
code_compile_string,reload_system) - 检查、分析、跟踪、监视、日志记录、外部参照、安全性和托管Swank流程工具
看 docs/tools/index.md 完整的每种工具参考 docs/code-reference.md 对于源代码级映射。
推荐工作流程
对于交互式调试和热重新加载:
- 用Swank启动目标Lisp映像,
- 启动Tron,
- 联系
repl_connect, - 使用
repl_eval,repl_backtrace,repl_frame_locals,repl_get_restarts,以及repl_compile, - 继续
repl_continue或调用重启。
如果您需要从Tron本身启动一次性SBCL会话,请使用托管流程工具:
swank_launchswank_process_listswank_process_statusswank_kill
文档地图
| 需要 | 阅读 |
|---|---|
| 启动/安装/运行Tron | docs/starting-the-mcp.md |
| 了解架构 | docs/architecture.md |
| 浏览完整的工具目录 | docs/tools/index.md |
| 了解源代码布局 | docs/code-reference.md |
| 贡献变革 | 贡献.md |
| 在代码库中工作 | docs/DEVELOPERS.md |
| 从代理处消耗MCP | 代理商.md |
可选的Nix/devenv支持
该项目仍在运输 devenv.nix 适用于希望预装SBCL、ECL和辅助工具的可重复shell的贡献者。现在这是一个 可选开发环境,而不是主要的安装故事。
当前警告
- 最受支持的调试器工作流程是 SBCL+Swank.
- 当没有连接REPL时,本地热重新加载回退非常有用,但完整的调试器/重启工作流需要一个实时Swank会话。
- 有些功能是特定于实现的;医生会在相关的地方打电话给他们。
测试
使用以下命令运行现有套件:
(asdf:test-system :cl-tron-mcp)
或者从外壳:
cd ~/quicklisp/local-projects/cl-tron-mcp
sbcl --non-interactive \
--eval '(load (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))' \
--eval '(pushnew (truename ".") ql:*local-project-directories* :test (function equal))' \
--eval '(asdf:test-system :cl-tron-mcp)'