项目简介
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操作最佳实践和指南的工具。
安装步骤
-
确保已安装uvx工具: uvx 是一个 Python 包管理和执行工具。如果未安装,请通过 pip 安装:
pip install uvx -
通过PyPI直接使用: 这是推荐的安装方式,MCP客户端可以直接在配置中引用此服务器。无需手动安装。
-
从源代码安装(如果您需要进行开发或定制): a. 克隆仓库:
git clone https://github.com/amazon-mq/mcp-server-rabbitmq.git cd mcp-server-rabbitmqb. 安装依赖(建议在虚拟环境中操作):
# 使用 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客户端的简单示例:
-
配置MCP客户端: 确保您的MCP客户端配置了上述 'mcpServers' 部分。
-
在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消息队列进行交互。
信息
分类
通信与社交