使用说明

项目简介

Click-clack 是一款便捷的工具,旨在简化将现有的 Python Click 命令行脚本集成到 LLM 应用中的过程。它能够自动发现并封装项目目录及其子目录下的所有 Click 命令行接口 (CLI),并将它们以 MCP (Model Context Protocol) 服务器的形式暴露出来。这意味着你可以使用支持 MCP 协议的 LLM 客户端(例如 Claude Desktop)直接调用和执行你的 Python 脚本,从而扩展 LLM 的功能边界。

主要功能点

  • 自动化工具发现: 自动扫描指定目录及其子目录,查找并识别使用 '@click.command()' 装饰器定义的 Python Click 命令行工具。
  • MCP 服务器: 将发现的 Click 命令行工具包装成符合 MCP 协议的工具服务,可以通过 JSON-RPC 协议与客户端通信。
  • 参数自动映射: 自动解析 Click 命令的参数类型(如字符串、整数、布尔值、枚举、文件路径等),并将其转换为 MCP 工具所需的参数格式。
  • 标准输出捕获: 执行 Click 命令行工具时,自动捕获其标准输出和标准错误输出,并作为 MCP 工具的响应返回给客户端。
  • 简易UI (可选): 除了 MCP 服务器功能,Click-clack 还提供一个基于 Marimo 框架的简易 Web UI,方便用户在浏览器中直接运行和测试这些 Click 命令(非 MCP 功能,但方便本地调试)。

安装步骤

  1. 确保已安装 Python 虚拟环境: 推荐在虚拟环境中安装 Click-clack,避免与全局 Python 环境冲突。如果尚未创建,请先创建并激活虚拟环境。例如,使用 'venv':

    python3 -m venv .venv
    source .venv/bin/activate  # 或 .venv\Scripts\activate (Windows)
  2. 安装 Click-clack: 使用 pip 安装 Click-clack 包:

    pip install click-clack

服务器配置

为了让 MCP 客户端(如 Claude Desktop)连接到 Click-clack MCP 服务器,你需要配置客户端的服务器设置。以下是 Claude Desktop 客户端的 'claude_desktop_config.json' 配置文件示例。你需要根据你的实际情况进行修改。

{
    "mcpServers": {
        "click_clack_server_name": {  //  MCP 服务器的名称,可以自定义,在客户端中用于标识该服务器
            "command": "uv",   //  或者 "python",  启动 MCP 服务器的命令,这里假设你已安装 uv 或使用 python
            "args": [        //  启动命令的参数列表
                "run",      //  如果 command 是 "uv",则需要 "run" 参数
                "--directory",  //  指定工作目录参数
                "/path/to/directory/with/your/click/commands",  //  **[请替换为你的 Click 命令行脚本所在的目录的绝对路径]**  例如:"/Users/yourname/my_project/scripts"
                "--",       //  分隔 uv 参数和 click-clack 参数
                "click-clack",  //  运行 click-clack 的命令
                "--mcp",      //  **[必须添加]**  指定以 MCP 服务器模式运行 Click-clack
                "--module-path", //  指定模块路径参数
                "/path/to/directory/with/your/click/commands"   // **[请替换为你的 Click 命令行脚本所在的目录的绝对路径,与上面目录路径保持一致]**
            ]
        }
    }
}

配置参数说明:

  • '"click_clack_server_name"': 你为这个 MCP 服务器自定义的名称,在 Claude Desktop 客户端中会显示这个名称。
  • '"command"': 启动 Click-clack MCP 服务器的命令。通常是 'uv run' (如果你全局安装了 'uv' 并使用 'uv' 管理项目) 或者 'python' (如果你直接使用 'python' 运行)。
  • '"args"': 传递给启动命令的参数列表。
    • '"--directory", "/path/to/directory/with/your/click/commands"': [重要] 指定 Click-clack 扫描 Click 命令的根目录。你需要将 '/path/to/directory/with/your/click/commands' 替换为你实际存放 Click 命令行脚本的目录的绝对路径
    • '"click-clack", "--mcp", "--module-path", "/path/to/directory/with/your/click/commands"': 这些是 Click-clack 自身的命令和参数,'"--mcp"' 标志指示 Click-clack 以 MCP 服务器模式运行,'"--module-path"' 再次指定模块搜索路径,需要与 '--directory' 参数指向同一目录。

注意:

  • 请确保将 '/path/to/directory/with/your/click/commands' 替换为你 Click 脚本所在的实际目录的绝对路径
  • 如果你的项目依赖于特定的 Python 包,请确保在运行 'click-clack' 前已在虚拟环境中安装这些依赖。
  • 如果使用 'uv',请确保已全局安装 'uv',并且你的 Click 命令所在的目录是一个有效的 'uv' 项目(已运行 'uv init')。

基本使用方法

  1. 启动 MCP 服务器: 配置好 'claude_desktop_config.json' 后,当 Claude Desktop 客户端启动时,它应该会自动尝试连接到 Click-clack MCP 服务器。 或者,你也可以在命令行手动启动 Click-clack MCP 服务器:

    source .venv/bin/activate  # 激活虚拟环境 (如果尚未激活)
    cd /path/to/directory/with/your/click/commands  # **[切换到你的 Click 脚本所在目录]**
    click-clack --mcp --module-path .  #  在当前目录启动 MCP 服务器
  2. 在 MCP 客户端中使用: 在 Claude Desktop 或其他支持 MCP 协议的客户端中,你应该能看到名为 '"click_clack_server_name"' (或你在配置文件中设置的名称) 的服务器。展开该服务器,你将看到 Click-clack 自动发现的 Click 命令行工具列表。

  3. 调用工具: 选择你想使用的工具,客户端会根据 Click 命令的参数自动生成输入表单。填写参数值后,点击执行按钮,客户端会将请求发送到 Click-clack MCP 服务器执行相应的 Click 命令,并将命令的输出结果返回显示在客户端。

现在,你就可以利用 Click-clack 将你的 Python 命令行工具无缝集成到 LLM 工作流中,通过自然语言指令驱动执行各种自动化任务。

信息

分类

开发者工具