RocketChat MCP for LibreChat
一 主控程序 服务器允许 Librechat 用户从他们的Rocket搜索、检索和总结消息。聊天工作区——并将房间标记为已读。
用户可以做什么:
- 总结一段时间内的渠道或DM(“从上周开始了解#账户管理”)
- 在所有房间中搜索对某个主题的提及(“唐纳德·特朗普在哪里被提及?”)
- 阅读与同事的DM对话
- 检查并阅读所有房间的未读消息
- 将房间标记为已读(单人房或一次全部)
- 查找用户信息和房间列表
- 对任何日期(“上周一”、“昨天”、“2天前”)使用自然语言——不需要ISO 8601
什么是故意禁用: 发送消息和创建频道。
______________________________________________________________________
建筑
LibreChat user
│ POST /mcp
│ Headers: X-RocketChat-User-Id, X-RocketChat-Auth-Token
▼
rocketchat-mcp (Docker, port 3011)
│ ROCKETCHAT_SERVER_URL from env (fixed by admin)
│ auth token from request header (per user)
▼
Rocket.Chat server凭证分为两层:
| 层级 | 内容 | 地点 |
|---|---|---|
| 管理员 | 服务器URL | ROCKETCHAT_SERVER_URL env变量 docker-compose.yaml --设置一次,适用于所有用户 |
| 用户 | 用户ID+身份验证令牌 | librechat customUserVars → 每次调用时作为请求标头发送 |
每个用户都使用自己的个人访问令牌进行身份验证。服务器URL永远不是用户可配置的(防止重定向到任意服务器)。
______________________________________________________________________
设置
1.部署MCP服务器
编辑 docker-compose.yaml 并设置你的火箭。聊天服务器URL:
environment:
MCP_TRANSPORT: "streamable-http"
MCP_PORT: "3011"
MCP_HOST: "0.0.0.0"
ROCKETCHAT_SERVER_URL: "https://chat.yourcompany.com" # :3011/mcp`.
### 2.配置库
将以下代码块添加到LibreChat配置文件中 `mcpServers:`。复制自 `librechat.example.yaml` 或直接粘贴:
mcpServers: rocketchat: title: "Rocket.Chat" description: "Search and summarize your Rocket.Chat channels and DMs" type: streamable-http # Adjust to match your deployment (host.docker.internal if LibreChat is also in Docker) url: "http://host.docker.internal:3011/mcp" headers: X-RocketChat-User-Id: "{{ROCKETCHAT_USER_ID}}" X-RocketChat-Auth-Token: "{{ROCKETCHAT_AUTH_TOKEN}}" customUserVars: ROCKETCHAT_USER_ID: title: "Rocket.Chat User ID" description: > Your personal Rocket.Chat User ID. Find it under My Account → Profile, or ask your admin. ROCKETCHAT_AUTH_TOKEN: title: "Rocket.Chat Auth Token" description: > Your personal Rocket.Chat authentication token. Create one under My Account → Personal Access Tokens → Add New Token.
### 3.用户在LibreChat中设置凭据
当用户首次使用Rocket时。LibreChat中的聊天工具,会提示他们输入个人信息 **用户ID** 和 **身份验证令牌**。这些存储在他们的LibreChat个人资料中,并在每个MCP请求中作为标头发送。
**如何在Rocket中查找您的凭据。聊天:**
- **用户ID:** `My Account → Profile` (显示在页面URL中,或在下面询问您的管理员 `Admin > Users`)
- **身份验证令牌:** `My Account → Personal Access Tokens → Add New Token`
______________________________________________________________________
## 工具
### 阅读工具
|工具|说明|
|------|-------------|
| `list_users` |列出工作区中的所有用户(用户名、姓名、电子邮件)|
| `list_all_rooms` |列出用户可以访问的所有房间(频道、DM、私人)|
| `find_channel` |按名称查找房间(部分匹配或完全匹配)。返回房间ID以用于其他工具|
| `get_user_info` |按用户名获取特定用户的个人资料详细信息|
| `get_channel_messages` |获取房间中最近的N条消息(最新消息优先)|
| `get_room_messages_since` |获取约会后房间中的所有消息——非常适合摘要|
| `get_unread_messages` |按房间分组,获取已验证用户的所有未读消息|
| `get_subscriptions_delta` |获取自约会以来每个房间的未读计数和提及计数|
| `search_messages` |在所有房间或特定房间进行全文搜索,并可选择日期和用户过滤器|
| `normalize_date` |将任何日期表达式解析为ISO 8601 UTC(用于确认自然语言日期)|
### 编写工具
|工具|说明|
|------|-------------|
| `mark_room_as_read` |将单个房间中的所有邮件标记为已读|
| `mark_multiple_rooms_as_read` |在一次通话中将多个房间标记为已读|
### `search_messages` --消歧义
当 `room_name` 提供但匹配多个房间,该工具返回 `AMBIGUOUS:` 列出所有候选人及其ID的响应。人工智能将这些信息转发给用户(“你是说……吗?”),然后重试 `room_id` 一旦用户澄清。
“在Alex频道中搜索”的示例流程:
Tool returns: AMBIGUOUS: Found 2 rooms matching 'alex': - [DM] Alex Schuessler (room_id="abc123") - [Channel] alex-general (room_id="def456") Retry with: search_messages(query="...", room_id="")
AI asks user: "Did you mean Alex Schuessler (DM) or alex-general (channel)?" User clarifies → AI retries with room_id="abc123"
要完全跳过消歧,请传递 `room_id` 直接代替 `room_name`.
______________________________________________________________________
## 常见用法示例
**总结过去一周的频道:**
"Give me a summary of what happened in #account-management this week"
AI呼叫 `find_channel("account-management")`那么 `get_room_messages_since(room_id, since_ts="last monday")`.
**在所有渠道中搜索主题:**
"In which channels was Donald Trump mentioned and what was said?"
AI呼叫 `search_messages(query="Donald Trump")`.
**用自然语言搜索日期范围:**
"Show me all messages about the budget from last week"
AI呼叫 `search_messages(query="budget", date_from="last monday", date_to="last friday")`.
**赶上DM:**
"What did Alex Schuessler write to me while I was out?"
AI呼叫 `find_channel("Alex Schuessler")` 要获取DM房间ID,则 `get_channel_messages(room_id, count=50)`.
**检查您离开时活动的内容:**
"Which channels had the most activity last week?"
AI呼叫 `get_subscriptions_delta(updated_since="last monday")` 查看每个房间的未读计数。
**阅读并标记未读邮件:**
"Show me what I missed and mark everything as read"
AI呼叫 `get_unread_messages()`,显示摘要,然后调用 `mark_multiple_rooms_as_read(room_ids=[...])` 在用户确认之后。
______________________________________________________________________
## 本地开发(无Docker)
uv venv .venv\Scripts\activate # Windows
source .venv/bin/activate # macOS/Linux
uv sync
在您的环境中设置凭据:
Windows
set ROCKETCHAT_SERVER_URL=https://chat.yourcompany.com set ROCKETCHAT_USER_ID=your-user-id set ROCKETCHAT_AUTH_TOKEN=your-auth-token
macOS/Linux
export ROCKETCHAT_SERVER_URL=https://chat.yourcompany.com export ROCKETCHAT_USER_ID=your-user-id export ROCKETCHAT_AUTH_TOKEN=your-auth-token
在stdio模式下运行(适用于Cursor/Claude Desktop):
python rocketchat.py
在HTTP模式下运行(在本地测试LibreChat路径):
python rocketchat.py --transport streamable-http --port 3011
### 光标/克劳德桌面(stdio)
{ "mcpServers": { "rocketchat": { "command": "python", "args": ["C:/path/to/rocketchat.py"] } } }
配置中有凭据(不太推荐——在共享环境中避免):
{ "mcpServers": { "rocketchat": { "command": "python", "args": [ "C:/path/to/rocketchat.py", "--server-url", "https://chat.yourcompany.com" ], "env": { "ROCKETCHAT_USER_ID": "your-user-id", "ROCKETCHAT_AUTH_TOKEN": "your-auth-token" } } } }
______________________________________________________________________
## 凭证参考
|源|用户ID|身份验证令牌|
|--------|---------|------------|
| **请求头** (歌词)| `X-RocketChat-User-Id` | `X-RocketChat-Auth-Token` |
| **Env 是** (本地/stdio)| `ROCKETCHAT_USER_ID` | `ROCKETCHAT_AUTH_TOKEN` |
| **Env就是一切。** (用户名/密码)| `ROCKETCHAT_USERNAME` | `ROCKETCHAT_PASSWORD` |
服务器URL为 **总是** 从阅读 `ROCKETCHAT_SERVER_URL` 环境变量。它不能通过标头覆盖。
______________________________________________________________________
## 参考文献
- [火箭。聊天REST API](https://developer.rocket.chat/apidocs)
- [LibreChat MCP文档](https://www.librechat.ai/docs/configuration/librechat_yaml/object_structure/mcp_servers)
- [模型上下文协议](https://modelcontextprotocol.io/)