Skip to content

MCP 服务器 ​

Rahdar 支持 Model Context Protocol,因此助手可以针对你真实的集群回答*"为什么 ORDERS.DLQ 堆积了"*,而不是靠猜。

它暴露的是十六个意图化工具——diagnose、message_action、broker_config_change——而不是 REST API 的镜像。镜像会把模型的上下文耗在管道细节上,再把诊断工作丢回给它;这里的工具是按问题的形状设计的(ADR-0045,英文)。

获取密钥 ​

登录 → 头像菜单 → Account → API keys → New key → 选择过期时间、它携带的范围与权限,以及(可选)它可以调用的 MCP 工具 → 复制。密钥只显示一次。

  • 过期。 每把密钥都会过期,最长为安装设定的最大寿命(默认 90 天,Settings → API tokens → Maximum lifetime)。调低最大寿命会立刻缩短已有密钥。
  • 工具。 限定了工具的密钥只会看到这些工具以及 rahdar_help;其他工具既不会列出也不会被描述,调用它们得到的回答与调用不存在的工具完全相同。
  • 轮换。 Rotate 会签发新密钥,旧密钥在轮换重叠期内(默认 24 小时)继续可用,因此可以不中断地更新助手的配置。密钥保留原有权限和过期时间。
  • 限流。 每把密钥每分钟最多 600 个请求、同时最多 8 个,每个用户所有密钥合计每分钟 1,200 个。每个响应都带有 RateLimit-Limit、RateLimit-Remaining 和 RateLimit-Reset,超出的请求得到 429 和 Retry-After。
  • 用量 按天显示每把密钥的请求数,以及被拒绝、被限流和失败的数量。拥有 See and revoke every user's API tokens 权限的管理员可以在 Admin → API keys 中看到所有密钥,长期未用的会被标记,任何密钥都可以吊销(ADR-0136,英文)。

接入 ​

POST /mcp,与界面同源,密钥作为 bearer token。

json
{
  "mcpServers": {
    "rahdar": {
      "type": "http",
      "url": "https://rahdar.example.com/mcp",
      "headers": { "Authorization": "Bearer as_..." }
    }
  }
}

不用客户端也能冒烟测试:

bash
curl -s https://rahdar.example.com/mcp \
  -H "Authorization: Bearer as_..." \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

都有什么 ​

类型名称用途
Toolrahdar_help目录本身:每个工具、它的姿态与参数
Tooldiagnose一个集群(每个节点的 HA 角色、脑裂、复制延迟、正在触发的告警)或一个队列的全链路
Toollist_resources队列、地址、消费者、会话、连接、生产者、divert、bridge
Toolmetric_series单个指标的分桶时间序列
Toolconfig_diff每个节点的配置与多数值的比较:发生漂移的键和与多数不同的节点
Toolbroker_config集群的声明、每个节点的漂移、broker.xml 片段,或历史应用
Toolbrowse_messages消息头,或按 id 取单条消息体
Tooltrace_request_reply流、延迟与超时统计、已配置的预期
Toolactivity_logBroker 事件,或 Rahdar 自身的审计链路
Toolmessage_action移动 / 重投 / 删除 / 过期 / 清空
Toolqueue_lifecycle创建、更新、暂停、恢复或销毁队列、地址或 divert
Toolbroker_config_change声明一份配置,或以金丝雀优先、按 id 确认危害的方式应用它
Toolconnection_action关闭连接、会话、消费者或某个地址的全部消费者
Toolsend_message投递一条消息
Toolalert_rule / rahdar_setting告警规则;运维设置
Resourcerahdar://clusters、rahdar://permissions、rahdar://tools这把密钥能看到什么、能做什么
Resourcecluster://{id}/topology、cluster://{id}/capabilities、cluster://{id}/nodes/{nodeId}/settings节点;连接支持什么,以及启用其余部分所需的 broker.xml;单个节点的生效设置
Prompttriage_cluster、investigate_queue、before_you_purge、tune_scrape_load运行手册

安全契约 ​

一个握有管理 API 的助手,正是安全模型必须写得枯燥而明确的地方。这里就是:

  • 密钥永远不会超过它的所有者。 每次调用都会与所有者当下的授权取交集,所以收紧一个人的权限会立刻收紧他的所有密钥(ADR-0046,英文)。
  • 变更默认 dry-run。 真正的破坏性执行还额外要求 confirm 等于队列自身的名称——这与批量上限的 override 是两个不同的问题,confirm 永远无法满足 override。
  • 每次调用都会被审计,读取也不例外:以 MCP_TOOL_CALL 记在所有者名下并附上密钥名称(ada [token: laptop-agent]),写明工具、集群和结果。变更写下的审计行(包括 dry run)都挂在它下面(ADR-0137,英文)。
  • 整个安装可以设为只读。 Settings → MCP server → Read-only 会对所有密钥隐藏并拒绝一切变更类工具,无论 confirm 为何。单把只读密钥就是只被授予读权限的密钥。
  • 对于密钥没有授权的集群,返回的是*"不存在这样的集群,或这把密钥对它没有授权"*——既不点名缺了哪项权限,也不确认这个 id 是否存在。

发现机制 ​

rahdar_help 是一个工具,而不是一个可选资源;并且由同一份目录生成 schema、帮助文本、资源与服务器说明——所以它们不可能相互矛盾(ADR-0054,英文)。

Apache-2.0. Apache ActiveMQ and Apache ActiveMQ Artemis are trademarks of the Apache Software Foundation. Rahdar is an independent project, not produced by, endorsed by, or affiliated with the ASF.