使用说明

项目简介

'click-mcp' 是一个Python库,旨在帮助开发者将现有的Click命令行工具快速转换为MCP服务器,以便AI智能体能够通过MCP协议调用和使用这些工具。通过简单的装饰器,开发者可以轻松地将Click命令暴露为标准化的MCP工具,实现AI智能体与命令行应用的无缝集成。

主要功能点

  • Click命令转MCP工具: 使用 '@click_mcp' 装饰器,即可将Click定义的命令行工具快速转换为MCP协议兼容的工具。
  • 自动化工具发现: 自动扫描和注册Click应用中的所有命令(包括子命令组),无需手动配置工具列表。
  • 参数类型映射: 自动将Click命令的参数类型(如字符串、整数、布尔值等)映射到MCP工具的输入Schema,方便AI智能体理解和调用。
  • 错误处理: 当命令执行出错时,能够将错误信息以MCP标准格式返回给客户端,便于AI智能体进行错误处理。
  • Stdio传输: 默认使用标准输入输出 (Stdio) 作为MCP服务器的传输协议,易于集成和部署。
  • 自定义配置: 支持自定义MCP服务器的名称和启动命令,以适应不同的应用场景和集成需求。

安装步骤

使用pip即可轻松安装 'click-mcp' 库:

pip install click-mcp

服务器配置

要让MCP客户端连接到 'click-mcp' 服务器,您需要提供以下配置信息。这些信息通常配置在MCP客户端的应用设置中,用于指定如何启动和连接MCP服务器。

{
  "serverName": "my-cli-app",  // MCP 服务器名称,默认为 click-mcp,可以在 @click_mcp 装饰器中通过 server_name 参数自定义,例如 @click_mcp(server_name="my-custom-tool")
  "command": "python",         // 启动 MCP 服务器的命令,通常为 python 或 python3
  "args": ["my_app.py", "mcp"] // 启动命令的参数,第一个参数是你的 Click 应用脚本路径,第二个参数是启动 MCP 服务器的子命令,默认为 mcp,可以在 @click_mcp 装饰器中通过 command_name 参数自定义,例如 @click_mcp(command_name="start-mcp"),则 args 应为 ["my_app.py", "start-mcp"]
}

请注意

  • '"serverName"' 是MCP服务器的唯一标识符,客户端可以通过此名称识别服务器。
  • '"command"' 指定了运行您的Click应用的Python解释器。
  • '"args"' 是一个字符串数组,包含了运行Click应用所需的命令行参数。您需要将 '"my_app.py"' 替换为您的Click应用脚本的实际文件名。 '"mcp"' 是默认的启动MCP服务器的子命令,这个命令是由 '@click_mcp' 装饰器自动添加的。

基本使用方法

  1. 引入装饰器: 在您的Click应用中,从 'click_mcp' 库导入 'click_mcp' 装饰器。

    from click_mcp import click_mcp
  2. 装饰根Group: 在您的根 'click.group()' 函数上使用 '@click_mcp' 装饰器。您可以自定义 'server_name' 和 'command_name' 参数。

    import click
    from click_mcp import click_mcp
    
    @click_mcp(server_name="my-cli-app")
    @click.group()
    def cli():
        """My CLI application."""
        pass
    
    @cli.command()
    @click.option('--name', required=True, help='Your name')
    def greet(name):
        """Greets you."""
        click.echo(f"Hello, {name}!")
    
    if __name__ == '__main__':
        cli()
  3. 启动MCP服务器: 在命令行中,使用 'mcp' 子命令(或您自定义的 'command_name')启动您的Click应用,即可同时启动MCP服务器。

    python my_app.py mcp

    这将启动一个基于Stdio的MCP服务器,监听标准输入输出,等待MCP客户端的连接和请求。

  4. AI智能体调用: 配置您的MCP客户端,使其连接到运行中的 'click-mcp' 服务器。客户端可以通过 'list_tools' 请求获取所有可用的工具列表,并使用 'call_tool' 请求调用特定的Click命令。例如,调用 'greet' 命令的MCP请求可能如下所示:

    {
      "type": "invoke",
      "tool": "greet",
      "parameters": {
        "name": "AI Agent"
      }
    }

通过以上步骤,您就可以将现有的Click命令行工具快速集成到MCP生态系统中,为AI智能体提供强大的工具支持。

信息

分类

开发者工具