Token导航 LogoToken导航TokenDH.com
MCP Nrepl logo
开发工具未说明官方级别未说明来源级核验

MCP Nrepl

MCP Server

MCP-nREPL 是一个基于Babashka的轻量级Clojure nREPL服务器实现,支持桥接模式、服务器模式和评估模式,为AI助手提供REPL交互能力。

工具数

0

提示词数

0

GitHub Stars

5

资源数

0
AI编程辅助Claude开发工具Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ctford

提供方

ctford

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP nREPL

![CI](https://github.com/ctford/mcp-nrepl/actions/workflows/ci.yml)

这是一个最小的、快速的 模型上下文协议 Clojure的(MCP)服务器实现 nREPL 使用 巴巴什卡。这意味着您的编码助理可以像您一样使用REPL。

目录

特性

  • 桥接模式 (--bridge):连接到外部nREPL服务器,例如使用 lein repl。当您有一个具有自己的依赖关系和定义的现有项目时,请使用此选项。
  • 服务器模式 (--server):提供嵌入式nREPL服务器。如果您在项目上下文之外尝试Clojure,请使用此选项。
  • 评估模式 (--eval):从命令行进行一次性评估,适用于网桥或服务器模式。使用此功能尝试MCP nREPL,或者如果您想让您的编码助手能够通过CLI而不是MCP与REPL通信。
  • 快速执行:每次评估约30ms

使用 bb mcp-nrepl.bb --help 查看所有命令行选项和使用示例。

示例用法

用户: 给我找第一百万个素数。

克劳德: 我将使用Clojure REPL来计算第一百万个素数。

🔧 *使用eval clojure工具:*

(defn prime? [n]
  (and (> n 1)
       (not-any? #(zero? (mod n %))
                 (range 2 (inc (int (Math/sqrt n)))))))

(defn primes []
  (filter prime? (iterate inc 2)))

(nth (primes) (dec 1000000))
Error: Evaluation timed out after 2000ms

克劳德: 这种天真的做法已经过时了。让我使用一种更有效的埃拉托色尼筛方法。

🔧 *使用eval clojure工具:*

(defn sieve [n]
  (let [limit (int (* n (Math/log n) 1.3))
        candidates (boolean-array limit true)]
    (loop [p 2 primes []]
      (if (>= (count primes) n)
        (nth primes (dec n))
        (do
          (when (aget candidates p)
            (loop [multiple (* p p)]
              (when ( “你能在我的Clojure REPL中评估(+1 2 3)吗?”

Claude应该能够连接到您的nREPL会话并执行代码。

## 协议支持

### 已实施的MCP方法

- **初始化**:建立nREPL连接的协议握手
- **工具/列表**:返回可用工具
- **工具/调用**:执行工具操作
- **提示/列表**:返回空提示列表(已通告功能,但未提供提示)
- **提示/获取**:不可用(返回错误)
- **资源/列表**:返回空资源列表(已通告功能,但未提供资源)
- **资源/读取**:不可用(返回错误)

使用 `bb mcp-nrepl.bb --describe` 无需设置MCP即可查看所有工具及其完整的参数模式。

### 可用工具

MCP nREPL提供12个工具:

**代码执行:**

- **eval clojure** -计算Clojure代码表达式
  - 参数:
    - `code` (string,必填)-要计算的Clojure代码
    - `timeout-ms` (数字,可选)-超时(毫秒)(默认值:2000ms)
  - 返回:评估结果、输出和任何错误
  - 增加复杂计算等长时间运行操作的超时时间
- **加载文件** -加载并评估Clojure文件
  - 参数:
    - `file-path` (string,必填)-要加载的Clojure文件的路径
    - `timeout-ms` (数字,可选)-超时(毫秒)(默认值:2000ms)
  - 返回:成功消息或评估输出
  - 加载前验证文件是否存在
  - 增加大文件的超时时间
- **设置命名空间** -切换到其他命名空间
  - 参数: `namespace` (字符串,必填)
  - 返回:命名空间切换确认
  - 如果命名空间不存在,则创建命名空间

**宏观扩张:**

- **macroexpansion全部** -完全展开Clojure代码中的所有宏
  - 参数: `code` (字符串,必填)
  - 返回:使用完全展开的表单 `clojure.walk/macroexpand-all`
  - 有助于理解完整的宏转换
- **宏扩展-1** -展开Clojure宏一步
  - 参数: `code` (字符串,必填)
  - 返回值:使用以下函数进行单个宏展开的结果 `macroexpand-1`
  - 有助于逐步理解宏观转换

**文档:**

- **文档** -获取Clojure符号的文档
  - 参数: `symbol` (字符串,必填)
  - 返回:文档文本或“未找到文档”
- **来源** -获取Clojure符号的源代码
  - 参数: `symbol` (字符串,必填)
  - 返回:源代码或“未找到源代码”
- **关于** -搜索与图案匹配的符号
  - 参数: `query` (字符串,必填)
  - 返回:匹配符号列表或“未找到匹配项”

**会话反思:**

- **谁** -列出命名空间中当前定义的变量
  - 参数: `namespace` (string,可选)-列出变量的命名空间
  - 如果未指定,则默认为当前命名空间
  - 返回:变量名的JSON数组
- **已加载命名空间** -列出所有加载的命名空间
  - 返回:命名空间名称的JSON数组
- **当前命名空间** -获取当前默认命名空间
  - 返回:当前命名空间名称

**服务器管理:**

- **重新启动nrepl服务器** -重新启动嵌入式nREPL服务器(仅限--server模式)
  - 无需参数
  - 停止当前服务器,杀死所有卡住的线程,并在新端口上启动一个新的服务器
  - 使用此功能从无限序列、卡住的计算或其他挂起中恢复
  - 注意:变量和名称空间保持不变(它们在进程内存中)
  - 仅在--server模式下工作(不在--bridge模式下工作)
  - 返回:成功消息

## 安全考虑

**MCP nREPL授予AI助手完全的REPL访问权限。** 在使用此工具之前,请了解其安全影响:

- **任意代码执行**:AI助手可以使用您的用户权限评估nREPL会话中的任何Clojure代码
- **文件系统访问**:代码可以读取、写入和删除用户帐户可访问的文件
- **网络接入**:代码可以发出网络请求并与外部服务交互
- **环境准入**:代码可以读取环境变量和系统属性

**建议**:

- 仅将MCP nREPL与受信任的AI助手和MCP客户端一起使用
- 在接受代码建议之前,请先对其进行审查,特别是系统操作
- 考虑在隔离环境(容器、VM)中运行敏感工作
- 使用生产凭据或敏感数据时要小心
- nREPL会话共享状态-一个评估会影响后续评估

**此工具用于开发工作流。** 它提供了与在REPL提示符下键入时相同的访问级别。

______________________________________________________________________

**为了发展**:如果您想贡献或运行测试,请克隆完整的存储库,而不仅仅是下载脚本。为了方便开发,您可以将Claude直接指向签出目录中的文件位置。

## 发展

本节面向已克隆存储库并希望在本地测试mcp-nrepl的开发人员。

### 1.启动nREPL服务器

启动Babashka nREPL服务器进行测试:

bb nrepl-server


这将启动Babashka nREPL服务器并将端口写入 `.nrepl-port`.

### 2.单发评估模式(最快)

直接从命令行评估Clojure代码:

bb mcp-nrepl.bb --eval "(+ 1 2 3)"

Output: 6

bb mcp-nrepl.bb -e "(str \"Hello\" \" \" \"World\")"

Output: "Hello World"


### 3.MCP服务器模式

作为人工智能助手和其他MCP客户端的MCP服务器运行:

bb mcp-nrepl.bb --bridge


服务器将使用JSON-RPC 2.0协议从stdin读取并写入stdout。

注: `--bridge` 为清楚起见,建议使用该标志,但该标志是可选的(默认为桥接模式)。

初始化消息示例:

{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{}},"id":1}


示例工具调用:

{"jsonrpc":"2.0","method":"tools/call","params":{"name":"eval-clojure","arguments":{"code":"(+ 1 2 3)"}},"id":2}


### 测试

#### 运行测试

运行完整的测试套件(单元+E2E):

./run-tests.sh


测试套件包括:

- **单元测试** (约1秒)-没有副作用的纯函数:MCP处理程序、数据转换、错误构建器
- **端到端测试** (约5秒)-完全集成:MCP协议、nREPL评估、资源和一次性评估模式
- **误用测试** (约3秒)-错误处理:JSON格式错误、请求无效、缺少nREPL服务器、Clojure代码格式错误
- **性能测试** (约1秒)-定时验证:单次评估模式在200ms阈值下完成

为了保持一致性和可维护性,所有测试套件都是用Babashka编写的。

#### Git挂钩

为了确保代码质量,请安装在每次提交之前运行测试的预提交挂钩:

./install-git-hooks.sh


安装后,测试将在每次提交前自动运行。钩子的版本控制在 `.githooks/pre-commit`,因此任何更新都会自动应用,无需重新安装。

要跳过特定提交的钩子(不推荐):

git commit --no-verify


## 用AI构建

MCP nREPL是用 [克劳德代码](https://claude.com/claude-code),人工智能驱动的编码助手。事实上,我采用了一种我永远不会手工编辑的创造性约束。如果你正在寻找MCP服务器,我假设你对AI在开发中的帮助感到满意。

## 贡献

MCP nREPL是在创造性约束下开发的,所有代码都由Claude code编写。看 [贡献.md](CONTRIBUTING.md) 了解如何贡献想法和概念验证PR的详细信息。

设计约束:零依赖性,仅限REPL访问,代码最少/快速/可读。

## 许可证

Eclipse公共许可证v1.0-有关详细信息,请参阅许可证文件

目录标签

目录标签

AI编程辅助Claude开发工具Clojure本地部署Clojure开发REPL工具Babashka代码评估

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP