使用说明

项目简介

nREPL MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在连接 LLM 客户端(如 Claude Desktop 或 VSCode 中的 CLine)与 Clojure nREPL (NetREPL) 实例。通过此服务器,LLM 可以利用工具执行 Clojure 代码,并访问 Clojure 项目的上下文信息,例如命名空间和变量,从而增强 LLM 在 Clojure 开发环境中的应用能力。

主要功能点

  • 连接 nREPL 服务: 允许 LLM 客户端连接到正在运行的 Clojure nREPL 服务器,需要指定主机 (host) 和端口 (port)。
  • 执行 Clojure 代码: 支持在指定的或当前 nREPL 会话的命名空间中执行 Clojure 代码片段。
  • 列出项目命名空间: 提供工具列出当前 Clojure 项目中的所有命名空间。
  • 检查命名空间变量: 允许 LLM 客户端获取指定命名空间中公共变量(vars)的元数据和当前值。
  • 获取 nREPL 连接状态: 提供资源查询,以获取当前 nREPL 连接的状态信息,包括主机、端口和会话详情。

安装步骤

本服务器可以通过 'npx' 快速安装和运行,或者手动克隆仓库进行安装。

方法一:使用 'npx' (推荐)

无需克隆仓库,只需确保已安装 Node.js 和 npm,即可通过 'npx' 命令直接运行服务器:

npx nrepl-mcp-server

方法二:手动安装

  1. 克隆仓库

    git clone https://github.com/JohanCodinha/nrepl-mcp-server.git
    cd nrepl-mcp-server
  2. 安装依赖

    npm install
  3. 构建项目

    npm run build
  4. 运行服务器

    npm start

    或在开发模式下运行:

    npm run dev

    服务器默认监听标准输入/输出 (STDIO) 以接收 MCP 客户端的请求。

服务器配置

要将此 MCP 服务器添加到 MCP 客户端(例如 CLine 或 Claude Desktop),您需要在客户端的 MCP 设置中添加一个新的服务器配置。以下是一个配置示例,您需要将其添加到客户端的 MCP 服务器配置 JSON 中:

{
  "mcpServers": {
    "nrepl-mcp-server": {  // 服务器名称,可以自定义
      "command": "npx",    // 启动服务器的命令,这里使用 npx 直接运行
      "args": [            // 命令参数
        "nrepl-mcp-server" //  npx 运行的脚本名称
      ],
      "disabled": false,   //  设置为 false 表示启用该服务器
      "autoApprove": []   //  自动批准的工具列表,默认为空
    }
  }
}

配置说明:

  • '"nrepl-mcp-server"': 这是您为该服务器指定的名称,可以根据需要自定义。
  • '"command": "npx"' 和 '"args": ["nrepl-mcp-server"]': 这两个配置指示 MCP 客户端使用 'npx nrepl-mcp-server' 命令来启动 MCP 服务器。如果您手动安装并使用 'npm start' 运行服务器,'command' 应指向 Node.js 可执行文件路径,'args' 指向编译后的服务器入口文件 ('build/index.js')。
  • '"disabled": false': 确保此项设置为 'false',以启用服务器。
  • '"autoApprove": []': 如果您希望某些工具在调用时自动被批准(无需用户确认),可以在此列表中添加工具名称。默认情况下为空,表示所有工具调用都需要用户批准。

重要提示: 请根据您的实际安装方式和运行环境,调整 'command' 和 'args' 配置。如果使用 'npx' 方式,通常无需修改。如果手动安装并使用 'npm start' 或 'npm run dev' 运行,请确保配置的 'command' 和 'args' 与您的启动命令相匹配。

基本使用方法

  1. 启动 nREPL 服务器: 首先,您需要确保有一个正在运行的 Clojure nREPL 服务器实例。这通常通过 Clojure 项目的构建工具(如 Leiningen 或 deps.edn)启动。例如,使用 Leiningen,您可以在项目根目录下运行 'lein repl'。

  2. 配置 MCP 客户端: 按照上述 "服务器配置" 部分的说明,将 nREPL MCP Server 添加到您的 MCP 客户端配置中。

  3. 连接 nREPL: 在 LLM 客户端中,您可以使用 'connect' 工具来连接到 nREPL 服务器。例如,使用 CLine,您可以输入类似 '(connect {:host "localhost" :port 7888})' 的指令,其中 '"localhost"' 和 '7888' 应替换为您的 nREPL 服务器的主机和端口。

  4. 执行 Clojure 代码: 使用 'eval_form' 工具执行 Clojure 代码。例如,'(eval_form {:code "(+ 1 1)"})' 将在 nREPL 会话中执行 '(+ 1 1)' 并返回结果。您可以指定 ':ns' 参数来在特定的命名空间中执行代码,例如 '(eval_form {:code "(str ns)" :ns "my.project.core"})'。

  5. 获取命名空间信息: 使用 'get_ns_vars' 工具获取命名空间中的变量信息,例如 '(get_ns_vars {:ns "clojure.string"})' 将返回 'clojure.string' 命名空间中所有公共变量的元数据和值。

  6. 查询资源: 使用客户端的资源查询功能,可以访问 'nrepl://status' 和 'nrepl://namespaces' 资源,分别获取 nREPL 连接状态和项目命名空间列表。

通过这些步骤,您就可以在 LLM 客户端中使用 nREPL MCP Server 与 Clojure 开发环境进行交互,实现代码执行、上下文获取等功能。

信息

分类

开发者工具