项目简介

RabbitMQ MCP 服务器是一个基于Model Context Protocol (MCP) 实现的应用后端,旨在将RabbitMQ消息队列的管理和操作功能标准化地暴露给大型语言模型(LLM)客户端。它将RabbitMQ的各种管理API封装为可供LLM调用的工具,使AI代理能够轻松地对RabbitMQ进行队列管理、交换机操作、连接监控、集群状态检查以及消息发布与消费等操作。同时,它支持连接到多个RabbitMQ代理,并提供OAuth认证机制和多种传输协议,为LLM驱动的RabbitMQ运维和自动化提供了强大的上下文服务框架。

主要功能点

  • AI代理管理RabbitMQ:将RabbitMQ的管理和操作API封装为AI代理可直接调用的工具,实现智能化的消息队列管理。
  • 多代理连接:在一个会话中连接和管理多个RabbitMQ消息代理,方便统一操作和监控。
  • 安全认证:支持OAuth令牌认证,确保与RabbitMQ代理连接的安全性。
  • 多种传输协议:支持标准输入输出(Stdio)和可流式HTTP(Streamable HTTP)等多种通信方式。
  • 队列与交换机管理:提供列出、获取信息、删除、清空队列,以及列出、获取信息、删除交换机等功能。
  • 集群与连接监控:支持获取集群节点信息、列出活跃连接和消费者,以及检查代理健康状态(如是否处于告警、仲裁队列是否异常)。
  • 消息操作:支持向队列发送消息(enqueue)和向扇出交换机发布消息(fanout)。
  • 获取操作指南:提供访问RabbitMQ操作最佳实践和指南的工具。

安装步骤

  1. 确保已安装uvx工具: uvx 是一个 Python 包管理和执行工具。如果未安装,请通过 pip 安装:

    pip install uvx
  2. 通过PyPI直接使用: 这是推荐的安装方式,MCP客户端可以直接在配置中引用此服务器。无需手动安装。

  3. 从源代码安装(如果您需要进行开发或定制): a. 克隆仓库:

    git clone https://github.com/amazon-mq/mcp-server-rabbitmq.git
    cd mcp-server-rabbitmq

    b. 安装依赖(建议在虚拟环境中操作):

    # 使用 uv 安装依赖
    uv sync

服务器配置

MCP客户端需要以下JSON格式的配置来启动和连接RabbitMQ MCP服务器。将以下配置添加到您的MCP客户端配置文件中(例如 'mcp_config.json'):

{
  "mcpServers": {
    "rabbitmq": {
      "command": "uvx",
      "args": [
        "amq-mcp-server-rabbitmq@latest",
        "--allow-mutative-tools"
      ]
    }
  }
}

配置参数说明:

  • 'rabbitmq':服务器的名称,您可以根据需要自定义。
  • 'command':用于启动MCP服务器的命令。推荐使用 'uvx' 来从 PyPI 动态获取和运行包。
  • 'args':传递给服务器的命令行参数列表。
    • 'amq-mcp-server-rabbitmq@latest':指定要运行的 RabbitMQ MCP 服务器包及其版本。'@latest' 表示使用最新版本。
    • '--allow-mutative-tools':可选参数。如果提供,将启用可以修改RabbitMQ状态(如删除队列、清空队列、删除交换机、更新定义)的工具。默认情况下这些修改性工具是禁用的,以防止意外操作。

其他可选命令行参数(在 'args' 中添加):

  • '--http':使用Streamable HTTP传输协议而非默认的Stdio。
  • '--server-port <PORT>':当使用HTTP传输时,指定服务器监听的端口(默认:8888)。
  • '--http-auth-jwks-uri <URI>':HTTP传输认证所需的JWKS URI。
  • '--http-auth-issuer <ISSUER>':HTTP传输认证所需的Issuer。
  • '--http-auth-audience <AUDIENCE>':HTTP传输认证所需的Audience。
  • '--http-auth-required-scopes <SCOPE1> <SCOPE2>':HTTP传输认证所需的Scopes列表。

基本使用方法

MCP服务器本身不会直接被用户操作,它通过MCP客户端与AI代理(如Strands Agent)进行交互。以下是使用Python 'strands' 库作为MCP客户端的简单示例:

  1. 配置MCP客户端: 确保您的MCP客户端配置了上述 'mcpServers' 部分。

  2. 在Python代码中连接和使用

    from mcp import StdioServerParameters, stdio_client
    from strands import Agent
    from strands.tools.mcp import MCPClient
    
    # 创建一个MCP客户端实例,连接到RabbitMQ MCP服务器
    # 注意:这里的 'command' 和 'args' 应与您MCP客户端配置文件中的一致
    rabbitmq_mcp_client = MCPClient(
        lambda: stdio_client(
            StdioServerParameters(
                command="uvx",
                args=["amq-mcp-server-rabbitmq@latest", "--allow-mutative-tools"]
            )
        )
    )
    
    # 激活MCP客户端并获取可用的工具
    with rabbitmq_mcp_client:
        tools = rabbitmq_mcp_client.list_tools_sync()
        # 创建一个AI代理,并将从MCP服务器获取的工具传递给它
        agent = Agent(tools=tools)
    
        print("与RabbitMQ管理AI代理对话。输入 'exit' 或 'quit' 结束。")
        while True:
            user_input = input("\n你: ").strip()
            if not user_input or user_input.lower() in ["exit", "quit"]:
                break
            # AI代理将根据用户输入和工具列表来执行相应的RabbitMQ操作
            agent(user_input)

    在这个例子中,AI代理将能够调用 'rabbitmq_broker_list_queues'、'rabbitmq_broker_delete_queue' 等工具,从而与RabbitMQ消息队列进行交互。

信息

分类

通信与社交