Rocket.Chat通信服务

Rocket.Chat MCP服务器为Nanobot、Cursor和Claude Desktop提供通信服务,支持HTTP和Stdio两种方式。

  • by SufiSR
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 SufiSR/rocketchat-mcp

使用说明

MCP火箭。聊天设置指南

火箭。聊天MCP服务器 纳米机器人、光标和克劳德桌面。将其用作:

  • HTTP服务器(Docker) --容器中没有凭据;客户端(例如Nanobot)在请求头中发送凭据。
  • 工作室 --来自环境或CLI参数的凭据。

凭证

使用时 超文本传输协议 (推荐使用Docker中的Nanobot):MCP服务器运行 没有 资格证书。将它们传递到Nanobot的配置中 mcpServers.<name>.headers;它们随每个请求一起发送。不 .env 或需要容器env。

使用时 标准 或者可选的Docker默认值:使用环境变量或CLI参数。

使用 要么 用户名/密码 或 用户ID+身份验证令牌(当两者都设置时,令牌优先)。

源 服务器URL 用户名/密码 用户ID/身份验证令牌
标头 X-RocketChat-Server-URL 或 X-RocketChat-URL X-RocketChat-Username, X-RocketChat-Password X-RocketChat-User-Id, X-RocketChat-Auth-Token
环境 ROCKETCHAT_SERVER_URL 或 ROCKETCHAT_URL ROCKETCHAT_USERNAME, ROCKETCHAT_PASSWORD ROCKETCHAT_USER_ID, ROCKETCHAT_AUTH_TOKEN
命令行界面 --server-url --username, --password (不可用)

通过HTTP在Nanobot内以MCP运行(推荐)

MCP服务器运行 没有凭据 在容器中。Nanobot在每次请求时通过标头发送凭据。

  1. 启动MCP服务器 (无环境变量或 .env 必填):

    docker compose up -d
    

    它监听 http://<host>:3011/mcp.

  2. 配置Nanobot (~/.nanobot/config.json):添加服务器 网址 和 标头 (凭据仅存在于您的配置中):

    {
      "tools": {
        "mcpServers": {
          "mcp-rocketchat": {
            "url": "http://rocketchat-mcp:3011/mcp",
            "headers": {
              "X-RocketChat-Server-URL": "https://chat.example.com",
              "X-RocketChat-User-Id": "your-user-id",
              "X-RocketChat-Auth-Token": "your-auth-token"
            }
          }
        }
      }
    }
    

    备选--用户名/密码 (服务器将在首次使用时登录):

    "headers": {
      "X-RocketChat-Server-URL": "https://chat.example.com",
      "X-RocketChat-Username": "your-bot-user",
      "X-RocketChat-Password": "your-password"
    }
    

    使用从Nanobot到达MCP服务器的主机名(例如。 rocketchat-mcp 如果两者都在同一个Docker网络上,或者 host.docker.internal:3011 如果服务器在主机上运行)。

  3. 重新启动Nanobot。每次MCP请求都会发送凭据;容器里什么也没有储存。


在Nanobot(stdio)中作为MCP运行

Nanobot将服务器作为子进程启动,并通过stdio进行对话。凭据必须作为运行Nanobot的env变量可用。

  1. 设置环境变量 (例如,在您的shell配置文件中或您启动Nanobot的地方)。使用用户名/密码或用户ID+身份验证令牌:

    export ROCKETCHAT_SERVER_URL="https://your-server.com"
    # Option A: username/password
    export ROCKETCHAT_USERNAME="your-bot-user"
    export ROCKETCHAT_PASSWORD="your-password"
    # Option B: user ID + auth token (instead of A)
    # export ROCKETCHAT_USER_ID="your-user-id"
    # export ROCKETCHAT_AUTH_TOKEN="your-auth-token"
    
  2. 将MCP服务器添加到Nanobot配置中 (~/.nanobot/config.json):

    {
      "tools": {
        "mcpServers": {
          "rocketchat": {
            "command": "python",
            "args": ["/absolute/path/to/rocketchat.py"]
          }
        }
      }
    }
    

    或与 uv 从项目目录中:

    {
      "tools": {
        "mcpServers": {
          "rocketchat": {
            "command": "uv",
            "args": ["run", "--project", "/path/to/rocketchat-mcp", "rocketchat.py"]
          }
        }
      }
    }
    
  3. 重新启动Nanobot(例如。 nanobot gateway).代理可以使用RocketChat工具。

不 --transport 或 --server-url 需要:服务器使用 标准 默认情况下,从环境中读取凭据。


使用Cursor/Claude桌面(stdio)运行

与Nanobot相同:使用env-vars作为凭据,并使用以下命令启动服务器 不 --transport (默认为stdio)。

示例(args中的凭据;在共享环境中避免):

{
  "mcpServers": {
    "rocketchat": {
      "command": "python",
      "args": [
        "C:/path/to/rocketchat.py",
        "--server-url", "https://your-server.com",
        "--username", "user",
        "--password", "pass"
      ]
    }
  }
}

更倾向于在环境中设置凭据(ROCKETCHAT_SERVER_URL 加上用户名/密码或 ROCKETCHAT_USER_ID/ROCKETCHAT_AUTH_TOKEN)并且仅使用:

{
  "mcpServers": {
    "rocketchat": {
      "command": "python",
      "args": ["C:/path/to/rocketchat.py"]
    }
  }
}

Docker:容器中没有凭据

图像已构建并运行 没有 任何RocketChat凭据。从以下内容开始:

docker compose up -d

服务器正在监听 http://0.0.0.0:3011/mcp客户端(例如Nanobot)必须通过凭据表中列出的标头在每次请求时发送凭据。您可以选择设置 ROCKETCHAT_* 如果您希望为不发送标头的客户端设置默认值,请在容器中添加env变量。


本地Python设置(无Docker)

uv venv
.venv\Scripts\activate   # or: source .venv/bin/activate
uv sync
  • 标准(适用于纳米机器人/光标): 集 ROCKETCHAT_* env变量,然后运行:

    python rocketchat.py
    

    (如上配置后,Nanobot/Cursor将为您启动此程序。)

  • HTTP(本地测试):

    set MCP_TRANSPORT=streamable-http
    python rocketchat.py
    

    或者:

    python rocketchat.py --transport streamable-http --port 3011
    

暴露于代理的工具

  • list_users –列出用户
  • find_channel –按名称查找房间(频道、DM、私人);为消息/发送返回room_id
  • list_all_rooms –列出所有房间(频道、DM、私人等)
  • send_message_in_channel –发送消息(频道名称或房间id)
  • get_channel_messages –获取房间中的最新消息(需要room_id)
  • get_user_info –用户信息
  • create_channel –创建频道

为了得到 XY频道中的最后一条消息:呼叫 find_channel("XY") 首先,然后 get_channel_messages(room_id=<from find_channel>, count=1).


有关更多详细信息,请参阅 火箭。聊天API 和 Nanobot自述.