mcp-server-rocketchat-threads 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +332 -0
  3. package/dist/api/client.d.ts +119 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +305 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/index.d.ts +6 -0
  8. package/dist/api/index.d.ts.map +1 -0
  9. package/dist/api/index.js +22 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/api/schemas.d.ts +10636 -0
  12. package/dist/api/schemas.d.ts.map +1 -0
  13. package/dist/api/schemas.js +267 -0
  14. package/dist/api/schemas.js.map +1 -0
  15. package/dist/api/types.d.ts +263 -0
  16. package/dist/api/types.d.ts.map +1 -0
  17. package/dist/api/types.js +7 -0
  18. package/dist/api/types.js.map +1 -0
  19. package/dist/config/config.d.ts +37 -0
  20. package/dist/config/config.d.ts.map +1 -0
  21. package/dist/config/config.js +79 -0
  22. package/dist/config/config.js.map +1 -0
  23. package/dist/config/index.d.ts +5 -0
  24. package/dist/config/index.d.ts.map +1 -0
  25. package/dist/config/index.js +21 -0
  26. package/dist/config/index.js.map +1 -0
  27. package/dist/di/container.d.ts +101 -0
  28. package/dist/di/container.d.ts.map +1 -0
  29. package/dist/di/container.js +214 -0
  30. package/dist/di/container.js.map +1 -0
  31. package/dist/di/index.d.ts +6 -0
  32. package/dist/di/index.d.ts.map +1 -0
  33. package/dist/di/index.js +12 -0
  34. package/dist/di/index.js.map +1 -0
  35. package/dist/formatters/index.d.ts +6 -0
  36. package/dist/formatters/index.d.ts.map +1 -0
  37. package/dist/formatters/index.js +22 -0
  38. package/dist/formatters/index.js.map +1 -0
  39. package/dist/formatters/message-formatter.d.ts +64 -0
  40. package/dist/formatters/message-formatter.d.ts.map +1 -0
  41. package/dist/formatters/message-formatter.js +161 -0
  42. package/dist/formatters/message-formatter.js.map +1 -0
  43. package/dist/formatters/response-builder.d.ts +60 -0
  44. package/dist/formatters/response-builder.d.ts.map +1 -0
  45. package/dist/formatters/response-builder.js +108 -0
  46. package/dist/formatters/response-builder.js.map +1 -0
  47. package/dist/guards/index.d.ts +12 -0
  48. package/dist/guards/index.d.ts.map +1 -0
  49. package/dist/guards/index.js +42 -0
  50. package/dist/guards/index.js.map +1 -0
  51. package/dist/guards/input-validator.d.ts +89 -0
  52. package/dist/guards/input-validator.d.ts.map +1 -0
  53. package/dist/guards/input-validator.js +266 -0
  54. package/dist/guards/input-validator.js.map +1 -0
  55. package/dist/guards/rate-limiter.d.ts +115 -0
  56. package/dist/guards/rate-limiter.d.ts.map +1 -0
  57. package/dist/guards/rate-limiter.js +226 -0
  58. package/dist/guards/rate-limiter.js.map +1 -0
  59. package/dist/guards/sanitizer.d.ts +35 -0
  60. package/dist/guards/sanitizer.d.ts.map +1 -0
  61. package/dist/guards/sanitizer.js +111 -0
  62. package/dist/guards/sanitizer.js.map +1 -0
  63. package/dist/guards/write-guard.d.ts +33 -0
  64. package/dist/guards/write-guard.d.ts.map +1 -0
  65. package/dist/guards/write-guard.js +90 -0
  66. package/dist/guards/write-guard.js.map +1 -0
  67. package/dist/http-server.d.ts +9 -0
  68. package/dist/http-server.d.ts.map +1 -0
  69. package/dist/http-server.js +190 -0
  70. package/dist/http-server.js.map +1 -0
  71. package/dist/index.d.ts +14 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +114 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/tools/base.d.ts +85 -0
  76. package/dist/tools/base.d.ts.map +1 -0
  77. package/dist/tools/base.js +184 -0
  78. package/dist/tools/base.js.map +1 -0
  79. package/dist/tools/channel-tools.d.ts +18 -0
  80. package/dist/tools/channel-tools.d.ts.map +1 -0
  81. package/dist/tools/channel-tools.js +151 -0
  82. package/dist/tools/channel-tools.js.map +1 -0
  83. package/dist/tools/handler-utils.d.ts +75 -0
  84. package/dist/tools/handler-utils.d.ts.map +1 -0
  85. package/dist/tools/handler-utils.js +105 -0
  86. package/dist/tools/handler-utils.js.map +1 -0
  87. package/dist/tools/index.d.ts +17 -0
  88. package/dist/tools/index.d.ts.map +1 -0
  89. package/dist/tools/index.js +40 -0
  90. package/dist/tools/index.js.map +1 -0
  91. package/dist/tools/message-tools.d.ts +20 -0
  92. package/dist/tools/message-tools.d.ts.map +1 -0
  93. package/dist/tools/message-tools.js +194 -0
  94. package/dist/tools/message-tools.js.map +1 -0
  95. package/dist/tools/thread-tools.d.ts +23 -0
  96. package/dist/tools/thread-tools.d.ts.map +1 -0
  97. package/dist/tools/thread-tools.js +243 -0
  98. package/dist/tools/thread-tools.js.map +1 -0
  99. package/dist/tools/user-tools.d.ts +14 -0
  100. package/dist/tools/user-tools.d.ts.map +1 -0
  101. package/dist/tools/user-tools.js +120 -0
  102. package/dist/tools/user-tools.js.map +1 -0
  103. package/dist/tools/write-tools.d.ts +15 -0
  104. package/dist/tools/write-tools.d.ts.map +1 -0
  105. package/dist/tools/write-tools.js +181 -0
  106. package/dist/tools/write-tools.js.map +1 -0
  107. package/dist/utils/cache.d.ts +47 -0
  108. package/dist/utils/cache.d.ts.map +1 -0
  109. package/dist/utils/cache.js +116 -0
  110. package/dist/utils/cache.js.map +1 -0
  111. package/dist/utils/error-handler.d.ts +64 -0
  112. package/dist/utils/error-handler.d.ts.map +1 -0
  113. package/dist/utils/error-handler.js +148 -0
  114. package/dist/utils/error-handler.js.map +1 -0
  115. package/dist/utils/index.d.ts +12 -0
  116. package/dist/utils/index.d.ts.map +1 -0
  117. package/dist/utils/index.js +33 -0
  118. package/dist/utils/index.js.map +1 -0
  119. package/dist/utils/logger.d.ts +50 -0
  120. package/dist/utils/logger.d.ts.map +1 -0
  121. package/dist/utils/logger.js +118 -0
  122. package/dist/utils/logger.js.map +1 -0
  123. package/dist/utils/time-parser.d.ts +37 -0
  124. package/dist/utils/time-parser.d.ts.map +1 -0
  125. package/dist/utils/time-parser.js +98 -0
  126. package/dist/utils/time-parser.js.map +1 -0
  127. package/dist/utils/token-counter.d.ts +42 -0
  128. package/dist/utils/token-counter.d.ts.map +1 -0
  129. package/dist/utils/token-counter.js +81 -0
  130. package/dist/utils/token-counter.js.map +1 -0
  131. package/package.json +68 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,332 @@
1
+ # Rocket.Chat Threads MCP
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)
5
+ [![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/)
6
+
7
+ [English](#english) | [한국어](#한국어) | [日本語](#日本語) | [中文](#中文)
8
+
9
+ ---
10
+
11
+ ## English
12
+
13
+ MCP (Model Context Protocol) server for Rocket.Chat with **full thread support** - search, list, and retrieve thread discussions.
14
+
15
+ ### Why This MCP?
16
+
17
+ Unlike basic chat integrations, this MCP focuses on **thread-based conversations**:
18
+
19
+ | Feature | Basic MCP | Threads MCP |
20
+ |---------|-----------|---------------|
21
+ | Thread Support | No | Full (list/get/search) |
22
+ | Search Thread Replies | No | Yes |
23
+ | Time Filtering | No | 1d, 7d, 1w, 1m |
24
+ | Auth Method | Password | Token (secure) |
25
+ | Write Protection | Always on | Off by default |
26
+ | @all Prevention | No | Auto-blocked |
27
+ | Rate Limiting | No | Yes |
28
+ | Unit Tests | No | 231 tests |
29
+
30
+ ### Features
31
+
32
+ - **Thread-Centric**: Threads as the unit of discussions and decisions
33
+ - **Deep Search**: Search within thread replies, not just parent messages
34
+ - **Time Filtering**: Filter by `1d`, `7d`, `1w`, `1m` or date ranges
35
+ - **Safe Writes**: Disabled by default, @mentions auto-neutralized
36
+ - **Type-Safe**: Full TypeScript with Zod validation
37
+
38
+ ### Installation
39
+
40
+ ```bash
41
+ git clone https://github.com/huiseo/rocketchat-threads-mcp.git
42
+ cd rocketchat-threads-mcp
43
+ npm install
44
+ npm run build
45
+ ```
46
+
47
+ ### Configuration
48
+
49
+ ```env
50
+ ROCKETCHAT_URL=https://your-rocketchat-server.com
51
+ ROCKETCHAT_AUTH_TOKEN=your-auth-token
52
+ ROCKETCHAT_USER_ID=your-user-id
53
+
54
+ # Optional: Enable writes (disabled by default)
55
+ ROCKETCHAT_WRITE_ENABLED=true
56
+ ROCKETCHAT_WRITE_ROOMS=general,dev-team
57
+ ```
58
+
59
+ ### Claude Desktop Setup
60
+
61
+ Add to `~/.config/claude/claude_desktop_config.json`:
62
+
63
+ ```json
64
+ {
65
+ "mcpServers": {
66
+ "rocketchat": {
67
+ "command": "node",
68
+ "args": ["/path/to/rocketchat-threads-mcp/dist/index.js"],
69
+ "env": {
70
+ "ROCKETCHAT_URL": "https://your-server.com",
71
+ "ROCKETCHAT_AUTH_TOKEN": "your-token",
72
+ "ROCKETCHAT_USER_ID": "your-user-id"
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ### Available Tools
80
+
81
+ | Tool | Description |
82
+ |------|-------------|
83
+ | `rocketchat_list_channels` | List accessible channels |
84
+ | `rocketchat_search_channels` | Search channels by name |
85
+ | `rocketchat_get_channel_info` | Get channel details |
86
+ | `rocketchat_get_messages` | Get messages with time filtering |
87
+ | `rocketchat_search_messages` | Search message content |
88
+ | `rocketchat_get_message` | Get specific message |
89
+ | `rocketchat_list_threads` | List threads in channel |
90
+ | `rocketchat_get_thread` | Get thread with all replies |
91
+ | `rocketchat_search_threads` | Search within thread replies |
92
+ | `rocketchat_lookup_user` | Find user info |
93
+ | `rocketchat_list_users` | List users |
94
+ | `rocketchat_get_me` | Get current user |
95
+ | `rocketchat_send_message` | Send message (opt-in) |
96
+ | `rocketchat_react` | Add reaction (opt-in) |
97
+ | `rocketchat_get_write_status` | Check write permissions |
98
+
99
+ ### Optional: OpenSearch Integration
100
+
101
+ This MCP works with or without OpenSearch on your Rocket.Chat server:
102
+
103
+ | Feature | Without OpenSearch | With OpenSearch |
104
+ |---------|-------------------|-----------------|
105
+ | Channel-specific search | ✅ Works | ✅ Works |
106
+ | Global search (no roomId) | ❌ Requires roomId | ✅ Works |
107
+ | Search highlighting | ❌ | ✅ `<mark>` tags |
108
+ | Multi-language search | Limited | ✅ Full support |
109
+
110
+ **How to check:** Try `rocketchat_search_messages` without roomId. If it works, OpenSearch is enabled.
111
+
112
+ **For server administrators:** To enable OpenSearch with Docker, see [rocketchat-enhanced](https://github.com/huiseo/rocketchat-enhanced) - a single Docker package with RocketChat + OpenSearch + real-time indexing.
113
+
114
+ ---
115
+
116
+ ## 한국어
117
+
118
+ Rocket.Chat용 MCP (Model Context Protocol) 서버 - AI 에이전트가 스레드, 토론, 결정 사항에서 **조직 지식을 검색**할 수 있게 합니다.
119
+
120
+ ### 왜 이 MCP인가?
121
+
122
+ 기본 채팅 연동과 달리, 이 MCP는 **지식 검색**에 초점을 맞춥니다:
123
+
124
+ | 기능 | 기본 MCP | Knowledge MCP |
125
+ |------|----------|---------------|
126
+ | 스레드 지원 | 없음 | 완전 지원 |
127
+ | 스레드 답글 검색 | 없음 | 지원 |
128
+ | 시간 필터링 | 없음 | 1d, 7d, 1w, 1m |
129
+ | 인증 방식 | 비밀번호 | 토큰 (보안) |
130
+ | 쓰기 보호 | 항상 켜짐 | 기본 꺼짐 |
131
+ | @all 차단 | 없음 | 자동 차단 |
132
+ | 속도 제한 | 없음 | 지원 |
133
+ | 유닛 테스트 | 없음 | 231개 |
134
+
135
+ ### 주요 기능
136
+
137
+ - **스레드 중심**: 토론과 결정의 단위로서의 스레드
138
+ - **심층 검색**: 부모 메시지뿐 아니라 스레드 답글 내 검색
139
+ - **시간 필터링**: `1d`, `7d`, `1w`, `1m` 또는 날짜 범위로 필터
140
+ - **안전한 쓰기**: 기본 비활성화, @멘션 자동 중화
141
+ - **타입 안전**: Zod 검증을 포함한 완전한 TypeScript
142
+
143
+ ### 설치
144
+
145
+ ```bash
146
+ git clone https://github.com/huiseo/rocketchat-threads-mcp.git
147
+ cd rocketchat-threads-mcp
148
+ npm install
149
+ npm run build
150
+ ```
151
+
152
+ ### 설정
153
+
154
+ ```env
155
+ ROCKETCHAT_URL=https://your-rocketchat-server.com
156
+ ROCKETCHAT_AUTH_TOKEN=your-auth-token
157
+ ROCKETCHAT_USER_ID=your-user-id
158
+
159
+ # 선택: 쓰기 활성화 (기본 비활성화)
160
+ ROCKETCHAT_WRITE_ENABLED=true
161
+ ROCKETCHAT_WRITE_ROOMS=general,dev-team
162
+ ```
163
+
164
+ ### 선택사항: OpenSearch 연동
165
+
166
+ 이 MCP는 Rocket.Chat 서버에 OpenSearch가 있든 없든 작동합니다:
167
+
168
+ | 기능 | OpenSearch 없이 | OpenSearch 있음 |
169
+ |------|-----------------|-----------------|
170
+ | 채널별 검색 | ✅ 작동 | ✅ 작동 |
171
+ | 전역 검색 (roomId 없이) | ❌ roomId 필요 | ✅ 작동 |
172
+ | 검색 하이라이팅 | ❌ | ✅ `<mark>` 태그 |
173
+ | 다국어 검색 | 제한적 | ✅ 완전 지원 |
174
+
175
+ **확인 방법:** roomId 없이 `rocketchat_search_messages`를 실행해보세요. 작동하면 OpenSearch가 활성화된 것입니다.
176
+
177
+ **서버 관리자용:** Docker로 OpenSearch를 활성화하려면 [rocketchat-enhanced](https://github.com/huiseo/rocketchat-enhanced)를 참조하세요 - RocketChat + OpenSearch + 실시간 인덱싱이 포함된 단일 Docker 패키지입니다.
178
+
179
+ ---
180
+
181
+ ## 日本語
182
+
183
+ Rocket.Chat用MCP(Model Context Protocol)サーバー - AIエージェントがスレッド、議論、決定事項から**組織知識を検索**できるようにします。
184
+
185
+ ### なぜこのMCPか?
186
+
187
+ 基本的なチャット連携とは異なり、このMCPは**知識検索**に焦点を当てています:
188
+
189
+ | 機能 | 基本MCP | Knowledge MCP |
190
+ |------|---------|---------------|
191
+ | スレッドサポート | なし | 完全対応 |
192
+ | スレッド返信検索 | なし | 対応 |
193
+ | 時間フィルタリング | なし | 1d, 7d, 1w, 1m |
194
+ | 認証方式 | パスワード | トークン(安全) |
195
+ | 書き込み保護 | 常にオン | デフォルトオフ |
196
+ | @all ブロック | なし | 自動ブロック |
197
+ | レート制限 | なし | 対応 |
198
+ | ユニットテスト | なし | 231件 |
199
+
200
+ ### 主な機能
201
+
202
+ - **スレッド中心**: 議論と決定の単位としてのスレッド
203
+ - **深層検索**: 親メッセージだけでなくスレッド返信内を検索
204
+ - **時間フィルタリング**: `1d`、`7d`、`1w`、`1m`または日付範囲でフィルタ
205
+ - **安全な書き込み**: デフォルト無効、@メンション自動無効化
206
+ - **型安全**: Zodバリデーションを含む完全なTypeScript
207
+
208
+ ### インストール
209
+
210
+ ```bash
211
+ git clone https://github.com/huiseo/rocketchat-threads-mcp.git
212
+ cd rocketchat-threads-mcp
213
+ npm install
214
+ npm run build
215
+ ```
216
+
217
+ ### オプション: OpenSearch連携
218
+
219
+ このMCPはRocket.ChatサーバーのOpenSearchの有無にかかわらず動作します:
220
+
221
+ | 機能 | OpenSearchなし | OpenSearchあり |
222
+ |------|----------------|----------------|
223
+ | チャンネル別検索 | ✅ 動作 | ✅ 動作 |
224
+ | グローバル検索(roomIdなし) | ❌ roomId必須 | ✅ 動作 |
225
+ | 検索ハイライト | ❌ | ✅ `<mark>`タグ |
226
+ | 多言語検索 | 制限あり | ✅ 完全対応 |
227
+
228
+ **確認方法:** roomIdなしで`rocketchat_search_messages`を実行してみてください。動作すればOpenSearchが有効です。
229
+
230
+ **サーバー管理者向け:** DockerでOpenSearchを有効にするには、[rocketchat-enhanced](https://github.com/huiseo/rocketchat-enhanced)を参照してください - RocketChat + OpenSearch + リアルタイムインデックスを含む単一Dockerパッケージです。
231
+
232
+ ---
233
+
234
+ ## 中文
235
+
236
+ Rocket.Chat的MCP(Model Context Protocol)服务器 - 使AI代理能够从线程、讨论和决策中**检索组织知识**。
237
+
238
+ ### 为什么选择这个MCP?
239
+
240
+ 与基本聊天集成不同,这个MCP专注于**知识检索**:
241
+
242
+ | 功能 | 基本MCP | Knowledge MCP |
243
+ |------|---------|---------------|
244
+ | 线程支持 | 无 | 完全支持 |
245
+ | 搜索线程回复 | 无 | 支持 |
246
+ | 时间过滤 | 无 | 1d, 7d, 1w, 1m |
247
+ | 认证方式 | 密码 | 令牌(安全) |
248
+ | 写入保护 | 始终开启 | 默认关闭 |
249
+ | @all 阻止 | 无 | 自动阻止 |
250
+ | 速率限制 | 无 | 支持 |
251
+ | 单元测试 | 无 | 231个 |
252
+
253
+ ### 主要功能
254
+
255
+ - **线程中心**: 将线程作为讨论和决策的单位
256
+ - **深度搜索**: 不仅搜索父消息,还搜索线程回复
257
+ - **时间过滤**: 按`1d`、`7d`、`1w`、`1m`或日期范围过滤
258
+ - **安全写入**: 默认禁用,@提及自动中和
259
+ - **类型安全**: 包含Zod验证的完整TypeScript
260
+
261
+ ### 安装
262
+
263
+ ```bash
264
+ git clone https://github.com/huiseo/rocketchat-threads-mcp.git
265
+ cd rocketchat-threads-mcp
266
+ npm install
267
+ npm run build
268
+ ```
269
+
270
+ ### 可选:OpenSearch集成
271
+
272
+ 此MCP无论Rocket.Chat服务器是否有OpenSearch都可以工作:
273
+
274
+ | 功能 | 无OpenSearch | 有OpenSearch |
275
+ |------|--------------|--------------|
276
+ | 频道内搜索 | ✅ 可用 | ✅ 可用 |
277
+ | 全局搜索(无roomId) | ❌ 需要roomId | ✅ 可用 |
278
+ | 搜索高亮 | ❌ | ✅ `<mark>`标签 |
279
+ | 多语言搜索 | 有限 | ✅ 完全支持 |
280
+
281
+ **检查方法:** 不带roomId运行`rocketchat_search_messages`。如果可以运行,说明OpenSearch已启用。
282
+
283
+ **服务器管理员:** 要使用Docker启用OpenSearch,请参阅[rocketchat-enhanced](https://github.com/huiseo/rocketchat-enhanced) - 包含RocketChat + OpenSearch + 实时索引的单一Docker包。
284
+
285
+ ---
286
+
287
+ ## Architecture
288
+
289
+ ```
290
+ src/
291
+ ├── index.ts # Entry point
292
+ ├── server.ts # MCP server setup
293
+ ├── tools/ # Tool definitions
294
+ │ ├── base.ts # Type-safe tool registry
295
+ │ ├── channel-tools.ts
296
+ │ ├── message-tools.ts
297
+ │ ├── thread-tools.ts
298
+ │ ├── user-tools.ts
299
+ │ └── write-tools.ts
300
+ ├── api/ # Rocket.Chat API
301
+ │ ├── client.ts
302
+ │ ├── types.ts
303
+ │ └── schemas.ts # Zod validation
304
+ ├── guards/ # Safety guards
305
+ │ ├── write-guard.ts
306
+ │ ├── sanitizer.ts
307
+ │ ├── input-validator.ts
308
+ │ └── rate-limiter.ts
309
+ └── utils/
310
+ ├── cache.ts
311
+ ├── time-parser.ts
312
+ └── token-counter.ts
313
+ ```
314
+
315
+ ## Development
316
+
317
+ ```bash
318
+ npm install # Install dependencies
319
+ npm run dev # Development mode
320
+ npm run build # Build
321
+ npm test # Run 231 tests
322
+ npm run lint # Lint
323
+ ```
324
+
325
+ ## License
326
+
327
+ MIT License - see [LICENSE](LICENSE) for details.
328
+
329
+ ## Acknowledgments
330
+
331
+ - [MCP (Model Context Protocol)](https://modelcontextprotocol.io/)
332
+ - [Rocket.Chat API](https://developer.rocket.chat/reference/api)
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Rocket.Chat API Client
3
+ * Handles all HTTP communication with Rocket.Chat server
4
+ */
5
+ import { RocketChatConfig } from '../config/config.js';
6
+ import { ApiResponse, ChannelsListResponse, MessagesResponse, ThreadsListResponse, UserInfoResponse, UsersListResponse, SendMessageResponse, RocketChatMessage, RocketChatRoom, GetMessagesParams, GetThreadMessagesParams, SearchMessagesParams, SendMessageParams, GetRoomsParams } from './types.js';
7
+ export declare class RocketChatClient {
8
+ private baseUrl;
9
+ private authToken;
10
+ private userId;
11
+ private cache;
12
+ constructor(config?: RocketChatConfig);
13
+ /**
14
+ * Make authenticated API request
15
+ */
16
+ private request;
17
+ /**
18
+ * List channels (public and joined)
19
+ */
20
+ listChannels(params?: GetRoomsParams): Promise<ChannelsListResponse>;
21
+ /**
22
+ * List joined channels
23
+ */
24
+ listJoinedChannels(params?: GetRoomsParams): Promise<ChannelsListResponse>;
25
+ /**
26
+ * Get channel info by ID or name
27
+ */
28
+ getChannelInfo(roomId?: string, roomName?: string): Promise<{
29
+ channel: RocketChatRoom;
30
+ success: boolean;
31
+ }>;
32
+ /**
33
+ * Search channels by name
34
+ */
35
+ searchChannels(query: string): Promise<{
36
+ channels: RocketChatRoom[];
37
+ success: boolean;
38
+ }>;
39
+ /**
40
+ * Get messages from a channel
41
+ */
42
+ getMessages(params: GetMessagesParams): Promise<MessagesResponse>;
43
+ /**
44
+ * Search messages in a channel or globally
45
+ * When roomId is omitted, performs global search (requires OpenSearch integration)
46
+ */
47
+ searchMessages(params: SearchMessagesParams): Promise<MessagesResponse>;
48
+ /**
49
+ * Get a specific message by ID
50
+ */
51
+ getMessage(messageId: string): Promise<{
52
+ message: RocketChatMessage;
53
+ success: boolean;
54
+ }>;
55
+ /**
56
+ * List threads in a channel
57
+ */
58
+ listThreads(roomId: string, count?: number, offset?: number): Promise<ThreadsListResponse>;
59
+ /**
60
+ * Get thread messages (replies)
61
+ */
62
+ getThreadMessages(params: GetThreadMessagesParams): Promise<MessagesResponse>;
63
+ /**
64
+ * Get thread parent message
65
+ */
66
+ getThreadParent(tmid: string): Promise<{
67
+ message: RocketChatMessage;
68
+ success: boolean;
69
+ }>;
70
+ /**
71
+ * Get user info by ID or username
72
+ */
73
+ getUserInfo(userId?: string, username?: string): Promise<UserInfoResponse>;
74
+ /**
75
+ * List users
76
+ */
77
+ listUsers(count?: number, offset?: number): Promise<UsersListResponse>;
78
+ /**
79
+ * Get current user (me)
80
+ * Note: /me endpoint returns user data directly, not wrapped in { user: ... }
81
+ */
82
+ getMe(): Promise<UserInfoResponse>;
83
+ /**
84
+ * Send a message to a channel
85
+ */
86
+ sendMessage(params: SendMessageParams): Promise<SendMessageResponse>;
87
+ /**
88
+ * React to a message
89
+ */
90
+ reactToMessage(messageId: string, emoji: string): Promise<ApiResponse<void>>;
91
+ /**
92
+ * Test connection to Rocket.Chat server
93
+ */
94
+ testConnection(): Promise<boolean>;
95
+ /**
96
+ * Clear cache
97
+ */
98
+ clearCache(): void;
99
+ /**
100
+ * Get cache statistics
101
+ */
102
+ getCacheStats(): {
103
+ size: number;
104
+ maxSize: number;
105
+ ttlMs: number;
106
+ };
107
+ }
108
+ /**
109
+ * Custom error class for API errors
110
+ */
111
+ export declare class RocketChatApiError extends Error {
112
+ readonly statusCode: number;
113
+ readonly responseBody: string;
114
+ constructor(message: string, statusCode: number, responseBody: string);
115
+ toJSON(): Record<string, unknown>;
116
+ }
117
+ export declare function getClient(): RocketChatClient;
118
+ export declare function resetClient(): void;
119
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}