RabbitMQ MassTransit MCP 服务器

一个专为RabbitMQ设计的MCP服务器,具备MassTransit智能功能,包括错误队列解析、故障分析和消息重新发布,适用于.NET微服务团队调试异步消息问题。

  • by StevePic95
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 StevePic95/rabbitmq-masstransit-mcp

使用说明

RabbitMQ MassTransit MCP服务器

RabbitMQ的MCP(模型上下文协议)服务器 MassTransit智能 --错误队列解析、故障分析和消息重新发布。

为跨团队调试异步消息传递问题而构建。NET微服务。通过了解MassTransit惯例,超越了基本的队列管理: _error/_skipped 队列、消息信封格式和故障消息解析。

特性

  • 18工具 通过Claude Code实现完整的RabbitMQ管理
  • MassTransit感知:自动检测和解析 _error/_skipped 队列、故障信封和消息类型URNs
  • 解析错误输出:异常类型、消息、堆栈跟踪、消费者类型、重试计数和原始有效载荷——从中提取 MT-Fault-* 消息头
  • 从错误重新发布:杀手级功能——获取故障消息并重新发布以进行重新处理
  • 安全默认值:默认情况下禁用可变工具,对破坏性操作进行两步确认

快速入门

1.添加到您的Claude代码配置中 (~/.claude.json 或项目 .claude.json):

{
  "mcpServers": {
    "rabbitmq": {
      "command": "npx",
      "args": ["-y", "@stevepic95/rabbitmq-masstransit-mcp@latest"],
      "env": {
        "RABBITMQ_HOST": "your-rabbitmq-host",
        "RABBITMQ_USERNAME": "your-username",
        "RABBITMQ_PASSWORD": "your-password"
      }
    }
  }
}

2.重新启动克劳德代码 加载新的MCP服务器。

3.开始使用它。 问克劳德这样的问题:

  • “是否有包含消息的错误队列?”
  • “显示提交订单错误队列中的故障”
  • “哪些队列没有消费者?”
  • “报告队列中有多少条消息?”

就是这样。13个只读工具立即可用,不需要任何标志。

要启用写入操作(清除、删除、发布、重新发布),请设置 "ALLOW_MUTATIVE_TOOLS": "true" 在env配置中。

安装

npx @stevepic95/rabbitmq-masstransit-mcp@latest

Claude代码配置

添加到您的 .claude.json 在...之下 mcpServers:

{
  "mcpServers": {
    "rabbitmq": {
      "command": "npx",
      "args": ["-y", "@stevepic95/rabbitmq-masstransit-mcp@latest"],
      "env": {
        "RABBITMQ_HOST": "your-rabbitmq-host",
        "RABBITMQ_PORT": "15672",
        "RABBITMQ_USERNAME": "your-username",
        "RABBITMQ_PASSWORD": "your-password",
        "RABBITMQ_VHOST": "/",
        "RABBITMQ_SSL": "false",
        "ALLOW_MUTATIVE_TOOLS": "false"
      }
    }
  }
}

对于当地发展:

{
  "mcpServers": {
    "rabbitmq": {
      "command": "node",
      "args": ["/path/to/rabbitmq-masstransit-mcp/dist/index.js"],
      "env": {
        "RABBITMQ_HOST": "localhost",
        "RABBITMQ_USERNAME": "guest",
        "RABBITMQ_PASSWORD": "guest"
      }
    }
  }
}

配置

变量 必填 默认 描述
RABBITMQ_HOST 是 - RabbitMQ管理API主机名
RABBITMQ_PORT 没有 15672 管理API端口
RABBITMQ_USERNAME 是 -- 身份验证用户名
RABBITMQ_PASSWORD 是 -- 身份验证密码
RABBITMQ_VHOST 没有 / 默认虚拟主机
RABBITMQ_SSL 没有 false 使用HTTPS进行管理API
ALLOW_MUTATIVE_TOOLS 没有 false 启用可变工具(清除、删除、发布、重新发布、移动)

您还可以通过CLI标志启用变异工具: --allow-mutative-tools

工具

只读(13个工具)-始终可用

工具 说明
get_overview 集群统计数据:队列总数、连接计数、消息速率
list_queues 列出队列的深度、消费者数量和费率。按vhost、名称模式筛选
get_queue 详细的队列统计信息:深度、速率、消费者、内存、策略
list_exchanges 列出交易所。按vhost、类型筛选
get_exchange 交换详细信息和绑定
list_bindings 列出队列或交换的绑定
list_connections 与客户端信息的活动连接
list_consumers 具有队列分配的活跃消费者
peek_messages 浏览邮件而不消耗(非破坏性)
list_error_queues 查找全部 _error 带有消息计数的队列
list_skipped_queues 查找全部 _skipped 带有消息计数的队列
peek_errors 使用浏览错误队列消息 解析的故障详细信息
get_queue_health 快速健康检查:无消费者,深度不断增长,错误率高

可变(5个工具)-需要 ALLOW_MUTATIVE_TOOLS=true

工具 说明
purge_queue 清除队列中的所有邮件
delete_queue 删除队列
publish_message 向交易所发布消息
republish_from_error 重新发布来自的错误消息 _error 排队到原始交易所
move_messages 将邮件从一个队列移动到另一个队列

MassTransit智能

队列解析错误

peek_errors 不只是转储原始JSON,它读取 MT-Fault-* MassTransit在将消息移动到错误队列时附加的标头,为您提供调试故障所需的一切:

Queue: submit-order_error (3 messages)

Message 1:
  Faulted: 2026-02-15T14:30:05Z
  Reason: fault
  Message Type: MyApp.Messages.OrderSubmitted
  Consumer: MyApp.Consumers.SubmitOrderConsumer
  Exception: Microsoft.Data.SqlClient.SqlException - "Arithmetic overflow error converting numeric to data type numeric."
  Retry Count: 5
  Stack Trace:
    at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(...)
    at MyApp.Data.OrderRepository.GetFees(Int32 orderId) in /src/OrderRepository.cs:line 35
    at MyApp.Services.OrderService.Process(Int32 id) in /src/OrderService.cs:line 51
    at MyApp.Consumers.SubmitOrderConsumer.Consume(ConsumeContext`1 context) in /src/SubmitOrderConsumer.cs:line 11
  Original Payload: { "orderId": "abc-123", "amount": 99.99 }
  Source Host: order-service-swrm-app1b-p02 / order-service (PID 1)
  Assembly: order-service v1.0.3.0 (.NET 8.0.8)

从错误重新发布(两步)

调试的最高价值工具。第一次呼叫预览消息:

> republish_from_error(errorQueue: "submit-order_error", count: 3)

Preview: 3 message(s) from "submit-order_error" ready to republish:
[... parsed fault details ...]

To republish these messages, call again with confirm=true and count=3.

第二次通话 confirm: true 实际消费和重新发布:

> republish_from_error(errorQueue: "submit-order_error", count: 3, confirm: true)

Republished 3/3 message(s) from "submit-order_error".

队列健康检查

快速概述所有队列中的潜在问题:

> get_queue_health()

⚠ Queues with NO consumers and messages (2):
  order-processing — 150 message(s)
  notification-sender — 42 message(s)

✗ Error queues with messages (3 queues, 89 total):
  submit-order_error — 45 message(s)
  payment-process_error — 32 message(s)
  email-send_error — 12 message(s)

△ High depth queues (>1000 messages, 1):
  analytics-events — 15234 message(s), 2 consumer(s)

需求

  • Node.js>=18.0.0
  • 启用管理插件的RabbitMQ(端口15672)

许可证

麻省理工学院