项目简介
'mcp-nrepl-joyride' 是一个MCP(Model Context Protocol)服务器,它充当Claude Code等大语言模型客户端与VS Code编辑器中运行的Joyride nREPL服务器之间的桥梁。通过此桥接,LLM可以直接评估Clojure表达式,并与VS Code的API进行交互,实现编辑器操作、文件管理和代码执行等功能。
主要功能点
- VS Code控制: 允许LLM通过执行Clojure代码直接操控VS Code,例如打开文件、执行命令、显示通知等。
- Clojure代码执行: 支持在VS Code的Joyride环境中评估Clojure表达式,包括标准库、Joyride/Calva功能,以及Java互操作。
- 会话管理: 提供独立的nREPL评估会话,确保LLM交互的隔离性。
- 低资源占用: 使用Babashka实现,启动快速,内存占用低。
- 高可靠连接: 采用显式端口连接和动态端口分配机制,提高连接稳定性。
安装步骤
- 克隆仓库: 'git clone https://github.com/franks42/mcp-nrepl-joyride.git' 并进入项目目录。
- 安装Babashka: 确保您的系统已安装Babashka。
- 安装UV: 确保您的系统已安装UV(用于Python工具链管理)。
- 安装VS Code扩展: 在VS Code中安装 Joyride 扩展。
- 启动Joyride nREPL服务器: 在VS Code工作区内启动Joyride nREPL服务器(通常通过Joyride扩展的命令面板操作)。
- 安装Python依赖: 在项目根目录运行 'uv sync'。
- 启动MCP服务器:
- 推荐方式 (后台运行): 'uv run python mcp_server_manager.py start'
- 直接测试 (前台运行): 'bb mcp-server'
服务器配置 (用于MCP客户端)
以下是为您的MCP客户端(例如Claude Code)配置MCP服务器的JSON示例。您需要将'/path/to/mcp-nrepl-joyride'替换为实际的项目路径。
{ "mcpServers": { "joyride-nrepl": { "command": "bb", // 启动MCP服务器的命令,这里是Babashka可执行文件 "args": ["-f", "/path/to/mcp-nrepl-joyride/bb.edn", "mcp-server"], // 启动命令的参数,指定Babashka配置文件和服务器入口 "env": { "JOYRIDE_WORKSPACE": "${workspaceFolder}", // 设置Joyride工作区路径的环境变量,方便服务器访问VS Code工作区 "MCP_DEBUG": "false" // 控制MCP服务器是否开启调试日志,建议生产环境设置为"false" } } } }
基本使用方法
一旦MCP服务器配置并启动,您的LLM客户端即可通过调用以下MCP工具与VS Code进行交互:
-
连接到nREPL:
- 工具名: 'nrepl-connect'
- 参数: '{"port": <你的nREPL端口号>, "host": "localhost"}'
- 示例: 如果您的Joyride nREPL服务器运行在端口56789,LLM可以调用此工具连接到它。
-
评估Clojure代码:
- 工具名: 'nrepl-eval'
- 参数: '{"code": "<要执行的Clojure代码字符串>"}'
- 示例:
- 执行简单计算: '(+ 1 2 3)'
- 通过Joyride打开快速文件查找: '(joyride.core/execute-command "workbench.action.quickOpen")'
- 获取当前编辑文件路径: '(-> js/vscode.window.activeTextEditor .-document .-fileName)'
- 在VS Code中显示通知: '(vscode.window.showInformationMessage "Hello from Claude!")'
-
获取连接状态:
- 工具名: 'nrepl-status'
- 参数: '{}'
- 示例: LLM可以调用此工具检查MCP服务器与nREPL的连接状态。
-
创建新会话:
- 工具名: 'nrepl-new-session'
- 参数: '{}'
- 示例: LLM可以调用此工具为隔离的评估任务创建一个新的nREPL会话。
通过这些工具,LLM可以编写Clojure代码,实现对VS Code的自动化和增强。
信息
分类
开发者工具