使用说明
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" # <-- set this
然后启动容器:
docker compose up -d
服务器监听 http://<host>: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="<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 环境变量。它不能通过标头覆盖。