clojure-mcp

GitHub
727 76 简单 1 次阅读 今天EPL-2.0开发框架插件
AI 解读 由 AI 自动生成,仅供参考

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,允许模型实时评估表达式并获取反馈,实现“编写 - 运行 - 修正”的闭环。
  • 原生格式感知:集成 cljfmtclj-rewrite,确保所有代码修改自动符合 Clojure 社区标准格式,保持代码库整洁一致。
  • 结构化精准编辑:即使常规文本匹配失败,clojure-mcp 也能通过识别代码形式(Form)的类型和名称进行结构性重写,大幅提升修复成功率。

clojure-mcp 将 AI 从单纯的文本生成器升级为懂 Clojure 语法的结对编程伙伴,彻底释放了 REPL 驱动开发的潜力。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具是基于 Clojure 的 MCP 服务器,不需要 Python 环境。必须安装 Clojure 工具和 JDK 17 或更高版本。强烈建议安装 ripgrep 以提升文件搜索性能。在桌面端使用时,需配置外部 nREPL 服务器连接;在 CLI 助手使用时,可作为 REPL 集成和结构化编辑的补充工具。
python不需要
Clojure
Java JDK 17+
ripgrep (可选但强烈推荐)
nREPL
clojure-mcp hero image

快速开始

Clojure MCP:基于 REPL 的 AI 辅助开发

ClojureMCP 是一个用于 Clojure 的 MCP 服务器!

目录

什么是 ClojureMCP?

ClojureMCP 是一个 MCP 服务器,它可以将 LLM 客户端(如 Claude Code 或 Claude Desktop)连接到你的 Clojure 项目。它提供了 REPL 工具和对 Clojure 敏感的编辑工具,旨在可靠地处理 Clojure 的括号和格式化。

根据你使用的 LLM 客户端,ClojureMCP 可以:

  • 为桌面聊天应用(如 Claude Desktop)提供一套完整的 Clojure 敏感代码辅助工具;或者
  • 为已经具备优秀文件编辑和 Shell 工具的 CLI 助手填补 Clojure 特有的空白(例如 REPL 集成 + Clojure 敏感的编辑功能)。

如何使用它?

  1. 安装 ClojureMCP(clojure -Ttools install-latest ...)。
  2. 在你的 LLM 客户端中将其注册为 MCP 服务器。

如果你使用的是 CLI 助手,通常更倾向于保留 CLI 原生的文件编辑工具,并主要将 ClojureMCP 用于 REPL 集成(以及作为编辑的后备方案)。

如果你使用的是桌面聊天应用,则通常会使用完整的 ClojureMCP 工具链。

主要特性

  • Clojure REPL 连接——在评估之前修复分隔符
  • Clojure 敏感编辑——使用 parinfer、cljfmt 和 clj-rewrite
  • 专为 Clojure 开发优化的工具集

帮助与社区资源

📋 安装

先决条件

  • Clojure
  • Java(JDK 17 或更高版本)
  • 可选但强烈推荐ripgrep,以提升 grepglob_files 的性能

安装 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 服务器即可。

测试设置

  1. 在目标项目中启动 nREPL

    cd /path/to/your/project
    clojure -M:nrepl
    

    你应该 увидеть: nREPL server started on port 7888...

  2. 重启 Claude Desktop(配置更改后需要)

  3. 验证连接:在 Claude Desktop 中,点击聊天区域的 + 按钮。你应该会在菜单中看到“Add from clojure-mcp”。需要注意的是,这可能需要几秒钟才会显示出来。

  4. 如果出现错误,请参阅故障排除指南。如果已成功连接,请前往在 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 文件,帮助助手快速理解代码库结构。

工作原理

  1. 创建摘要:要生成或更新 PROJECT_SUMMARY.md 文件,可在 + > clojure-mcp 菜单中使用 MCP 提示词 create-update-project-summary。此提示词将:

    • 分析代码库结构
    • 记录关键文件、依赖项和可用工具
    • 以针对 LLM 助手优化的格式生成全面的文档
  2. 使用摘要:当开始与助手的新对话时:

    • “Project Summary”资源会自动加载 PROJECT_SUMMARY.md
    • 这使助手能够立即了解项目结构
    • 助手无需长时间探索即可提供更准确的帮助
  3. 保持更新:在完成一次富有成效的会话并添加了新功能或组件后:

    • 再次调用 create-update-project-summary 提示词
    • 系统会用新增功能更新 PROJECT_SUMMARY.md
    • 从而确保摘要始终反映最新的开发进展。

这一工作流程形成了良性循环:每次会话都建立在之前会话积累的知识基础上,随着项目不断发展,助手的能力也会越来越强。

聊天会话总结与恢复

Clojure MCP 服务器提供了一对提示词,可通过 scratch_pad 工具实现跨聊天会话的连续性。默认情况下,数据仅在当前会话的内存中存储。如需在服务器重启后保留摘要,必须启用 scratch pad 的持久化功能,具体方法请参阅 scratch pad 部分的配置说明。

工作原理

系统使用两个互补的提示词:

  1. chat-session-summarize:创建当前会话的摘要

    • 将详细摘要保存到 scratch pad
    • 记录已完成的工作、正在进行的内容以及下一步计划
    • 接受可选的 chat_session_key 参数(默认值为 "chat_session_summary"
  2. chat-session-resume:从之前的会话恢复上下文

    • 读取 PROJECT_SUMMARY.md 文件
    • 调用 clojure_inspect_project 获取当前项目状态
    • 从 scratch pad 中检索上一节会话的摘要
    • 提供一段 8 行左右的简短总结,说明上次中断的地方
    • 接受可选的 chat_session_key 参数(默认值为 "chat_session_summary"

使用流程

结束会话:

  1. 在一次富有成效的对话结束时,调用 chat-session-summarize 提示词。
  2. 助手会将一份全面的摘要存储到 scratch pad 中。
  3. 由于 scratch pad 具有全局状态,该摘要将在后续会话中持续有效。

开始新会话:

  1. 当继续工作时,调用 chat-session-resume 提示词。
  2. 助手会加载所有相关上下文,并提供简短的总结。
  3. 你可以在此基础上继续之前的工作,拥有完整的上下文信息。

多会话高级用法

可以通过自定义键来维护多个并行的对话上下文:

# 用于功能开发
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_agentarchitectcode_critique 工具时,ClojureMCP 将会调用这些 API。这些调用会产生相应的 API 费用。

提供了一些 MCP 工具本身就是代理工具,它们需要 API 密钥才能正常工作。

要使用这些代理工具,您需要从以下提供商中获取一个或多个 API 密钥:

设置环境变量

选项 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_pathget_pathdelete_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.ednproject.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]

工具过滤应用顺序

  1. 加载配置文件(主目录 + 项目目录 + 配置文件合并)
  2. 选项中的 :enable-tools/:disable-tools 替换配置值(如果提供)
  3. 应用 :remove-tools(强制禁用)
  4. 应用 :add-tools(强制启用 — 在重叠时优先于 :remove-tools
  5. 环境变量 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),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|5天前
开发框架图像Agent

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 真正成长为懂上

148.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|2天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|今天
插件Agent图像

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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|3天前
插件开发框架