使用说明

项目简介

shadow-cljs-mcp 是一个 Model Context Protocol (MCP) 服务器,它能够连接到正在运行的 shadow-cljs 构建进程,并实时跟踪构建进度、错误和完成状态。此服务器为 LLM 提供了一个工具,使其能够在修改 ClojureScript 文件后,验证构建是否成功。

主要功能点

  • 实时构建状态监控: 监听 shadow-cljs 的构建事件,包括构建开始、完成、失败、警告和错误。
  • 提供构建状态工具: LLM 可以调用 'get_last_build_status' 工具,获取最新的 shadow-cljs 构建状态报告。
  • 详细构建信息: 构建状态报告包含构建状态(成功/失败)、编译的文件列表、警告和错误信息、构建持续时间等,方便 LLM 理解构建结果。
  • 易于集成: 通过标准的 MCP 协议与 LLM 客户端通信,配置简单。

安装步骤

  1. 安装 Node.js 和 npm: 确保你的系统已安装 Node.js 和 npm。
  2. 全局安装 shadow-cljs-mcp: 打开终端,运行以下命令全局安装 'shadow-cljs-mcp':
    npm install -g shadow-cljs-mcp

服务器配置

要将 'shadow-cljs-mcp' 服务器添加到 MCP 客户端(例如 Cline/Cursor/Claude),需要在客户端的 MCP 服务器配置中添加以下 JSON 配置。请注意,这段配置是在 MCP 客户端中进行的,而不是在服务器端

{
  "mcpServers": {
    "shadow-cljs-mcp": {
      "command": "npx",  // 启动服务器的命令,这里使用 npx 运行全局安装的 shadow-cljs-mcp
      "args": ["shadow-cljs-mcp"], // 传递给启动命令的参数,这里没有参数
      "disabled": false, // 是否禁用该服务器,设置为 false 表示启用
      "autoApprove": [], // 自动批准的工具列表,这里为空表示不自动批准任何工具
      "timeout": 60     // 请求超时时间,单位为秒
    }
  }
}

配置参数说明(给 MCP 客户端配置人员看):

  • '"shadow-cljs-mcp"': 服务器名称,在客户端配置中用于标识和引用该服务器。可以自定义,但需要与后续使用方法中的 '<server_name>' 保持一致。
  • '"command": "npx"': 指定用于启动 MCP 服务器的可执行命令。'npx' 用于运行本地或全局安装的 npm 包的可执行文件。
  • '"args": ["shadow-cljs-mcp"]': 传递给 'command' 命令的参数列表。这里 '"shadow-cljs-mcp"' 是要通过 'npx' 运行的 npm 包的可执行文件名。
  • '"disabled": false': 布尔值,指示服务器是否被禁用。'false' 表示启用,'true' 表示禁用。
  • '"autoApprove": []': 一个字符串数组,列出可以自动批准的工具名称。当 LLM 请求调用列在此处的工具时,无需用户手动批准即可执行。这里为空数组表示不自动批准任何工具,每次调用工具都需要手动批准(如果客户端有批准机制)。
  • '"timeout": 60': 整数,设置客户端等待 MCP 服务器响应的超时时间,单位为秒。如果服务器在指定时间内没有响应,客户端可能会取消请求并报错。

基本使用方法

  1. 确保 shadow-cljs 正在运行: 'shadow-cljs-mcp' 服务器依赖于正在运行的 shadow-cljs 实例。请确保你的 shadow-cljs 构建进程已启动,并且默认监听在 'localhost:9630' 端口。

  2. 启动 shadow-cljs-mcp 服务器: 在终端中运行以下命令启动 'shadow-cljs-mcp' 服务器:

    shadow-cljs-mcp

    服务器默认通过标准输入/输出 (stdio) 与 MCP 客户端通信。

  3. 在 LLM 中使用 'get_last_build_status' 工具: 在你的 LLM 应用中,可以使用 '<use_mcp_tool>' 标签或相应的 MCP 客户端 API 调用 'get_last_build_status' 工具。例如,在 Markdown 格式的 LLM 指令中可以这样使用:

    在编辑 ClojureScript 文件后,使用 shadow-cljs-mcp 服务器的 'get_last_build_status' 工具来验证构建是否成功:
    
    <use_mcp_tool>
    <server_name>shadow-cljs-mcp</server_name>
    <tool_name>get_last_build_status</tool_name>
    <arguments>
    {}
    </arguments>
    </use_mcp_tool>

    LLM 客户端会将请求发送到 'shadow-cljs-mcp' 服务器,服务器会返回包含构建状态信息的 JSON 响应,例如:

    {
      "status": "completed",
      "resources": 317,
      "compiled": 1,
      "warnings": 0,
      "duration": 0.609,
      "compiledFiles": [
        "path/to/your/file.cljs (505ms)"
      ]
    }

    {
      "status": "failed",
      "message": "Build failed",
      "details": {
        // Error information
      }
    }

    LLM 可以根据这些信息向用户报告构建结果。

注意事项

  • 确保 shadow-cljs 实例在默认端口 '9630' 上运行。
  • 'shadow-cljs-mcp' 服务器需要在 shadow-cljs 构建进程运行后启动。
  • LLM 应该在每次编辑 ClojureScript 文件后调用 'get_last_build_status' 工具,以获取最新的构建状态。

信息

分类

开发者工具