Common Lisp MCP框架

一个用于Common Lisp的MCP服务器和客户端框架,支持JSON-RPC 2.0协议,提供工具注册和调用功能。

  • by quasi
  • Common Lisp
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 quasi/cl-mcp

使用说明

cl mcp

主控程序 服务器 和 客户端 Common Lisp框架。

服务器:将任何CL函数作为MCP工具公开-- make-server → register-tool → run-server.

客户:连接到任何MCP服务器子流程、列表工具、调用工具-- make-client → connect → list-tools / call-tool.

框架处理JSON-RPC 2.0成帧、NDJSON stdio传输、MCP协议协商、工具验证、线程和错误恢复。消费者代码是纯粹的业务逻辑。

协议:MCP 2025-06-18(服务器)/2025-11-25(客户端)| 语言:通用Lisp(SBCL)| 许可证:MIT

为您的代理提供开发和集成技能。

快速入门--服务器

sbcl --load cl-mcp.asd --eval "(ql:quickload :cl-mcp)"
(defvar *server* (cl-mcp:make-server :name "my-server" :version "1.0.0"))
(cl-mcp:register-tool *server* "ping"
  :description "Returns pong"
  :schema '(("type" . "object"))
  :handler (lambda (args) (declare (ignore args)) "pong"))
(cl-mcp:run-server *server*)

快速入门--客户端

sbcl --load cl-mcp.asd --eval "(ql:quickload :cl-mcp/client)"
(cl-mcp.client:with-mcp-client (client
    :name "my-agent"
    :command '("npx" "@modelcontextprotocol/server-filesystem" "/tmp"))
  (let ((tools (cl-mcp.client:list-tools client)))
    (format t "Available tools: ~{~a~^, ~}~%"
            (mapcar (lambda (t) (getf t :name)) tools)))
  (let ((result (cl-mcp.client:call-tool client "read_file"
                                         '(("path" . "/tmp/hello.txt")))))
    (print (getf result :content))))

文档

文档 受众 目的
.claude/技能/整合/SKILL.md 消费者 在项目中使用cl-mcp(服务器+客户端)
.clade/skills/dev/SKILL.md 贡献者 致力于cl mcp

运行测试

# Server tests
sbcl --load cl-mcp.asd \
     --eval "(ql:quickload :cl-mcp/tests)" \
     --eval "(asdf:test-system :cl-mcp)"

# Client tests
sbcl --load cl-mcp.asd \
     --eval "(ql:quickload :cl-mcp/client-tests)" \
     --eval "(asdf:test-system :cl-mcp/client)"

作者

Abhijit Rao/准/准实验室