Sidekiq MCP 服务器使用说明

项目简介

'Sidekiq MCP' 是一个Ruby Gem,它提供了一个Model Context Protocol (MCP) 服务器。该服务器允许大型语言模型(LLMs)通过标准化的JSON-RPC接口,直接与Sidekiq后台任务队列进行交互。通过此集成,LLM能够智能地查询Sidekiq的运行状态、管理作业、监控队列健康等,从而实现更高级别的Sidekiq操作和自动化。

主要功能点

该MCP服务器提供了一系列工具,允许LLM执行以下操作:

  • 统计与监控:
    • 获取Sidekiq的整体统计信息,包括已处理、失败、繁忙作业数、队列中的作业数等。
    • 按作业类别细分作业计数、重试次数和错误率。
    • 显示当前运行和繁忙的工作进程数量。
    • 提供队列健康状况的启发式分析,判断队列是否积压或健康。
  • 队列检查:
    • 列出所有Sidekiq队列及其大小和延迟信息。
    • 获取特定队列的详细信息,包括其中的作业列表。
    • 列出当前正在处理作业的工作进程及其作业详情。
  • 作业管理:
    • 查询失败作业及其错误详情。
    • 列出处于重试集合中的作业(失败但会重试的作业)。
    • 列出处于计划集合中的作业。
    • 显示处于死作业集合中的作业(已耗尽所有重试机会的作业)。
    • 通过作业ID(JID)获取单个作业的详细参数、错误消息和历史记录。
  • 作业操作:
    • 通过JID重试一个失败的作业。
    • 通过JID删除一个失败的作业。
    • 通过JID从任何集合(队列/计划/重试/死作业)中移除一个作业。
    • 将计划集合中的作业重新安排到新的时间。
    • 将重试或计划集合中的作业移至死作业集合。
    • 清空特定队列中的所有作业(此操作具破坏性)。
  • 实时监控:
    • 支持通过Server-Sent Events (SSE) 实时流式传输Sidekiq统计数据。
    • 获取所有Sidekiq进程/工作进程的详细信息。

安装步骤

要将'Sidekiq MCP'集成到您的Rails或其他Rack应用程序中,请遵循以下步骤:

  1. 添加Gem依赖: 在您的应用程序的'Gemfile'中添加以下行:

    gem 'sidekiq-mcp'
  2. 安装Gem: 运行以下命令安装Gem:

    bundle install
  3. 配置MCP服务器(Rails应用程序): 在Rails应用程序中,创建一个初始化文件 'config/initializers/sidekiq_mcp.rb' 并添加配置:

    # config/initializers/sidekiq_mcp.rb
    Sidekiq::Mcp.configure do |config|
      config.enabled = true # 是否启用MCP服务器,默认为true
      config.path = "/sidekiq-mcp" # MCP服务器的访问路径,默认为"/sidekiq-mcp"
      # 设置认证令牌,LLM客户端在发送请求时需要此令牌。建议从环境变量读取以保护敏感信息。
      config.auth_token = Rails.application.credentials.sidekiq_mcp_token 
      config.sse_enabled = true # 是否启用Server-Sent Events (SSE) 实时更新功能,默认为true
    end
  4. 手动设置(非Rails Rack应用程序): 对于非Rails的Rack应用程序,您需要在Rack堆栈中添加'Sidekiq::Mcp::Middleware':

    require 'sidekiq/mcp'
    
    # 配置MCP服务器
    Sidekiq::Mcp.configure do |config|
      config.auth_token = "your-secret-token" # 设置您的认证令牌
      # 您也可以配置config.path和config.sse_enabled
    end
    
    # 将MCP中间件添加到您的config.ru或自定义中间件堆栈中
    use Sidekiq::Mcp::Middleware
    # 如果您启用了SSE功能,也需要添加SseMiddleware
    # use Sidekiq::Mcp::SseMiddleware 
    run YourRackApp

服务器配置 (LLM客户端使用)

MCP服务器配置完成后,LLM客户端需要相应的配置信息才能与其建立连接。以下是针对几种常见MCP客户端的配置示例。请将'http://localhost:3000/sidekiq-mcp'替换为您的MCP服务器的实际URL,并将'your-secret-token'替换为您的认证令牌。

Claude Desktop

在您的 'claude_desktop_config.json' 文件中添加以下配置:

{
  "mcpServers": {
    "sidekiq": {
      "command": "curl",
      "args": [
        "-X", "POST",
        "-H", "Content-Type: application/json",
        "-H", "Authorization: Bearer your-secret-token",
        "http://localhost:3000/sidekiq-mcp"
      ]
    }
  }
}

配置说明:

  • 'sidekiq': 为您的MCP服务器实例定义的名称,LLM将通过此名称引用您的服务器。
  • 'command': 指定用于与MCP服务器通信的命令行工具,这里使用'curl'。
  • 'args': 传递给'curl'命令的参数,包括HTTP请求方法('-X POST')、请求头('-H'用于设置'Content-Type'和'Authorization'认证令牌)以及MCP服务器的完整URL。

VS Code with Claude Extension

在您的VS Code设置中('settings.json')添加以下配置:

{
  "claude.mcpServers": {
    "sidekiq": {
      "url": "http://localhost:3000/sidekiq-mcp",
      "headers": {
        "Authorization": "Bearer your-secret-token"
      }
    }
  }
}

配置说明:

  • 'sidekiq': 为您的MCP服务器实例定义的名称。
  • 'url': MCP服务器的完整HTTP/S端点。
  • 'headers': 包含HTTP请求头信息的对象,这里用于设置'Authorization'头以进行Bearer Token认证。

Cursor

在您的Cursor配置文件中添加以下配置:

{
  "mcp": {
    "servers": {
      "sidekiq": {
        "command": ["curl"],
        "args": [
          "-X", "POST",
          "-H", "Content-Type: application/json", 
          "-H", "Authorization: Bearer your-secret-token",
          "http://localhost:3000/sidekiq-mcp"
        ]
      }
    }
  }
}

配置说明:

  • 'sidekiq': 为您的MCP服务器实例定义的名称。
  • 'command': 用于与MCP服务器通信的命令行工具,这里使用'curl'(以数组形式)。
  • 'args': 传递给'curl'命令的参数,与Claude Desktop配置中的'args'类似,用于指定HTTP方法、请求头和服务器URL。

Claude Code

您可以通过Claude Code CLI工具添加服务器,或直接修改其MCP配置文件。

通过CLI添加:

claude mcp add --transport http sidekiq-mcp-server http://localhost:3000/sidekiq-mcp

通过配置文件添加:

{
  "sidekiq-mcp": {
    "endpoint": "http://localhost:3000/sidekiq-mcp",
    "auth": {
      "type": "bearer",
      "token": "your-secret-token"
    }
  }
}

配置说明:

  • 'sidekiq-mcp': 为您的MCP服务器实例定义的名称。
  • 'endpoint': MCP服务器的完整HTTP/S端点。
  • 'auth': 认证信息,指定认证类型为'bearer',并提供您的'token'。

基本使用方法

一旦Sidekiq MCP服务器成功运行并且LLM客户端已正确配置并连接,您就可以通过自然语言向LLM提问,让它调用Sidekiq MCP服务器提供的工具。例如:

  • "Sidekiq当前状态如何?"
  • "显示失败的作业及其错误信息。"
  • "列出所有队列和它们的健康状况。"
  • "哪个作业类的错误率最高?"
  • "显示作业ID为 'abc123' 的详细信息。"
  • "重试作业 'abc123'。"
  • "作业 'abc123' 有什么问题?"
  • "重新安排作业 'abc123' 到明天早上9点运行。"
  • "清空 'low_priority' 队列中的所有作业。"
  • "开始实时统计数据流。"
  • "现在有多少个工作进程正在运行和忙碌?"

信息

分类

开发者工具