mcp-arr-suite 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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/dist/clients/arr-client.d.ts +681 -0
  4. package/dist/clients/arr-client.d.ts.map +1 -0
  5. package/dist/clients/arr-client.js +367 -0
  6. package/dist/clients/arr-client.js.map +1 -0
  7. package/dist/index.d.ts +14 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +93 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/registry.d.ts +16 -0
  12. package/dist/registry.d.ts.map +1 -0
  13. package/dist/registry.js +32 -0
  14. package/dist/registry.js.map +1 -0
  15. package/dist/services/cross-service.d.ts +8 -0
  16. package/dist/services/cross-service.d.ts.map +1 -0
  17. package/dist/services/cross-service.js +113 -0
  18. package/dist/services/cross-service.js.map +1 -0
  19. package/dist/services/lidarr.d.ts +6 -0
  20. package/dist/services/lidarr.d.ts.map +1 -0
  21. package/dist/services/lidarr.js +263 -0
  22. package/dist/services/lidarr.js.map +1 -0
  23. package/dist/services/prowlarr.d.ts +10 -0
  24. package/dist/services/prowlarr.d.ts.map +1 -0
  25. package/dist/services/prowlarr.js +140 -0
  26. package/dist/services/prowlarr.js.map +1 -0
  27. package/dist/services/radarr.d.ts +9 -0
  28. package/dist/services/radarr.d.ts.map +1 -0
  29. package/dist/services/radarr.js +574 -0
  30. package/dist/services/radarr.js.map +1 -0
  31. package/dist/services/sonarr.d.ts +9 -0
  32. package/dist/services/sonarr.d.ts.map +1 -0
  33. package/dist/services/sonarr.js +696 -0
  34. package/dist/services/sonarr.js.map +1 -0
  35. package/dist/shared/config-tools.d.ts +15 -0
  36. package/dist/shared/config-tools.d.ts.map +1 -0
  37. package/dist/shared/config-tools.js +225 -0
  38. package/dist/shared/config-tools.js.map +1 -0
  39. package/dist/shared/formatting.d.ts +37 -0
  40. package/dist/shared/formatting.d.ts.map +1 -0
  41. package/dist/shared/formatting.js +57 -0
  42. package/dist/shared/formatting.js.map +1 -0
  43. package/dist/trash/client.d.ts +127 -0
  44. package/dist/trash/client.d.ts.map +1 -0
  45. package/dist/trash/client.js +289 -0
  46. package/dist/trash/client.js.map +1 -0
  47. package/dist/trash/tools.d.ts +13 -0
  48. package/dist/trash/tools.d.ts.map +1 -0
  49. package/dist/trash/tools.js +377 -0
  50. package/dist/trash/tools.js.map +1 -0
  51. package/dist/types.d.ts +33 -0
  52. package/dist/types.d.ts.map +1 -0
  53. package/dist/types.js +15 -0
  54. package/dist/types.js.map +1 -0
  55. package/package.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arr-client.d.ts","sourceRoot":"","sources":["../../src/clients/arr-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,367 @@
1
+ /**
2
+ * *arr Suite API Client
3
+ *
4
+ * All *arr applications share the same REST API pattern with X-Api-Key authentication.
5
+ * Extend ArrClient to add a new service.
6
+ */
7
+ // ─── Base client ──────────────────────────────────────────────────────────────
8
+ export class ArrClient {
9
+ config;
10
+ serviceName;
11
+ apiVersion = 'v3';
12
+ constructor(serviceName, config) {
13
+ this.serviceName = serviceName;
14
+ this.config = {
15
+ url: config.url.replace(/\/$/, ''),
16
+ apiKey: config.apiKey,
17
+ };
18
+ }
19
+ async request(endpoint, options = {}) {
20
+ const url = `${this.config.url}/api/${this.apiVersion}${endpoint}`;
21
+ const headers = {
22
+ 'Content-Type': 'application/json',
23
+ 'X-Api-Key': this.config.apiKey,
24
+ ...(options.headers ?? {}),
25
+ };
26
+ const response = await fetch(url, { ...options, headers });
27
+ if (!response.ok) {
28
+ const text = await response.text();
29
+ throw new Error(`${this.serviceName} API error: ${response.status} ${response.statusText} - ${text}`);
30
+ }
31
+ if (response.status === 204 || response.headers.get('content-length') === '0') {
32
+ return undefined;
33
+ }
34
+ return response.json();
35
+ }
36
+ async getStatus() {
37
+ return this.request('/system/status');
38
+ }
39
+ async getQueue() {
40
+ return this.request('/queue?includeUnknownSeriesItems=true&includeUnknownMovieItems=true');
41
+ }
42
+ async getCalendar(start, end) {
43
+ const params = new URLSearchParams();
44
+ if (start)
45
+ params.append('start', start);
46
+ if (end)
47
+ params.append('end', end);
48
+ const query = params.toString() ? `?${params.toString()}` : '';
49
+ return this.request(`/calendar${query}`);
50
+ }
51
+ async getQualityProfiles() {
52
+ return this.request('/qualityprofile');
53
+ }
54
+ async getQualityDefinitions() {
55
+ return this.request('/qualitydefinition');
56
+ }
57
+ async getDownloadClients() {
58
+ return this.request('/downloadclient');
59
+ }
60
+ async getNamingConfig() {
61
+ return this.request('/config/naming');
62
+ }
63
+ async getMediaManagement() {
64
+ return this.request('/config/mediamanagement');
65
+ }
66
+ async getHealth() {
67
+ return this.request('/health');
68
+ }
69
+ async getTags() {
70
+ return this.request('/tag');
71
+ }
72
+ async getRootFolders() {
73
+ return this.request('/rootfolder');
74
+ }
75
+ async getIndexers() {
76
+ return this.request('/indexer');
77
+ }
78
+ async testConnection() {
79
+ try {
80
+ await this.getStatus();
81
+ return true;
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ }
88
+ // ─── Service clients ──────────────────────────────────────────────────────────
89
+ export class SonarrClient extends ArrClient {
90
+ constructor(config) {
91
+ super('sonarr', config);
92
+ }
93
+ async getSeries() {
94
+ return this.request('/series');
95
+ }
96
+ async getSeriesById(id) {
97
+ return this.request(`/series/${id}`);
98
+ }
99
+ async searchSeries(term) {
100
+ return this.request(`/series/lookup?term=${encodeURIComponent(term)}`);
101
+ }
102
+ async addSeries(series) {
103
+ return this.request('/series', {
104
+ method: 'POST',
105
+ body: JSON.stringify({
106
+ ...series,
107
+ monitored: series.monitored ?? true,
108
+ seasonFolder: series.seasonFolder ?? true,
109
+ addOptions: { searchForMissingEpisodes: true },
110
+ }),
111
+ });
112
+ }
113
+ async getEpisodes(seriesId, seasonNumber) {
114
+ let url = `/episode?seriesId=${seriesId}`;
115
+ if (seasonNumber !== undefined)
116
+ url += `&seasonNumber=${seasonNumber}`;
117
+ return this.request(url);
118
+ }
119
+ async searchMissing(seriesId) {
120
+ return this.request('/command', {
121
+ method: 'POST',
122
+ body: JSON.stringify({ name: 'SeriesSearch', seriesId }),
123
+ });
124
+ }
125
+ async searchEpisode(episodeIds) {
126
+ return this.request('/command', {
127
+ method: 'POST',
128
+ body: JSON.stringify({ name: 'EpisodeSearch', episodeIds }),
129
+ });
130
+ }
131
+ async refreshSeries(seriesId) {
132
+ return this.request('/command', {
133
+ method: 'POST',
134
+ body: JSON.stringify({ name: 'RefreshSeries', seriesId }),
135
+ });
136
+ }
137
+ async deleteSeries(seriesId, deleteFiles = false, addImportListExclusion = false) {
138
+ await this.request(`/series/${seriesId}?deleteFiles=${deleteFiles}&addImportListExclusion=${addImportListExclusion}`, { method: 'DELETE' });
139
+ }
140
+ async updateSeries(seriesId, changes) {
141
+ const existing = await this.getSeriesById(seriesId);
142
+ return this.request(`/series/${seriesId}`, {
143
+ method: 'PUT',
144
+ body: JSON.stringify({ ...existing, ...changes }),
145
+ });
146
+ }
147
+ async getDiskSpace() {
148
+ return this.request('/diskspace');
149
+ }
150
+ async getHistory(seriesId, page = 1, pageSize = 20) {
151
+ const params = new URLSearchParams({
152
+ page: String(page),
153
+ pageSize: String(pageSize),
154
+ sortKey: 'date',
155
+ sortDirection: 'descending',
156
+ });
157
+ const endpoint = seriesId !== undefined
158
+ ? `/history/series?seriesId=${seriesId}&${params}`
159
+ : `/history?${params}`;
160
+ return this.request(endpoint);
161
+ }
162
+ async removeFromQueue(queueId, blocklist = false, removeFromClient = true) {
163
+ await this.request(`/queue/${queueId}?blocklist=${blocklist}&removeFromClient=${removeFromClient}`, { method: 'DELETE' });
164
+ }
165
+ async removeFromQueueBulk(ids, blocklist = false, removeFromClient = true) {
166
+ await this.request('/queue/bulk', {
167
+ method: 'DELETE',
168
+ body: JSON.stringify({ ids, blocklist, removeFromClient }),
169
+ });
170
+ }
171
+ async getWantedMissing(page = 1, pageSize = 20) {
172
+ return this.request(`/wanted/missing?page=${page}&pageSize=${pageSize}&sortKey=series.sortTitle&sortDirection=ascending`);
173
+ }
174
+ async getWantedCutoff(page = 1, pageSize = 20) {
175
+ return this.request(`/wanted/cutoff?page=${page}&pageSize=${pageSize}&sortKey=series.sortTitle&sortDirection=ascending`);
176
+ }
177
+ async getEpisodeFiles(seriesId) {
178
+ return this.request(`/episodefile?seriesId=${seriesId}`);
179
+ }
180
+ async deleteEpisodeFile(fileId) {
181
+ await this.request(`/episodefile/${fileId}`, { method: 'DELETE' });
182
+ }
183
+ async getBlocklist(page = 1, pageSize = 20) {
184
+ return this.request(`/blocklist?page=${page}&pageSize=${pageSize}&sortKey=date&sortDirection=descending`);
185
+ }
186
+ async deleteFromBlocklist(blocklistId) {
187
+ await this.request(`/blocklist/${blocklistId}`, { method: 'DELETE' });
188
+ }
189
+ async monitorEpisodes(episodeIds, monitored) {
190
+ await this.request('/episode/monitor', {
191
+ method: 'PUT',
192
+ body: JSON.stringify({ episodeIds, monitored }),
193
+ });
194
+ }
195
+ async setSeasonPass(series) {
196
+ await this.request('/seasonpass', {
197
+ method: 'POST',
198
+ body: JSON.stringify({ series, monitoringOptions: { monitor: 'all' } }),
199
+ });
200
+ }
201
+ }
202
+ export class RadarrClient extends ArrClient {
203
+ constructor(config) {
204
+ super('radarr', config);
205
+ }
206
+ async getMovies() {
207
+ return this.request('/movie');
208
+ }
209
+ async getMovieById(id) {
210
+ return this.request(`/movie/${id}`);
211
+ }
212
+ async searchMovies(term) {
213
+ return this.request(`/movie/lookup?term=${encodeURIComponent(term)}`);
214
+ }
215
+ async addMovie(movie) {
216
+ return this.request('/movie', {
217
+ method: 'POST',
218
+ body: JSON.stringify({
219
+ ...movie,
220
+ monitored: movie.monitored ?? true,
221
+ addOptions: { searchForMovie: true },
222
+ }),
223
+ });
224
+ }
225
+ async searchMovie(movieId) {
226
+ return this.request('/command', {
227
+ method: 'POST',
228
+ body: JSON.stringify({ name: 'MoviesSearch', movieIds: [movieId] }),
229
+ });
230
+ }
231
+ async refreshMovie(movieId) {
232
+ return this.request('/command', {
233
+ method: 'POST',
234
+ body: JSON.stringify({ name: 'RefreshMovie', movieIds: [movieId] }),
235
+ });
236
+ }
237
+ async deleteMovie(movieId, deleteFiles = false, addImportExclusion = false) {
238
+ await this.request(`/movie/${movieId}?deleteFiles=${deleteFiles}&addImportExclusion=${addImportExclusion}`, { method: 'DELETE' });
239
+ }
240
+ async updateMovie(movieId, changes) {
241
+ const existing = await this.getMovieById(movieId);
242
+ return this.request(`/movie/${movieId}`, {
243
+ method: 'PUT',
244
+ body: JSON.stringify({ ...existing, ...changes }),
245
+ });
246
+ }
247
+ async getDiskSpace() {
248
+ return this.request('/diskspace');
249
+ }
250
+ async getHistory(movieId, page = 1, pageSize = 20) {
251
+ const params = new URLSearchParams({
252
+ page: String(page),
253
+ pageSize: String(pageSize),
254
+ sortKey: 'date',
255
+ sortDirection: 'descending',
256
+ });
257
+ const endpoint = movieId !== undefined
258
+ ? `/history/movie?movieId=${movieId}&${params}`
259
+ : `/history?${params}`;
260
+ return this.request(endpoint);
261
+ }
262
+ async removeFromQueue(queueId, blocklist = false, removeFromClient = true) {
263
+ await this.request(`/queue/${queueId}?blocklist=${blocklist}&removeFromClient=${removeFromClient}`, { method: 'DELETE' });
264
+ }
265
+ async removeFromQueueBulk(ids, blocklist = false, removeFromClient = true) {
266
+ await this.request('/queue/bulk', {
267
+ method: 'DELETE',
268
+ body: JSON.stringify({ ids, blocklist, removeFromClient }),
269
+ });
270
+ }
271
+ async getWantedMissing(page = 1, pageSize = 20) {
272
+ return this.request(`/wanted/missing?page=${page}&pageSize=${pageSize}&sortKey=title&sortDirection=ascending`);
273
+ }
274
+ async getWantedCutoff(page = 1, pageSize = 20) {
275
+ return this.request(`/wanted/cutoff?page=${page}&pageSize=${pageSize}&sortKey=title&sortDirection=ascending`);
276
+ }
277
+ async getMovieFiles(movieId) {
278
+ return this.request(`/moviefile?movieId=${movieId}`);
279
+ }
280
+ async deleteMovieFile(fileId) {
281
+ await this.request(`/moviefile/${fileId}`, { method: 'DELETE' });
282
+ }
283
+ async getBlocklist(page = 1, pageSize = 20) {
284
+ return this.request(`/blocklist/movie?page=${page}&pageSize=${pageSize}`);
285
+ }
286
+ async deleteFromBlocklist(blocklistId) {
287
+ await this.request(`/blocklist/${blocklistId}`, { method: 'DELETE' });
288
+ }
289
+ }
290
+ export class LidarrClient extends ArrClient {
291
+ constructor(config) {
292
+ super('lidarr', config);
293
+ this.apiVersion = 'v1';
294
+ }
295
+ async getArtists() {
296
+ return this.request('/artist');
297
+ }
298
+ async getArtistById(id) {
299
+ return this.request(`/artist/${id}`);
300
+ }
301
+ async searchArtists(term) {
302
+ return this.request(`/artist/lookup?term=${encodeURIComponent(term)}`);
303
+ }
304
+ async addArtist(artist) {
305
+ return this.request('/artist', {
306
+ method: 'POST',
307
+ body: JSON.stringify({
308
+ ...artist,
309
+ monitored: artist.monitored ?? true,
310
+ addOptions: { searchForMissingAlbums: true },
311
+ }),
312
+ });
313
+ }
314
+ async getAlbums(artistId) {
315
+ const url = artistId !== undefined ? `/album?artistId=${artistId}` : '/album';
316
+ return this.request(url);
317
+ }
318
+ async getAlbumById(id) {
319
+ return this.request(`/album/${id}`);
320
+ }
321
+ async searchAlbum(albumId) {
322
+ return this.request('/command', {
323
+ method: 'POST',
324
+ body: JSON.stringify({ name: 'AlbumSearch', albumIds: [albumId] }),
325
+ });
326
+ }
327
+ async searchMissingAlbums(artistId) {
328
+ return this.request('/command', {
329
+ method: 'POST',
330
+ body: JSON.stringify({ name: 'ArtistSearch', artistId }),
331
+ });
332
+ }
333
+ async getCalendar(start, end) {
334
+ const params = new URLSearchParams();
335
+ if (start)
336
+ params.append('start', start);
337
+ if (end)
338
+ params.append('end', end);
339
+ const query = params.toString() ? `?${params.toString()}` : '';
340
+ return this.request(`/calendar${query}`);
341
+ }
342
+ async getMetadataProfiles() {
343
+ return this.request('/metadataprofile');
344
+ }
345
+ }
346
+ export class ProwlarrClient extends ArrClient {
347
+ constructor(config) {
348
+ super('prowlarr', config);
349
+ this.apiVersion = 'v1';
350
+ }
351
+ async getIndexers() {
352
+ return this.request('/indexer');
353
+ }
354
+ async testAllIndexers() {
355
+ return this.request('/indexer/testall', { method: 'POST' });
356
+ }
357
+ async getIndexerStats() {
358
+ return this.request('/indexerstats');
359
+ }
360
+ async search(query, categories) {
361
+ const params = new URLSearchParams({ query });
362
+ if (categories)
363
+ categories.forEach(c => params.append('categories', c.toString()));
364
+ return this.request(`/search?${params.toString()}`);
365
+ }
366
+ }
367
+ //# sourceMappingURL=arr-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arr-client.js","sourceRoot":"","sources":["../../src/clients/arr-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6cH,iFAAiF;AAEjF,MAAM,OAAO,SAAS;IACH,MAAM,CAAY;IAClB,WAAW,CAAa;IAC/B,UAAU,GAAW,IAAI,CAAC;IAEpC,YAAY,WAAuB,EAAE,MAAiB;QACpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,OAAO,CAAI,QAAgB,EAAE,UAAuB,EAAE;QACpE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,EAAE,CAAC;QACnE,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC/B,GAAG,CAAC,OAAO,CAAC,OAAiC,IAAI,EAAE,CAAC;SACrD,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,eAAe,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,IAAI,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9E,OAAO,SAAyB,CAAC;QACnC,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAe,gBAAgB,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,OAAO,CACjB,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAc,EAAE,GAAY;QAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK;YAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAY,YAAY,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAmB,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAsB,oBAAoB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAmB,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,OAAO,CAAe,gBAAgB,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAwB,yBAAyB,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAgB,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,OAAO,CAAQ,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAe,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,OAAO,CAAY,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED,iFAAiF;AAEjF,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,MAAiB;QAC3B,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAW,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAS,WAAW,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAiB,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAIf;QACC,OAAO,IAAI,CAAC,OAAO,CAAS,SAAS,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;gBACnC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;gBACzC,UAAU,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE;aAC/C,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,YAAqB;QACvD,IAAI,GAAG,GAAG,qBAAqB,QAAQ,EAAE,CAAC;QAC1C,IAAI,YAAY,KAAK,SAAS;YAAE,GAAG,IAAI,iBAAiB,YAAY,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,OAAO,CAAY,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAoB;QACtC,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,WAAW,GAAG,KAAK,EAAE,sBAAsB,GAAG,KAAK;QACtF,MAAM,IAAI,CAAC,OAAO,CAChB,WAAW,QAAQ,gBAAgB,WAAW,2BAA2B,sBAAsB,EAAE,EACjG,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,OAAwB;QAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAS,WAAW,QAAQ,EAAE,EAAE;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAc,YAAY,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAiB,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC1B,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS;YACrC,CAAC,CAAC,4BAA4B,QAAQ,IAAI,MAAM,EAAE;YAClD,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,OAAO,CAA2D,QAAQ,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,SAAS,GAAG,KAAK,EAAE,gBAAgB,GAAG,IAAI;QAC/E,MAAM,IAAI,CAAC,OAAO,CAChB,UAAU,OAAO,cAAc,SAAS,qBAAqB,gBAAgB,EAAE,EAC/E,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAa,EAAE,SAAS,GAAG,KAAK,EAAE,gBAAgB,GAAG,IAAI;QACjF,MAAM,IAAI,CAAC,OAAO,CAAO,aAAa,EAAE;YACtC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QAC5C,OAAO,IAAI,CAAC,OAAO,CACjB,wBAAwB,IAAI,aAAa,QAAQ,mDAAmD,CACrG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QAC3C,OAAO,IAAI,CAAC,OAAO,CACjB,uBAAuB,IAAI,aAAa,QAAQ,mDAAmD,CACpG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAgB,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,MAAM,IAAI,CAAC,OAAO,CAAO,gBAAgB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QACxC,OAAO,IAAI,CAAC,OAAO,CACjB,mBAAmB,IAAI,aAAa,QAAQ,wCAAwC,CACrF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAO,cAAc,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAoB,EAAE,SAAkB;QAC5D,MAAM,IAAI,CAAC,OAAO,CAAO,kBAAkB,EAAE;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA+G;QACjI,MAAM,IAAI,CAAC,OAAO,CAAO,aAAa,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;SACxE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,MAAiB;QAC3B,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAU,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAQ,UAAU,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAiB,sBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAId;QACC,OAAO,IAAI,CAAC,OAAO,CAAQ,QAAQ,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,KAAK;gBACR,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;gBAClC,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;aACrC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,WAAW,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QAChF,MAAM,IAAI,CAAC,OAAO,CAChB,UAAU,OAAO,gBAAgB,WAAW,uBAAuB,kBAAkB,EAAE,EACvF,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,OAAuB;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAQ,UAAU,OAAO,EAAE,EAAE;YAC9C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAc,YAAY,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAgB,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC1B,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS;YACpC,CAAC,CAAC,0BAA0B,OAAO,IAAI,MAAM,EAAE;YAC/C,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,OAAO,CAAqD,QAAQ,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,SAAS,GAAG,KAAK,EAAE,gBAAgB,GAAG,IAAI;QAC/E,MAAM,IAAI,CAAC,OAAO,CAChB,UAAU,OAAO,cAAc,SAAS,qBAAqB,gBAAgB,EAAE,EAC/E,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAa,EAAE,SAAS,GAAG,KAAK,EAAE,gBAAgB,GAAG,IAAI;QACjF,MAAM,IAAI,CAAC,OAAO,CAAO,aAAa,EAAE;YACtC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QAC5C,OAAO,IAAI,CAAC,OAAO,CACjB,wBAAwB,IAAI,aAAa,QAAQ,wCAAwC,CAC1F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QAC3C,OAAO,IAAI,CAAC,OAAO,CACjB,uBAAuB,IAAI,aAAa,QAAQ,wCAAwC,CACzF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,OAAO,CAAc,sBAAsB,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,IAAI,CAAC,OAAO,CAAO,cAAc,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE;QACxC,OAAO,IAAI,CAAC,OAAO,CACjB,yBAAyB,IAAI,aAAa,QAAQ,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAO,cAAc,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,MAAiB;QAC3B,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAW,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAS,WAAW,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAiB,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAKf;QACC,OAAO,IAAI,CAAC,OAAO,CAAS,SAAS,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;gBACnC,UAAU,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE;aAC7C,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAiB;QAC/B,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9E,OAAO,IAAI,CAAC,OAAO,CAAU,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAQ,UAAU,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAc,EAAE,GAAY;QAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK;YAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAU,YAAY,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAoB,kBAAkB,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,MAAiB;QAC3B,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,OAAO,CAAY,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,eAAe;QAKnB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,OAAO,CAA+B,eAAe,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAqB;QAC/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,IAAI,UAAU;YAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC,OAAO,CAAY,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * mcp-arr-suite — MCP Server for the *arr Media Management Suite
4
+ *
5
+ * Supports: Sonarr (TV), Radarr (Movies), Lidarr (Music), Prowlarr (Indexers)
6
+ *
7
+ * Configuration via environment variables:
8
+ * SONARR_URL, SONARR_API_KEY
9
+ * RADARR_URL, RADARR_API_KEY
10
+ * LIDARR_URL, LIDARR_API_KEY
11
+ * PROWLARR_URL, PROWLARR_API_KEY
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
package/dist/index.js ADDED
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * mcp-arr-suite — MCP Server for the *arr Media Management Suite
4
+ *
5
+ * Supports: Sonarr (TV), Radarr (Movies), Lidarr (Music), Prowlarr (Indexers)
6
+ *
7
+ * Configuration via environment variables:
8
+ * SONARR_URL, SONARR_API_KEY
9
+ * RADARR_URL, RADARR_API_KEY
10
+ * LIDARR_URL, LIDARR_API_KEY
11
+ * PROWLARR_URL, PROWLARR_API_KEY
12
+ */
13
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
14
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
15
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
16
+ import { SonarrClient, RadarrClient, LidarrClient, ProwlarrClient } from './clients/arr-client.js';
17
+ import { HandlerRegistry } from './registry.js';
18
+ import { buildConfigModule } from './shared/config-tools.js';
19
+ import { sonarrModule } from './services/sonarr.js';
20
+ import { radarrModule } from './services/radarr.js';
21
+ import { lidarrModule } from './services/lidarr.js';
22
+ import { prowlarrModule } from './services/prowlarr.js';
23
+ import { crossServiceModule } from './services/cross-service.js';
24
+ import { trashModule } from './trash/tools.js';
25
+ // ─── Build client map from environment ───────────────────────────────────────
26
+ const clients = {};
27
+ if (process.env.SONARR_URL && process.env.SONARR_API_KEY) {
28
+ clients.sonarr = new SonarrClient({ url: process.env.SONARR_URL, apiKey: process.env.SONARR_API_KEY });
29
+ }
30
+ if (process.env.RADARR_URL && process.env.RADARR_API_KEY) {
31
+ clients.radarr = new RadarrClient({ url: process.env.RADARR_URL, apiKey: process.env.RADARR_API_KEY });
32
+ }
33
+ if (process.env.LIDARR_URL && process.env.LIDARR_API_KEY) {
34
+ clients.lidarr = new LidarrClient({ url: process.env.LIDARR_URL, apiKey: process.env.LIDARR_API_KEY });
35
+ }
36
+ if (process.env.PROWLARR_URL && process.env.PROWLARR_API_KEY) {
37
+ clients.prowlarr = new ProwlarrClient({ url: process.env.PROWLARR_URL, apiKey: process.env.PROWLARR_API_KEY });
38
+ }
39
+ if (Object.keys(clients).length === 0) {
40
+ console.error('Error: No *arr services configured.');
41
+ console.error('Set at least one pair of URL and API_KEY env vars (e.g. RADARR_URL + RADARR_API_KEY).');
42
+ process.exit(1);
43
+ }
44
+ // ─── Register modules ─────────────────────────────────────────────────────────
45
+ const registry = new HandlerRegistry();
46
+ // Cross-service and TRaSH tools are always registered
47
+ registry.register(crossServiceModule);
48
+ registry.register(trashModule);
49
+ // Service modules registered only if the service is configured
50
+ if (clients.sonarr) {
51
+ registry.register(buildConfigModule('sonarr', 'Sonarr (TV)'));
52
+ registry.register(sonarrModule);
53
+ }
54
+ if (clients.radarr) {
55
+ registry.register(buildConfigModule('radarr', 'Radarr (Movies)'));
56
+ registry.register(radarrModule);
57
+ }
58
+ if (clients.lidarr) {
59
+ registry.register(buildConfigModule('lidarr', 'Lidarr (Music)'));
60
+ registry.register(lidarrModule);
61
+ }
62
+ if (clients.prowlarr) {
63
+ registry.register(prowlarrModule);
64
+ }
65
+ // ─── MCP server ───────────────────────────────────────────────────────────────
66
+ const server = new Server({ name: 'mcp-arr-suite', version: '1.0.0' }, { capabilities: { tools: {} } });
67
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
68
+ tools: registry.getTools(),
69
+ }));
70
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
71
+ const { name, arguments: args } = request.params;
72
+ try {
73
+ const result = await registry.dispatch(name, (args ?? {}), clients);
74
+ return result;
75
+ }
76
+ catch (error) {
77
+ return {
78
+ content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
79
+ isError: true,
80
+ };
81
+ }
82
+ });
83
+ // ─── Start ────────────────────────────────────────────────────────────────────
84
+ async function main() {
85
+ const transport = new StdioServerTransport();
86
+ await server.connect(transport);
87
+ console.error(`mcp-arr-suite running — services: ${Object.keys(clients).join(', ')}`);
88
+ }
89
+ main().catch((error) => {
90
+ console.error('Fatal error:', error);
91
+ process.exit(1);
92
+ });
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { ClientMap, ToolModule, ToolResult } from './types.js';
3
+ /**
4
+ * HandlerRegistry replaces the monolithic switch statement.
5
+ *
6
+ * Modules self-register; dispatch is a plain map lookup.
7
+ * Duplicate tool names throw at startup — caught immediately, not at runtime.
8
+ */
9
+ export declare class HandlerRegistry {
10
+ private readonly tools;
11
+ private readonly handlers;
12
+ register(module: ToolModule): void;
13
+ getTools(): Tool[];
14
+ dispatch(toolName: string, args: Record<string, unknown>, clients: ClientMap): Promise<ToolResult>;
15
+ }
16
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAa,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/E;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IAEzD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAYlC,QAAQ,IAAI,IAAI,EAAE;IAIZ,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,UAAU,CAAC;CAOvB"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * HandlerRegistry replaces the monolithic switch statement.
3
+ *
4
+ * Modules self-register; dispatch is a plain map lookup.
5
+ * Duplicate tool names throw at startup — caught immediately, not at runtime.
6
+ */
7
+ export class HandlerRegistry {
8
+ tools = [];
9
+ handlers = new Map();
10
+ register(module) {
11
+ for (const tool of module.tools) {
12
+ this.tools.push(tool);
13
+ }
14
+ for (const [name, fn] of Object.entries(module.handlers)) {
15
+ if (this.handlers.has(name)) {
16
+ throw new Error(`Duplicate tool registration: "${name}". Each tool name must be unique.`);
17
+ }
18
+ this.handlers.set(name, fn);
19
+ }
20
+ }
21
+ getTools() {
22
+ return this.tools;
23
+ }
24
+ async dispatch(toolName, args, clients) {
25
+ const handler = this.handlers.get(toolName);
26
+ if (!handler) {
27
+ throw new Error(`Unknown tool: "${toolName}"`);
28
+ }
29
+ return handler(args, clients);
30
+ }
31
+ }
32
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IACT,KAAK,GAAW,EAAE,CAAC;IACnB,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEzD,QAAQ,CAAC,MAAkB;QACzB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,mCAAmC,CAAC,CAAC;YAC5F,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,IAA6B,EAC7B,OAAkB;QAElB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cross-service tools: arr_status and arr_search_all
3
+ *
4
+ * These tools operate across all configured services simultaneously.
5
+ */
6
+ import type { ToolModule } from '../types.js';
7
+ export declare const crossServiceModule: ToolModule;
8
+ //# sourceMappingURL=cross-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-service.d.ts","sourceRoot":"","sources":["../../src/services/cross-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,eAAO,MAAM,kBAAkB,EAAE,UA6GhC,CAAC"}