项目简介

'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实现,启动快速,内存占用低。
  • 高可靠连接: 采用显式端口连接和动态端口分配机制,提高连接稳定性。

安装步骤

  1. 克隆仓库: 'git clone https://github.com/franks42/mcp-nrepl-joyride.git' 并进入项目目录。
  2. 安装Babashka: 确保您的系统已安装Babashka。
  3. 安装UV: 确保您的系统已安装UV(用于Python工具链管理)。
  4. 安装VS Code扩展: 在VS Code中安装 Joyride 扩展。
  5. 启动Joyride nREPL服务器: 在VS Code工作区内启动Joyride nREPL服务器(通常通过Joyride扩展的命令面板操作)。
  6. 安装Python依赖: 在项目根目录运行 'uv sync'。
  7. 启动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的自动化和增强。

信息

分类

开发者工具