使用说明
项目简介
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
方法二:手动安装
-
克隆仓库:
git clone https://github.com/JohanCodinha/nrepl-mcp-server.git cd nrepl-mcp-server -
安装依赖:
npm install -
构建项目:
npm run build -
运行服务器:
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' 与您的启动命令相匹配。
基本使用方法
-
启动 nREPL 服务器: 首先,您需要确保有一个正在运行的 Clojure nREPL 服务器实例。这通常通过 Clojure 项目的构建工具(如 Leiningen 或 deps.edn)启动。例如,使用 Leiningen,您可以在项目根目录下运行 'lein repl'。
-
配置 MCP 客户端: 按照上述 "服务器配置" 部分的说明,将 nREPL MCP Server 添加到您的 MCP 客户端配置中。
-
连接 nREPL: 在 LLM 客户端中,您可以使用 'connect' 工具来连接到 nREPL 服务器。例如,使用 CLine,您可以输入类似 '(connect {:host "localhost" :port 7888})' 的指令,其中 '"localhost"' 和 '7888' 应替换为您的 nREPL 服务器的主机和端口。
-
执行 Clojure 代码: 使用 'eval_form' 工具执行 Clojure 代码。例如,'(eval_form {:code "(+ 1 1)"})' 将在 nREPL 会话中执行 '(+ 1 1)' 并返回结果。您可以指定 ':ns' 参数来在特定的命名空间中执行代码,例如 '(eval_form {:code "(str ns)" :ns "my.project.core"})'。
-
获取命名空间信息: 使用 'get_ns_vars' 工具获取命名空间中的变量信息,例如 '(get_ns_vars {:ns "clojure.string"})' 将返回 'clojure.string' 命名空间中所有公共变量的元数据和值。
-
查询资源: 使用客户端的资源查询功能,可以访问 'nrepl://status' 和 'nrepl://namespaces' 资源,分别获取 nREPL 连接状态和项目命名空间列表。
通过这些步骤,您就可以在 LLM 客户端中使用 nREPL MCP Server 与 Clojure 开发环境进行交互,实现代码执行、上下文获取等功能。
信息
分类
开发者工具