clojure-mcp
clojure-mcp 是一款专为 Clojure 开发者设计的 AI 辅助开发工具,它作为 MCP(模型上下文协议)服务器,将大语言模型(如 Claude Code 或 Claude Desktop)与您的 Clojure 项目无缝连接。
在 Clojure 开发中,繁琐的括号匹配和严格的格式要求常让通用 AI 助手“水土不服”,导致代码生成错误或 REPL 执行失败。clojure-mcp 正是为了解决这一痛点而生。它不仅提供了稳定的 REPL 连接功能,能在代码求值前自动修复分隔符错误,还集成了 parinfer、cljfmt 等专业库,实现了对 Clojure 代码结构的智能感知与编辑,确保生成的代码符合语言规范。
该工具特别适合使用 Clojure 进行后端开发、数据科学或函数式编程探索的软件工程师。无论是习惯命令行交互的极客,还是偏好桌面聊天界面的开发者,都能从中受益。其独特的技术亮点在于“结构化编辑”能力:当传统基于文本的查找替换失效时,它能依据代码的语法结构精准定位并修改内容,大幅提升了 AI 辅助编码的可靠性。通过简单的安装配置,clojure-mcp 即可让您的 AI 助手真正“懂”Clojure,从而显著提升开发效率与体验。
使用场景
一位 Clojure 开发者正试图让 AI 助手修复一个因括号嵌套错误导致运行时崩溃的复杂数据处理函数。
没有 clojure-mcp 时
- 括号地狱难以逾越:AI 生成的代码经常丢失或错配括号,导致整个文件语法损坏,开发者必须手动逐行检查平衡性。
- REPL 交互断裂:AI 无法直接连接本地 REPL 验证代码,只能盲目生成片段,开发者需频繁切换窗口手动复制粘贴测试。
- 格式化混乱:自动修复往往破坏 Clojure 特有的缩进风格(如
cljfmt规则),产生大量无意义的代码差异噪音。 - 调试效率低下:当 AI 的查找替换策略失败时(例如匹配字符串不精确),缺乏结构性编辑能力来精准定位并重写特定代码形式(Form)。
使用 clojure-mcp 后
- 智能括号修复:clojure-mcp 内置
parinfer和分隔符修复机制,确保 AI 输出的每一行代码括号自动平衡,从源头消除语法错误。 - 无缝 REPL 驱动开发:工具直接将 AI 连接到本地 REPL,允许模型实时评估表达式并获取反馈,实现“编写 - 运行 - 修正”的闭环。
- 原生格式感知:集成
cljfmt和clj-rewrite,确保所有代码修改自动符合 Clojure 社区标准格式,保持代码库整洁一致。 - 结构化精准编辑:即使常规文本匹配失败,clojure-mcp 也能通过识别代码形式(Form)的类型和名称进行结构性重写,大幅提升修复成功率。
clojure-mcp 将 AI 从单纯的文本生成器升级为懂 Clojure 语法的结对编程伙伴,彻底释放了 REPL 驱动开发的潜力。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
Clojure MCP:基于 REPL 的 AI 辅助开发
ClojureMCP 是一个用于 Clojure 的 MCP 服务器!
目录
- 什么是 ClojureMCP?
- 如何使用它?
- 主要特性
- 帮助与社区资源
- 📋 安装
- CLI 助手
- Claude Desktop
- LLM API 密钥
- 🧰 可用工具
- 🔧 自定义
- CLI 选项
- ⚙️ 配置
- 📝 许可证
什么是 ClojureMCP?
ClojureMCP 是一个 MCP 服务器,它可以将 LLM 客户端(如 Claude Code 或 Claude Desktop)连接到你的 Clojure 项目。它提供了 REPL 工具和对 Clojure 敏感的编辑工具,旨在可靠地处理 Clojure 的括号和格式化。
根据你使用的 LLM 客户端,ClojureMCP 可以:
- 为桌面聊天应用(如 Claude Desktop)提供一套完整的 Clojure 敏感代码辅助工具;或者
- 为已经具备优秀文件编辑和 Shell 工具的 CLI 助手填补 Clojure 特有的空白(例如 REPL 集成 + Clojure 敏感的编辑功能)。
如何使用它?
- 安装 ClojureMCP(
clojure -Ttools install-latest ...)。 - 在你的 LLM 客户端中将其注册为 MCP 服务器。
如果你使用的是 CLI 助手,通常更倾向于保留 CLI 原生的文件编辑工具,并主要将 ClojureMCP 用于 REPL 集成(以及作为编辑的后备方案)。
如果你使用的是桌面聊天应用,则通常会使用完整的 ClojureMCP 工具链。
主要特性
- Clojure REPL 连接——在评估之前修复分隔符
- Clojure 敏感编辑——使用 parinfer、cljfmt 和 clj-rewrite
- 专为 Clojure 开发优化的工具集
帮助与社区资源
- Clojurians Slack 上的 #ai-assisted-coding 频道 非常活跃,我经常在那里交流。
- ClojureMCP Wiki 包含各种集成和沙箱环境的相关信息。
📋 安装
先决条件
安装 ClojureMCP
使用 Clojure 工具安装程序安装 ClojureMCP:
clojure -Ttools install-latest :lib io.github.bhauman/clojure-mcp :as mcp
这会全局安装 ClojureMCP,使你在任何目录下都可以运行 clojure -Tmcp start。
CLI 助手
CLI 编码助手(Claude Code、Codex、Gemini CLI)已经具备优秀的内联差异编辑和 Shell 工具。
从 clojure-mcp-light 开始——它提供 REPL 集成和分隔符修复功能,同时保留了 CLI 原生的内联差异显示。这对于大多数 Clojure 开发来说都非常合适。
考虑添加 ClojureMCP 并使用 :cli-assist 配置文件,如果你需要:
- 结构化编辑的后备方案——clojure-mcp-light 可以在编辑成功后修复括号,但在查找/替换匹配字符串与代码不一致时无法提供帮助(这种情况虽然不到 5%,但也可能影响 LLM 的判断)。结构化编辑则通过类型和名称来定位表单,从而避免此类问题。
- 一流的 REPL 工具——LLM 更倾向于使用 MCP 工具,而不是 CLI 命令,这可能会导致更频繁地使用 REPL。
将 ClojureMCP 添加到 clojure-mcp-light 中,可以为 CLI 助手提供更强大的 Clojure 开发体验。
使用 :cli-assist 添加 ClojureMCP
# Claude Code
claude mcp add clojure-mcp -- clojure -Tmcp start :config-profile :cli-assist
# OpenAI Codex
codex mcp add clojure-mcp -- clojure -Tmcp start :config-profile :cli-assist
# Google Gemini CLI
gemini mcp add clojure-mcp clojure -Tmcp start :config-profile :cli-assist
启动服务器以检查安装
在你的项目目录中运行:
clojure -Tmcp start :config-profile :cli-assist
你应该会看到类似以下的 JSON-RPC 输出:
{"jsonrpc":"2.0","method":"notifications/tools/list_changed"}
{"jsonrpc":"2.0","method":"notifications/tools/list_changed"}
{"jsonrpc":"2.0","method":"notifications/resources/list_changed"}
{"jsonrpc":"2.0","method":"notifications/prompts/list_changed"}
Claude Desktop
桌面聊天应用(如 Claude Desktop)会在你的项目目录之外启动 MCP 服务器,并且不提供内置的编码工具。在这种环境下,你通常会使用完整的 ClojureMCP 工具链,并将其连接到你项目中正在运行的 nREPL。
ClojureMCP 最初就是为将 Claude Desktop 打造成类似于 Claude Code 的编码助手而开发的,其工具专为 Clojure 编程语言设计,能够高效工作。
在你的项目中启动 nREPL
从你的项目目录中启动 nREPL 服务器。如果你还没有 nREPL 别名或配置,请参阅 doc/nrepl.md。
配置 Claude Desktop
选择最有可能读取你的环境配置的 Shell 可执行文件:
如果你使用的是 Bash,请找到明确的 bash 可执行文件路径:
$ which bash
/opt/homebrew/bin/bash
如果你使用的是 Z Shell,请找到明确的 zsh 可执行文件路径:
$ which zsh
/bin/zsh
现在我们将这个明确的 Shell 路径用于 Claude Desktop 配置中的 command 参数,如下所示。
创建或编辑 ~/Library/Application\ Support/Claude/claude_desktop_config.json 文件:
{
"mcpServers": {
"clojure-mcp": {
"command": "/opt/homebrew/bin/bash",
"args": [
"-c",
"clojure -Tmcp start :not-cwd true :port 7888"
]
}
}
}
:not-cwd true 标志指示 ClojureMCP 不要使用当前的工作目录(对于 Claude Desktop 来说,这并不是你的项目目录)。相反,它会通过 nREPL 连接来发现项目的实际工作目录。
这样就可以采用一种简单的操作模式:先在 7888 端口启动 REPL,然后启动 Claude Desktop,让它自动检测你正在工作的目录。当你想切换到另一个项目时,只需停止当前在 7888 端口运行的 REPL,并在目标项目中重新启动一个在 7888 端口运行的 nREPL 服务器即可。
测试设置
在目标项目中启动 nREPL:
cd /path/to/your/project clojure -M:nrepl你应该 увидеть:
nREPL server started on port 7888...重启 Claude Desktop(配置更改后需要)
验证连接:在 Claude Desktop 中,点击聊天区域的
+按钮。你应该会在菜单中看到“Add from clojure-mcp”。需要注意的是,这可能需要几秒钟才会显示出来。如果出现错误,请参阅故障排除指南。如果已成功连接,请前往在 Claude Desktop 中开始新对话部分。
重要提示:关闭 Claude Desktop 的相关功能
代码执行和文件创建:关闭
代码执行和文件创建提供了与 ClojureMCP 竞争的功能;最好将其关闭。
前往设置 > 功能 > 代码执行和文件创建,并将其切换为关闭状态。
你也可以选择同时关闭Artifacts功能。
其他客户端
有关设置其他 MCP 客户端的信息,请参阅Wiki。
在 Claude Desktop 中开始新对话
一切设置完成后,建议在 Claude 中开始一个新的聊天。
首先要做的是,在与 nREPL 连接的会话中初始化关于 Clojure 项目的上下文。
在 Claude Desktop 中,点击 + 工具,并可选择添加以下内容:
- 资源
PROJECT_SUMMARY.md- (让 LLM 自动生成)见下文 - 资源
Clojure Project Info- 用于检查当前连接的 nREPL 项目 - 资源
LLM_CODE_STYLE.md- 包含你的个人编码风格说明(将本仓库中的文件复制到项目根目录) - 提示词
clojure_repl_system_prompt- 编码指导说明,参考了 Claude Code 的部分内容
然后开始聊天。
我建议先提出一个问题,再与 LLM 互动设计解决方案。你可以要求 Claude “提供一个方案供我审查”。
稍作迭代后,可以:
A. 让 LLM 编写代码并在 REPL 中验证该想法。
不要低估 LLM 使用 REPL 的能力!目前的 LLM 在使用 Clojure REPL 方面表现非常出色。
B. 让 LLM 对源代码进行修改,然后在编辑文件后通过 REPL 验证代码。
C. 让 LLM 运行测试。
D. 让 LLM 提交更改。
建立一个分支,并让 LLM 经常提交,以免它朝错误的方向发展而破坏已完成的工作。
项目摘要管理
该项目包含一个工作流程,用于维护适合 LLM 的 PROJECT_SUMMARY.md 文件,帮助助手快速理解代码库结构。
工作原理
创建摘要:要生成或更新 PROJECT_SUMMARY.md 文件,可在
+>clojure-mcp菜单中使用 MCP 提示词create-update-project-summary。此提示词将:- 分析代码库结构
- 记录关键文件、依赖项和可用工具
- 以针对 LLM 助手优化的格式生成全面的文档
使用摘要:当开始与助手的新对话时:
- “Project Summary”资源会自动加载 PROJECT_SUMMARY.md
- 这使助手能够立即了解项目结构
- 助手无需长时间探索即可提供更准确的帮助
保持更新:在完成一次富有成效的会话并添加了新功能或组件后:
- 再次调用
create-update-project-summary提示词 - 系统会用新增功能更新 PROJECT_SUMMARY.md
- 从而确保摘要始终反映最新的开发进展。
- 再次调用
这一工作流程形成了良性循环:每次会话都建立在之前会话积累的知识基础上,随着项目不断发展,助手的能力也会越来越强。
聊天会话总结与恢复
Clojure MCP 服务器提供了一对提示词,可通过 scratch_pad 工具实现跨聊天会话的连续性。默认情况下,数据仅在当前会话的内存中存储。如需在服务器重启后保留摘要,必须启用 scratch pad 的持久化功能,具体方法请参阅 scratch pad 部分的配置说明。
工作原理
系统使用两个互补的提示词:
chat-session-summarize:创建当前会话的摘要- 将详细摘要保存到 scratch pad
- 记录已完成的工作、正在进行的内容以及下一步计划
- 接受可选的
chat_session_key参数(默认值为"chat_session_summary")
chat-session-resume:从之前的会话恢复上下文- 读取 PROJECT_SUMMARY.md 文件
- 调用
clojure_inspect_project获取当前项目状态 - 从 scratch pad 中检索上一节会话的摘要
- 提供一段 8 行左右的简短总结,说明上次中断的地方
- 接受可选的
chat_session_key参数(默认值为"chat_session_summary")
使用流程
结束会话:
- 在一次富有成效的对话结束时,调用
chat-session-summarize提示词。 - 助手会将一份全面的摘要存储到 scratch pad 中。
- 由于 scratch pad 具有全局状态,该摘要将在后续会话中持续有效。
开始新会话:
- 当继续工作时,调用
chat-session-resume提示词。 - 助手会加载所有相关上下文,并提供简短的总结。
- 你可以在此基础上继续之前的工作,拥有完整的上下文信息。
多会话高级用法
可以通过自定义键来维护多个并行的对话上下文:
# 用于功能开发
chat-session-summarize,键为 "feature-auth-system"
# 用于修复 bug
chat-session-summarize,键为 "debug-memory-leak"
# 恢复特定上下文
chat-session-resume,键为 "feature-auth-system"
这样可以在不同开发场景之间切换,同时保持每个对话线程的完整状态。
多个 REPL 的协作
借助 list_nrepl_ports,助手可以同时发现你的 Clojure 和 shadow-cljs REPL。该工具能够识别哪些是 shadow-cljs 实例,从而使助手可以根据需要使用 clojure_eval 并指定相应的 port 参数,在任一 REPL 上进行评估。
LLM API 密钥
这并非使用 Clojure MCP 服务器的必要条件。
重要提示:如果您在环境中设置了以下 API 密钥,那么当您使用
dispatch_agent、architect和code_critique工具时,ClojureMCP 将会调用这些 API。这些调用会产生相应的 API 费用。
提供了一些 MCP 工具本身就是代理工具,它们需要 API 密钥才能正常工作。
要使用这些代理工具,您需要从以下提供商中获取一个或多个 API 密钥:
GEMINI_API_KEY- 用于 Google Gemini 模型- 在 https://makersuite.google.com/app/apikey 获取您的 API 密钥
- 使用工具:
dispatch_agent、architect、code_critique
OPENAI_API_KEY- 用于 GPT 模型- 在 https://platform.openai.com/api-keys 获取您的 API 密钥
- 使用工具:
dispatch_agent、architect、code_critique
ANTHROPIC_API_KEY- 用于 Claude 模型- 在 https://console.anthropic.com/ 获取您的 API 密钥
- 使用工具:
dispatch_agent
设置环境变量
选项 1:在 shell 中导出
export ANTHROPIC_API_KEY="your-anthropic-api-key-here"
export OPENAI_API_KEY="your-openai-api-key-here"
export GEMINI_API_KEY="your-gemini-api-key-here"
选项 2:添加到您的 shell 配置文件(.bashrc、.zshrc 等)
# 将这些行添加到您的 shell 配置文件
export ANTHROPIC_API_KEY="your-anthropic-api-key-here"
export OPENAI_API_KEY="your-openai-api-key-here"
export GEMINI_API_KEY="your-gemini-api-key-here"
为 Claude Desktop 配置 LLM 密钥
在设置 Claude Desktop 时,请确保它可以通过更新配置来访问您的环境变量。
我个人直接在 bash 命令中 source 它们:
{
"mcpServers": {
"clojure-mcp": {
"command": "/bin/sh",
"args": [
"-c",
"source ~/.api_credentials.sh && PATH=/your/bin/path:$PATH && clojure -Tmcp start :not-cwd true :port 7888"
]
}
}
}
注意:代理工具可以使用任何可用的 API 密钥。您不需要全部三个——只需设置您有权使用的那些即可。工具会自动从可用模型中选择。目前,ANTHROPIC API 仅限于 dispatch_agent 使用。
🧰 可用工具
main.clj 中默认包含的工具按类别组织,以支持不同的工作流程:
只读工具
| 工具名称 | 描述 | 示例用法 |
|---|---|---|
LS |
返回文件和目录的递归树状视图 | 探索项目结构 |
read_file |
具有模式探索功能的智能文件阅读器,适用于 Clojure 文件 | 以折叠视图阅读文件,进行模式匹配 |
grep |
使用正则表达式进行快速内容搜索 | 查找包含特定模式的文件 |
glob_files |
基于模式查找文件 | 根据文件名模式如 *.clj 查找文件 |
代码评估
| 工具名称 | 描述 | 示例用法 |
|---|---|---|
clojure_eval |
在当前命名空间中评估 Clojure 代码;支持可选的 port 参数,用于多 REPL 工作流 |
测试表达式,连接到不同的 REPL |
list_nrepl_ports |
发现机器上正在运行的 nREPL 服务器 | 查找可用的 REPL 连接 |
bash |
在主机系统上执行 Shell 命令 | 运行测试、Git 命令、文件操作 |
文件编辑工具
| 工具名称 | 描述 | 示例用法 |
|---|---|---|
clojure_edit |
对 Clojure 表达式进行结构感知编辑 | 替换/插入函数,处理 defmethod |
clojure_edit_replace_sexp |
修改函数内的表达式 | 更改特定的 s-expression |
file_edit |
通过替换文本字符串编辑文件 | 如果需要,可在编辑后进行 parinfer 修复 |
file_write |
在安全检查下写入完整文件 | 创建新文件,带验证覆盖现有文件 |
代理工具(需要 API 密钥)
| 工具名称 | 描述 | 示例用法 |
|---|---|---|
dispatch_agent |
启动带有只读工具的代理,用于复杂搜索 | 多步骤的文件探索与分析 |
architect |
技术规划与实施指导 | 系统设计、架构决策 |
实验性工具
| 工具名称 | 描述 | 示例用法 |
|---|---|---|
scratch_pad |
用于存储结构化数据的持久化工作区 | 任务跟踪、规划、工具间通信,可选文件持久化(默认关闭) |
code_critique |
交互式代码审查与改进建议 | 迭代提升代码质量 |
重要工具特性
智能文件阅读 (read_file)
- 折叠视图:对于大型 Clojure 文件,仅显示函数签名
- 模式匹配:使用
name_pattern按名称查找函数,使用content_pattern搜索内容 - defmethod 支持:处理如
"area :rectangle"或向量分派等分派值 - 多语言支持:Clojure 文件具有智能功能,其他文件则显示原始内容
结构感知编辑 (clojure_edit)
- 基于形式的操作:按类型和标识符定位函数,而非文本匹配
- 多种操作:替换、在前插入、在后插入
- 语法验证:内置 linting 功能防止括号不匹配
- defmethod 处理:支持带限定名和分派值的函数
代码评估 (clojure_eval)
- REPL 集成:在已连接的 nREPL 会话中执行
- 辅助函数:内置命名空间和符号探索工具
- 多表达式:评估并分割多个表达式
Shell 命令 (bash)
- 可配置执行:可根据配置通过 nREPL 或本地执行
- 会话隔离:使用 nREPL 模式时,在独立会话中运行,以避免干扰 REPL
- 输出截断:一致的 8500 字符限制,并智能分配 stderr/stdout
- 路径安全:验证文件系统路径是否在允许的目录范围内
代理系统 (dispatch_agent)
- 自主搜索:处理复杂的多步骤探索任务
- 只读访问:代理仅拥有只读工具访问权限
- 详细结果:返回分析和发现结果
便笺板 (scratch_pad)
- 持久化工作区:存储结构化数据,用于规划和工具间通信
- 仅内存存储:数据仅存储在内存中,会话结束时即丢失(默认行为)
- 基于路径的操作:使用
set_path、get_path、delete_path进行精确的数据操作 - JSON 兼容性:可存储任何 JSON 兼容的数据(对象、数组、字符串、数字、布尔值)
🔧 自定义
ClojureMCP 被设计为高度可定制的。在 Alpha 阶段,创建您自己的自定义 MCP 服务器是根据您的特定需求配置系统的首要方式。
您可以自定义:
- 工具 - 选择要包含的工具,使用多方法或多映射创建新工具
- 提示 - 为您的工作流添加项目特定的提示
- 资源 - 公开您的文档、配置和项目信息
- 工具选择 - 创建只读服务器、开发服务器或专用配置
这种自定义方式既简单又强大——您实际上是在构建属于您自己的个性化 AI 开发伴侣。
📖 完整自定义文档
快速入门:创建您自己的自定义 MCP 服务器 - 大多数用户应该从这里开始。
CLI 选项
传递给 clojure -Tmcp start 的值是 EDN 格式的值。
:port
可选 - 连接到 nREPL 服务器的端口。当使用 :start-nrepl-cmd 而不指定 :port 时,端口将自动从命令输出中发现。
:port 7888
:host
可选 - nREPL 服务器的主机。如果未指定,则默认为 localhost。
:host "localhost" 或 :host "0.0.0.0"
:not-cwd
可选 - 如果为 true,则不将当前工作目录用作项目目录。需要指定 :port。MCP 服务器将通过 introspect nREPL 连接来发现项目的根目录。
这对于 Claude Desktop 和其他在项目目录之外启动 MCP 服务器的客户端来说至关重要。通过连接到运行在您项目中的 nREPL,ClojureMCP 可以自动确定正确的根目录。
:not-cwd true
:start-nrepl-cmd
可选 - 用于在尚未运行 nREPL 服务器时自动启动 nREPL 服务器的命令。必须以字符串向量的形式指定。MCP 服务器将启动该进程并管理其生命周期。
当与 :port 一起使用时,MCP 服务器会从命令输出中自动解析端口;而单独使用时,则会使用固定的端口。
重要提示:此选项要求您从项目目录(即包含 deps.edn 或 project.clj 的目录)运行 clojure-mcp。nREPL 服务器将在当前工作目录中启动。这对于 Claude Code 和其他希望自动启动 nREPL 而无需手动管理进程的命令行 LLM 客户端特别有用。
Claude Desktop 用户注意:Claude Desktop 不会从您的项目目录启动 MCP 服务器,因此除非您同时提供指向特定项目的 :project-dir 命令行参数,否则 :start-nrepl-cmd 将不起作用。例如::project-dir '"/path/to/your/clojure/project"'。这一限制不会影响 Claude Code 或您从项目目录运行的其他基于 CLI 的工具。
:start-nrepl-cmd ["lein" "repl" ":headless"] 或 :start-nrepl-cmd ["clojure" "-M:nrepl"]
:config-file
可选 - 指定配置文件的位置。必须是现有文件的路径。
:config-file "/path/to/config.edn"
:project-dir
可选 - 指定代码库的工作目录。这会覆盖通过 nREPL 连接自动检测到的项目目录。必须是现有目录的路径。
:project-dir "/path/to/your/clojure/project"
:nrepl-env-type
可选 - 指定我们通过 nREPL 连接所连接的环境类型。这会覆盖自动检测功能。有效选项包括:
:clj表示 Clojure 或 ClojureScript:bb表示 Babashka - 一种原生且启动迅速的 Clojure 解释器,适用于脚本编写:basilisp表示 Basilisp - 一种兼容 Clojure 的 Lisp 方言,目标为 Python 3.9+:scittle表示 Scittle - 直接从浏览器 script 标签执行 ClojureScript
:nrepl-env-type :bb
:shadow-cljs-repl-message
可选 - 控制 shadow-cljs REPL 模式状态消息是否包含在 eval 结果中(默认为 true)。当连接到 shadow-cljs nREPL 时,每个 eval 结果前都会附加一条关于 CLJS 模式的状态消息。将其设置为 false 可以禁用此消息。
:shadow-cljs-repl-message false
:config-profile
可选 - 加载一个内置配置文件,调整工具的可用性和描述。对于针对特定用例定制 ClojureMCP 非常有用。
可用的配置文件包括:
:cli-assist- 用于 CLI 编程助手(Claude Code、Codex、Gemini CLI)的最小化工具集。禁用冗余工具,并将clojure_edit配置为原生 Edit 失败时的备用工具。
:config-profile :cli-assist
:enable-tools
可选 - 工具关键字白名单。如果提供,则会替换配置中的任何 :enable-tools 值。只有列出的工具才会可用。
:enable-tools [:clojure_eval :read_file]
:disable-tools
可选 - 工具关键字黑名单。如果提供,则会替换配置中的任何 :disable-tools 值。列出的工具将被禁用。
:disable-tools [:bash :dispatch_agent]
:add-tools
可选 - 在配置解析后强制启用特定工具。将工具从禁用列表中移除,并在存在启用列表时将其添加到启用列表中。这对于有选择地重新启用配置文件禁用的工具非常有用。
:add-tools [:my_custom_agent]
:remove-tools
可选 - 在配置解析后强制禁用特定工具。将工具加入禁用列表,并在存在启用列表时将其从启用列表中移除。这对于在不替换整个配置的情况下有选择地禁用工具非常有用。
:remove-tools [:clojure_eval]
工具过滤应用顺序
- 加载配置文件(主目录 + 项目目录 + 配置文件合并)
- 选项中的
:enable-tools/:disable-tools替换配置值(如果提供) - 应用
:remove-tools(强制禁用) - 应用
:add-tools(强制启用 — 在重叠时优先于:remove-tools) - 环境变量
ENABLE_TOOLS/DISABLE_TOOLS仍然优先于一切
有关配置文件中启用/禁用列表如何工作的详细信息,请参阅 组件过滤。
示例用法
# 仅指定端口的基本用法
clojure -Tmcp start :port 7888
# 自动启动 nREPL 服务器并发现端口
# 非常适合 CLI 助手 - 请从您的项目目录运行
clojure -Tmcp start :start-nrepl-cmd '["lein" "repl" ":headless"]'
# 对于 deps.edn 项目(从项目目录运行)
clojure -Tmcp start :start-nrepl-cmd '["clojure" "-M:nrepl"]'
# 自动启动并指定端口(使用固定端口,不进行解析)
clojure -Tmcp start :port 7888 :start-nrepl-cmd '["clojure" "-M:nrepl"]'
# 对于 Claude Desktop:必须提供项目目录,因为它不会从你的项目中运行
clojure -Tmcp start :start-nrepl-cmd '["lein" "repl" ":headless"]' :project-dir '"/path/to/your/clojure/project"'
# 使用自定义主机和项目目录
clojure -Tmcp start :port 7888 :host '"0.0.0.0"' :project-dir '"/path/to/project"'
# 使用自定义配置文件
clojure -Tmcp start :port 7888 :config-file '"/path/to/custom-config.edn"'
# 指定 Babashka 环境
clojure -Tmcp start :port 7888 :nrepl-env-type :bb
# 使用 cli-assist 配置文件以启用 CLI 编程助手
clojure -Tmcp start :config-profile :cli-assist
# 启用 cli-assist 并重新启用自定义代理工具
clojure -Tmcp start :config-profile :cli-assist :add-tools '[:my_custom_agent]'
# 启用 cli-assist,但同时移除 clojure_eval 工具
clojure -Tmcp start :config-profile :cli-assist :remove-tools '[:clojure_eval]'
# 完全覆盖——仅使用这两个工具
clojure -Tmcp start :enable-tools '[:clojure_eval :read_file]'
注意:字符串值需要在 shell 中正确引用,因此使用 '"value"' 语法来表示字符串。
⚙️ 配置
Clojure MCP 服务器支持通过项目根目录下的 .clojure-mcp/config.edn 文件进行最小化的项目特定配置。此配置为 MCP 服务器提供了安全控制和自定义选项。
配置文件位置
在项目根目录下创建 .clojure-mcp/config.edn 文件:
your-project/
├── .clojure-mcp/
│ └── config.edn
├── src/
├── deps.edn
└── ...
配置选项
配置的详细说明请参阅 此处。
配置示例
{:allowed-directories ["."
"src"
"test"
"resources"
"dev"
"/absolute/path/to/shared/code"
"../sibling-project"]
:write-file-guard :partial-read
:cljfmt false
:bash-over-nrepl false}
配置细节
路径解析:
- 相对路径(如
"src"、"../other-project")会相对于项目根目录解析。 - 绝对路径(如
"/home/user/shared")则按原样使用。 - 项目根目录会自动包含在允许的目录列表中。
安全措施:
- 所有文件操作都会由工具验证是否在允许的目录范围内。
- 尝试访问允许目录之外的文件将导致错误。
- 这可以防止意外访问敏感的系统文件。
- 注意,Bash 工具不受这些限制的影响,使用时需谨慎。
默认行为:
- 如果没有配置文件,只有项目目录及其子目录是可访问的。
- nREPL 的工作目录会自动添加到允许的目录列表中。
注意:配置会在 MCP 服务器启动时加载。修改配置后,请重启服务器或聊天代理。
📝 许可证
Eclipse 公共许可证 - v 2.0
版权所有 © 2025 布鲁斯·豪曼
本程序及随附材料根据 Eclipse 公共许可证 2.0 提供,该许可证可在 http://www.eclipse.org/legal/epl-2.0 上找到。
许可证摘要
- ✅ 可自由使用:用于个人项目、内部业务工具和开发。
- ✅ 可修改和分发:欢迎改进和分支。
- ✅ 商业用途:企业可以无限制地将其用于商业用途。
- ✅ 灵活许可:可与专有代码结合使用。
- 📤 分享改进:分发时必须公开源代码。
版本历史
v0.3.12026/03/14常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器