Clojure MCP 将AI模型连接到您的Clojure开发环境,通过大型语言模型(LLMs)提供一个卓越的REPL驱动开发体验。
状态更新(2025年11月14日):近期Claude Code与Sonnet 4.5的改进减少了其对结构编辑的需求。
如果您正在使用 Claude Code(我强烈推荐您这样做),您应该从 clojure-mcp-light 开始。
如果您不使用 Claude Code,我还是强烈建议您使用 ClojureMCP。
ClojureMCP 提供了将LLMs转化为以下功能的能力:
仅靠Clojure MCP,您就可以将一个LLM变成一个强大的Clojure REPL和编码助手。
LLMs在Clojure REPL中表现出色:当前的LLMs无疑是出色的Clojure REPL助手,它们能够快速有效地进行评估,比您想象的要好得多。询问任何体验过的人,他们都会告诉您,LLMs在Clojure REPL中的表现远远超出了他们的预期。此外,我们必须记住,临时代码的形式和可维护性并不重要。
流畅的Clojure编辑:历史上,许多LLMs在处理括号方面遇到了困难。Clojure MCP采取了一种不同的编辑方法,显著提高了编辑接受率。Clojure MCP会检查传入的代码,如果可能的话修复括号,使用clj-rewrite应用语法感知补丁,然后检查并格式化最终结果。这是一个强大的编辑流水线,在需要支持的模型上编辑Clojure代码时表现得非常好。
这两个特性加上一套其他理解Clojure的工具,创造了一个全新的独特LLM开发体验,您至少应该尝试一次以了解它有多好。
Clojure开发者可能会相信这样一个故事:现代LLMs是在主流编程语言的大量代码上训练的,因此当处理像Clojure这样的小众语言时,LLMs的表现不佳。我要告诉你的是,这并不是真的。
LLMs确实可以阅读和编写Clojure。然而,我们的秘密武器是REPL,以及它如何为LLMs提供一个快速聚焦的反馈循环来验证和细化代码。
在我看来,Clojure是一个非常适合LLM辅助开发的语言。它只需要一点桥梁……而这正是我试图通过ClojureMCP创建的东西。
这个项目实现了一个MCP服务器,将AI模型连接到Clojure nREPL,并提供了专门的Clojure编辑工具,从而创造出独特的Clojure开发体验。
Clojure MCP提供了一组类似于Claude Code使用的工具,因此您可以使用它来处理Clojure 而无需其他工具。只需添加一个LLM循环或客户端,ClojureMCP就提供了一系列工具,让您能够有效地处理Clojure代码。
对于Clojurists来说,一个由LLM辅助的REPL是杀手级应用。
有了REPL,LLMs可以:
此外,在某些LLM客户端(包括Claude Desktop)中,您可以控制模型在任何时候可用的工具,因此您可以轻松地移除编辑文件的能力,并限制模型仅使用REPL工具,强制使用REPL。
注意:这些REPL能力在所有模型版本中都保持有价值,即使编辑能力随着模型如Sonnet 4.5的改进而提高。
这些工具设计用于最新版本的LLM模型。为了获得最佳的S表达式编辑和Clojure特定工具体验,我们推荐使用来自以下供应商的最新模型:
我个人几乎使用最新的Claude模型做几乎所有的事情,并且订阅了Anthropic的Max。我从中获得的价值远超过我支付的费用。
ClojureMCP可以与几乎任何LLM客户端一起使用,例如Claude Desktop、Claude Code等。
对于Claude Code用户:我推荐使用clojure-mcp-light方法,该方法提供了最小化的集成,针对Claude Code进行了优化。
对于Claude Desktop用户:ClojureMCP与Claude Desktop配合得非常好,在这里您可以更清楚地看到工具输出,了解工具是如何协同工作的,使LLM能够作为有效的Clojure编码助手。
对于其他LLM客户端:本文档中描述的完整的ClojureMCP工具集特别有益于使用其他LLM模型或客户端,这些客户端可以从专门的编辑工具中受益。
如果这是您第一次尝试使用LLM作为代码助手,我仍然推荐首先尝试Claude Desktop。Claude Desktop提供了一个透明的LLM工具循环,您可以查看LLM正在做什么,没有任何隐藏的内容。
本指南将逐步引导您完成设置过程。
7888(您可以使用任何端口)~/.clojure/deps.edn中添加clojure-mcpclojure-mcp设置为MCP服务器.gitignore。注意:此设置验证所有组件是否协同工作。确认基本设置有效后,您可以自定义特定配置细节(如端口号)。
在您希望获得AI协助的Clojure项目中,您需要确保可以在端口7888(您可以使用任何端口)上启动nREPL服务器。
在项目deps.edn中添加一个:nrepl别名:
{
;; ... 您的项目依赖项 ...
:aliases {
;; AI连接的nREPL服务器
;; 包含所有您希望在开发中可用的路径
:nrepl {:extra-paths ["test"]
:extra-deps {nrepl/nrepl {:mvn/version "1.3.1"}}
:main-opts ["-m" "nrepl.cmdline" "--port" "7888"]}}}
验证配置:
$ clojure -M:nrepl
您应该看到nREPL服务器在端口7888上启动。
启动nREPL服务器:
$ lein repl :headless :port 7888
在~/.clojure/deps.edn中将clojure-mcp作为别名添加:
{:aliases
{:mcp
{:deps {org.slf4j/slf4j-nop {:mvn/version "2.0.16"} ;; 用于stdio服务器所需
com.bhauman/clojure-mcp {:git/url "https://github.com/bhauman/clojure-mcp.git"
:git/tag "v0.1.12"
:git/sha "79b9d5a"}}
:exec-fn clojure-mcp.main/start-mcp-server
:exec-args {:port 7888}}}}
查找最新版本:访问[https://github.com/bhauman/clojure-mcp/commits/main](https://github.com/bhauman/clojure-m.