项目简介 MCP-nREPL是一个基于Babashka实现的轻量级MCP服务器,旨在作为AI助手和Clojure nREPL会话之间的桥梁。它允许遵循MCP协议的AI客户端(如Claude Code或Claude Desktop)直接访问正在运行的Clojure REPL会话,执行代码、加载文件、查询文档和进行会话内省。

主要功能点

  • Clojure 代码执行: 允许AI助手在nREPL会话中评估Clojure代码表达式。
  • 文件操作与命名空间管理: 支持加载Clojure文件、切换命名空间以及在需要时创建新的命名空间。
  • 宏展开: 提供宏的完整展开和单步展开功能,帮助理解代码转换。
  • 文档与源码查询: 可以获取Clojure符号的文档和源代码,并支持符号搜索。
  • 会话内省: 能够列出当前命名空间中定义的变量、所有已加载的命名空间以及获取当前默认命名空间。
  • 多种连接模式: 可连接到现有的nREPL服务器(通过'.nrepl-port'文件自动发现或指定端口),或启动一个内置的nREPL服务器。
  • 极简与高性能: 以单一Babashka脚本实现,无外部依赖,评估速度快。

安装步骤

  1. 安装Babashka: MCP-nREPL需要Babashka运行环境。
    • macOS用户可通过 'brew install borkdude/brew/babashka' 安装。
    • 其他平台请参考 babashka.org 进行安装。
  2. 下载脚本: 将'mcp-nrepl.bb'脚本下载到您的系统中的一个固定位置,例如 '~/.mcp-servers/'。
    mkdir -p ~/.mcp-servers
    cd ~/.mcp-servers
    curl -O https://raw.githubusercontent.com/ctford/mcp-nrepl/main/mcp-nrepl.bb
  3. 启动nREPL服务器(根据需要):
    • 如果使用MCP-nREPL的内置服务器模式 ('--server'): 无需手动启动nREPL服务器,MCP-nREPL会自行启动。
    • 如果连接到外部nREPL服务器: 在您的Clojure项目目录中启动一个nREPL服务器,例如:
      • 使用Leiningen: 'lein repl'
      • 使用Babashka: 'bb nrepl-server'
      • 使用Clojure CLI: 'clj -Sdeps '{:deps {nrepl/nrepl {:mvn/version "1.0.0"}}}' -X nrepl.cmdline/server' 这通常会在项目根目录生成一个'.nrepl-port'文件,MCP-nREPL会自动发现。

服务器配置 MCP客户端(如Claude Code)需要配置MCP-nREPL服务器的启动信息。以下是两种推荐的配置示例,您可以将其添加到您的 '.mcp.json' 文件(项目根目录)或 Claude Desktop 配置文件中:

推荐配置1: 使用内置nREPL服务器 (Claude Desktop 推荐) 此配置启动MCP-nREPL时会同时启动一个nREPL服务器。

{
  "mcpServers": {
    "mcp-nrepl": {
      "type": "stdio",
      "command": "bb",
      "args": ["/Users/yourname/.mcp-servers/mcp-nrepl.bb", "--server"]
    }
  }
}
  • 'mcp-nrepl': 服务器名称,可自定义。
  • 'type': 传输协议类型,'stdio'表示标准输入输出流。
  • 'command': 启动MCP-nREPL的命令,这里是 'bb' (Babashka)。
  • 'args': 传递给 'bb' 命令的参数。第一个参数是MCP-nREPL脚本的路径,请替换为您的实际路径;第二个参数 '--server' 表示启用内置nREPL服务器。

推荐配置2: 连接到现有nREPL服务器 (Claude Code 推荐) 此配置让MCP-nREPL连接到您项目中已运行的nREPL服务器。

{
  "mcpServers": {
    "mcp-nrepl": {
      "type": "stdio",
      "command": "bb",
      "args": ["/Users/yourname/.mcp-servers/mcp-nrepl.bb"]
    }
  }
}
  • 'mcp-nrepl': 服务器名称,可自定义。
  • 'type': 传输协议类型,'stdio'表示标准输入输出流。
  • 'command': 启动MCP-nREPL的命令,这里是 'bb' (Babashka)。
  • 'args': 传递给 'bb' 命令的参数。唯一参数是MCP-nREPL脚本的路径,请替换为您的实际路径。MCP-nREPL将自动寻找项目根目录的'.nrepl-port'文件来连接nREPL。

基本使用方法 配置完成后,重启您的MCP客户端(如Claude Code或Claude Desktop)。您可以尝试向AI助手提问,例如:

  • "请在我的Clojure REPL中评估 '(+ 1 2 3)'。"
  • "列出当前命名空间中定义的变量。"
  • "请给我 'clojure.core/map' 的文档。"

AI助手将通过MCP-nREPL连接到您的nREPL会话并执行相应的Clojure操作。

信息

分类

开发者工具