跳转至正文

RabbitMQ 智能 MCP 服务端 ​

GitHub RepoRabbitMQPython 3.11+FastMCPAMQP 0-9-1License

atengk-mcp-server-rabbitmq 是专为大语言模型(LLM)与智能体打造的生产级 RabbitMQ Model Context Protocol (MCP) 服务端,基于 Python 3.11+ 与 FastMCP 异步现代化架构构建。

服务深度打通 AMQP 0-9-1 二进制数据协议 与 RabbitMQ HTTP Management API 管控平台,向 AI 助手暴露完整的拓扑声明、消息发布、零损诊断采样、队列积压治理与微服务信道排障能力。


1. 核心架构与双驱机制 ​

正在渲染架构图表...

1.1 数据面与管控面清晰解耦 ​

  • 数据平面 (Data Plane - AMQP 5672):负责核心消息发布、零损窥探采样、队列声明与绑定。纯二进制高性能流协议保障吞吐;
  • 管控平面 (Control Plane - HTTP 15672):负责集群全局概览、微服务物理连接监控、活跃信道堆积诊断,由 Management 插件提供;
  • 优雅降级防御:若未配置 Management API,全套 AMQP 消息收发与拓扑功能完全不受影响;调用排障诊断工具时自动返回清晰降级提示,绝不异常崩溃。

1.2 生产级安全防护体系 ​

  • 强只读写保护门禁:未显式开启 --allow-write 时,任何破坏性变更(声明拓扑、清空队列、物理出队 ACK、发布消息)一律被即时阻断;
  • 高危指令二次确认机制:清空与删除队列强制要求传入 confirm=True,未传时仅返回受影响资源预估报告,绝不发生物理执行;
  • 零损采样 (Zero-Loss Peek):采样读取后在退出阶段统一延迟批量执行 reject(requeue=True),保证队列消息数量与顺序完全零破坏;
  • 全域凭据脱敏算法:任何连接串、字典属性或错误堆栈中的密码与认证 Token 统一替换为 ***,彻底阻断大模型会话凭证泄露。

2. 15 个核心工具契约字典 (Tools Contract) ​

2.1 集群拓扑与集群全景概览 (4 项) ​

工具名称功能描述门禁约束
rabbitmq_overview检查 RabbitMQ 节点健康度、Erlang 版本、连接数与全集群消息吞吐率只读
rabbitmq_list_nodes获取集群所有节点的运行明细、内存与磁盘报警状态只读
rabbitmq_list_vhosts查询所有虚拟主机清单及关联追踪参数只读
rabbitmq_list_exchanges查询所有 Exchange 交换机类型(direct/fanout/topic/headers)与属性只读

2.2 队列深度指标与拓扑声明 (6 项) ​

工具名称功能描述门禁约束
rabbitmq_list_queues查询各队列就绪数、未确认数与消费者数只读
rabbitmq_get_queue获取单个队列深度指标(死信交换机、TTL、最大积压限制等)只读
rabbitmq_declare_queue声明队列,支持死信路由 (dlx) 与最大积压策略 (x-max-length)需 --allow-write
rabbitmq_purge_queue清空指定队列中积压的消息需 --allow-write 且 confirm=True
rabbitmq_delete_queue删除指定队列需 --allow-write 且 confirm=True
rabbitmq_list_bindings查询交换机与队列之间的 Routing Key 绑定关系规则只读
rabbitmq_bind_queue将队列绑定到目标交换机需 --allow-write
rabbitmq_unbind_queue解除队列与交换机之间的绑定关系需 --allow-write

2.3 消息发布、零损采样与受控拉取 (3 项) ​

工具名称功能描述门禁约束
rabbitmq_publish_message向指定 Exchange/Routing Key 发布消息,支持字典自动序列化与自定义属性需 --allow-write
rabbitmq_peek_messages对队列头部实施无损诊断采样,自动批量 Requeue 归还队首,消息零丢失不出队只读
rabbitmq_get_messages受控拉取消费消息,默认 ack=False 仅拉取,传 ack=True 物理确认出队ack=True 需 --allow-write

2.4 客户端连接与活跃信道排障诊断 (2 项) ​

工具名称功能描述门禁约束
rabbitmq_list_client_connections排查外部微服务客户端连入 RabbitMQ 的物理 TCP 链路、信道数与收发吞吐速率只读
rabbitmq_list_channels诊断活跃信道未确认消息积压 (unack)、QoS Prefetch 限额与消费速率只读

3. 安装与运行方式 ​

推荐使用现代化 Python 工具 uv / uvx 秒级拉起运行:

bash
# 1. 默认只读模式直连本地 RabbitMQ 实例
uvx atengk-mcp-server-rabbitmq --rmq-host localhost --rmq-port 5672

# 2. 携带完整凭据与 Management API 端口
uvx atengk-mcp-server-rabbitmq \
  --rmq-host 127.0.0.1 \
  --rmq-port 5672 \
  -u guest \
  -P YOUR_PASSWORD \
  --management-port 15672

# 3. 开启写入权限 (允许拓扑声明与发布)
uvx atengk-mcp-server-rabbitmq --rmq-host localhost --allow-write

4. MCP 客户端配置模版 ​

4.1 Claude Desktop / Cursor / Windsurf 通用配置 (Stdio 模式) ​

json
{
  "mcpServers": {
    "rabbitmq": {
      "command": "uvx",
      "args": [
        "atengk-mcp-server-rabbitmq",
        "--rmq-host", "127.0.0.1",
        "--rmq-port", "5672",
        "-u", "guest",
        "-P", "YOUR_RABBITMQ_PASSWORD",
        "--management-port", "15672"
      ]
    }
  }
}

4.2 环境变量分立注入模式 (推荐,特殊字符免转义) ​

json
{
  "mcpServers": {
    "rabbitmq-env": {
      "command": "uvx",
      "args": ["atengk-mcp-server-rabbitmq"],
      "env": {
        "MCP_RABBITMQ_HOST": "127.0.0.1",
        "MCP_RABBITMQ_PORT": "5672",
        "MCP_RABBITMQ_USERNAME": "guest",
        "MCP_RABBITMQ_PASSWORD": "YOUR_RABBITMQ_PASSWORD",
        "MCP_RABBITMQ_VHOST": "/",
        "MCP_RABBITMQ_MANAGEMENT_PORT": "15672",
        "MCP_RABBITMQ_ALLOW_WRITE": "false"
      }
    }
  }
}

4.3 OpenAI Codex 配置 (~/.codex/config.toml) ​

toml
[mcp_servers.rabbitmq]
command = "uvx"
args = [
  "atengk-mcp-server-rabbitmq",
  "--rmq-host", "127.0.0.1",
  "--rmq-port", "5672",
  "-u", "guest",
  "-P", "YOUR_RABBITMQ_PASSWORD"
]

5. 命令行参数与环境变量全景速查 ​

CLI 参数对应环境变量默认值参数说明
--broker-host, --rmq-hostMCP_RABBITMQ_HOSTlocalhostRabbitMQ Broker 主机名或 IP 地址
--broker-port, --rmq-portMCP_RABBITMQ_PORT5672RabbitMQ Broker AMQP 端口(开启 SSL 时为 5671)
-u, --username, --userMCP_RABBITMQ_USERNAMEguestRabbitMQ 连接认证用户名
-P, --passwordMCP_RABBITMQ_PASSWORDguestRabbitMQ 连接认证密码(日志强制脱敏)
--vhostMCP_RABBITMQ_VHOST/目标虚拟主机名称
--sslMCP_RABBITMQ_SSLFalse是否开启 AMQP SSL/TLS 加密通信 (amqps://)
--management-hostMCP_RABBITMQ_MANAGEMENT_HOST继承 Broker 主机Management HTTP API 服务主机名
--management-portMCP_RABBITMQ_MANAGEMENT_PORT15672Management HTTP API 服务端口号
--allow-writeMCP_RABBITMQ_ALLOW_WRITEFalse开启写保护门禁放行标志
-t, --transportMCP_RABBITMQ_TRANSPORTstdioMCP 传输层协议:stdio 或 sse

6. 相关指引 ​

基于 Apache-2.0 协议开源发布