@thelord/mcp-arr 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.
- package/LICENSE +21 -0
- package/README.md +363 -0
- package/dist/arr-client.d.ts +784 -0
- package/dist/arr-client.d.ts.map +1 -0
- package/dist/arr-client.js +487 -0
- package/dist/arr-client.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1947 -0
- package/dist/index.js.map +1 -0
- package/dist/lingarr-client.d.ts +316 -0
- package/dist/lingarr-client.d.ts.map +1 -0
- package/dist/lingarr-client.js +320 -0
- package/dist/lingarr-client.js.map +1 -0
- package/dist/lingarr-handlers.d.ts +40 -0
- package/dist/lingarr-handlers.d.ts.map +1 -0
- package/dist/lingarr-handlers.js +347 -0
- package/dist/lingarr-handlers.js.map +1 -0
- package/dist/lingarr-tools.d.ts +19 -0
- package/dist/lingarr-tools.d.ts.map +1 -0
- package/dist/lingarr-tools.js +271 -0
- package/dist/lingarr-tools.js.map +1 -0
- package/dist/trash-client.d.ts +121 -0
- package/dist/trash-client.d.ts.map +1 -0
- package/dist/trash-client.js +287 -0
- package/dist/trash-client.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lingarr API Client
|
|
3
|
+
*
|
|
4
|
+
* Lingarr is an application that leverages translation technologies to
|
|
5
|
+
* automatically translate subtitle files to your desired target language.
|
|
6
|
+
*
|
|
7
|
+
* API Authentication: X-Api-Key header
|
|
8
|
+
*/
|
|
9
|
+
// Enums
|
|
10
|
+
export var MediaType;
|
|
11
|
+
(function (MediaType) {
|
|
12
|
+
MediaType[MediaType["Movie"] = 0] = "Movie";
|
|
13
|
+
MediaType[MediaType["Show"] = 1] = "Show";
|
|
14
|
+
MediaType[MediaType["Season"] = 2] = "Season";
|
|
15
|
+
MediaType[MediaType["Episode"] = 3] = "Episode";
|
|
16
|
+
})(MediaType || (MediaType = {}));
|
|
17
|
+
export var TranslationStatus;
|
|
18
|
+
(function (TranslationStatus) {
|
|
19
|
+
TranslationStatus[TranslationStatus["Pending"] = 0] = "Pending";
|
|
20
|
+
TranslationStatus[TranslationStatus["InProgress"] = 1] = "InProgress";
|
|
21
|
+
TranslationStatus[TranslationStatus["Completed"] = 2] = "Completed";
|
|
22
|
+
TranslationStatus[TranslationStatus["Failed"] = 3] = "Failed";
|
|
23
|
+
TranslationStatus[TranslationStatus["Cancelled"] = 4] = "Cancelled";
|
|
24
|
+
TranslationStatus[TranslationStatus["Interrupted"] = 5] = "Interrupted";
|
|
25
|
+
})(TranslationStatus || (TranslationStatus = {}));
|
|
26
|
+
export class LingarrClient {
|
|
27
|
+
config;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.config = {
|
|
30
|
+
url: config.url.replace(/\/$/, ''),
|
|
31
|
+
apiKey: config.apiKey,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Make an API request
|
|
36
|
+
*/
|
|
37
|
+
async request(endpoint, options = {}) {
|
|
38
|
+
const url = `${this.config.url}/api${endpoint}`;
|
|
39
|
+
const headers = {
|
|
40
|
+
'Content-Type': 'application/json',
|
|
41
|
+
'X-Api-Key': this.config.apiKey,
|
|
42
|
+
...(options.headers || {}),
|
|
43
|
+
};
|
|
44
|
+
const response = await fetch(url, {
|
|
45
|
+
...options,
|
|
46
|
+
headers,
|
|
47
|
+
});
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
const text = await response.text();
|
|
50
|
+
throw new Error(`Lingarr API error: ${response.status} ${response.statusText} - ${text}`);
|
|
51
|
+
}
|
|
52
|
+
// Handle empty responses
|
|
53
|
+
const text = await response.text();
|
|
54
|
+
if (!text) {
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
return JSON.parse(text);
|
|
58
|
+
}
|
|
59
|
+
// ============ Version & Health ============
|
|
60
|
+
/**
|
|
61
|
+
* Get version info and check for updates
|
|
62
|
+
*/
|
|
63
|
+
async getVersion() {
|
|
64
|
+
return this.request('/Version');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if authenticated (connection test)
|
|
68
|
+
*/
|
|
69
|
+
async testConnection() {
|
|
70
|
+
try {
|
|
71
|
+
await this.request('/Auth/authenticated');
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// ============ Media ============
|
|
79
|
+
/**
|
|
80
|
+
* Get movies with pagination
|
|
81
|
+
*/
|
|
82
|
+
async getMovies(pageNumber = 1, pageSize = 20, searchQuery, orderBy, ascending = true) {
|
|
83
|
+
const params = new URLSearchParams({
|
|
84
|
+
pageNumber: pageNumber.toString(),
|
|
85
|
+
pageSize: pageSize.toString(),
|
|
86
|
+
ascending: ascending.toString(),
|
|
87
|
+
});
|
|
88
|
+
if (searchQuery)
|
|
89
|
+
params.append('searchQuery', searchQuery);
|
|
90
|
+
if (orderBy)
|
|
91
|
+
params.append('orderBy', orderBy);
|
|
92
|
+
return this.request(`/Media/movies?${params.toString()}`);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get shows with pagination
|
|
96
|
+
*/
|
|
97
|
+
async getShows(pageNumber = 1, pageSize = 20, searchQuery, orderBy, ascending = true) {
|
|
98
|
+
const params = new URLSearchParams({
|
|
99
|
+
pageNumber: pageNumber.toString(),
|
|
100
|
+
pageSize: pageSize.toString(),
|
|
101
|
+
ascending: ascending.toString(),
|
|
102
|
+
});
|
|
103
|
+
if (searchQuery)
|
|
104
|
+
params.append('searchQuery', searchQuery);
|
|
105
|
+
if (orderBy)
|
|
106
|
+
params.append('orderBy', orderBy);
|
|
107
|
+
return this.request(`/Media/shows?${params.toString()}`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Exclude or include media from translation
|
|
111
|
+
*/
|
|
112
|
+
async setExcludeMedia(mediaType, id) {
|
|
113
|
+
await this.request('/Media/exclude', {
|
|
114
|
+
method: 'POST',
|
|
115
|
+
body: JSON.stringify({ mediaType, id }),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Set translation age threshold for media
|
|
120
|
+
*/
|
|
121
|
+
async setTranslationThreshold(mediaType, id, hours) {
|
|
122
|
+
await this.request('/Media/threshold', {
|
|
123
|
+
method: 'POST',
|
|
124
|
+
body: JSON.stringify({ mediaType, id, hours }),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// ============ Translation ============
|
|
128
|
+
/**
|
|
129
|
+
* Translate a subtitle file
|
|
130
|
+
*/
|
|
131
|
+
async translateFile(request) {
|
|
132
|
+
await this.request('/Translate/file', {
|
|
133
|
+
method: 'POST',
|
|
134
|
+
body: JSON.stringify(request),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Translate a single subtitle line
|
|
139
|
+
*/
|
|
140
|
+
async translateLine(request) {
|
|
141
|
+
return this.request('/Translate/line', {
|
|
142
|
+
method: 'POST',
|
|
143
|
+
body: JSON.stringify(request),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get available source languages with their target languages
|
|
148
|
+
*/
|
|
149
|
+
async getLanguages() {
|
|
150
|
+
return this.request('/Translate/languages');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get available AI models for translation
|
|
154
|
+
*/
|
|
155
|
+
async getModels() {
|
|
156
|
+
return this.request('/Translate/models');
|
|
157
|
+
}
|
|
158
|
+
// ============ Translation Requests ============
|
|
159
|
+
/**
|
|
160
|
+
* Get count of active translations
|
|
161
|
+
*/
|
|
162
|
+
async getActiveTranslationsCount() {
|
|
163
|
+
return this.request('/TranslationRequest/active');
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get translation requests with pagination
|
|
167
|
+
*/
|
|
168
|
+
async getTranslationRequests(pageNumber = 1, pageSize = 20) {
|
|
169
|
+
const params = new URLSearchParams({
|
|
170
|
+
pageNumber: pageNumber.toString(),
|
|
171
|
+
pageSize: pageSize.toString(),
|
|
172
|
+
});
|
|
173
|
+
return this.request(`/TranslationRequest/requests?${params.toString()}`);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Cancel a translation request
|
|
177
|
+
*/
|
|
178
|
+
async cancelTranslation(id) {
|
|
179
|
+
await this.request('/TranslationRequest/cancel', {
|
|
180
|
+
method: 'POST',
|
|
181
|
+
body: JSON.stringify({ id }),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Remove a translation request
|
|
186
|
+
*/
|
|
187
|
+
async removeTranslation(id) {
|
|
188
|
+
await this.request('/TranslationRequest/remove', {
|
|
189
|
+
method: 'POST',
|
|
190
|
+
body: JSON.stringify({ id }),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Retry a failed translation request
|
|
195
|
+
*/
|
|
196
|
+
async retryTranslation(id) {
|
|
197
|
+
await this.request('/TranslationRequest/retry', {
|
|
198
|
+
method: 'POST',
|
|
199
|
+
body: JSON.stringify({ id }),
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
// ============ Subtitles ============
|
|
203
|
+
/**
|
|
204
|
+
* Get all subtitles for a given path
|
|
205
|
+
*/
|
|
206
|
+
async getSubtitles(path) {
|
|
207
|
+
return this.request('/Subtitle/all', {
|
|
208
|
+
method: 'POST',
|
|
209
|
+
body: JSON.stringify({ path }),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
// ============ Statistics ============
|
|
213
|
+
/**
|
|
214
|
+
* Get general statistics
|
|
215
|
+
*/
|
|
216
|
+
async getStatistics() {
|
|
217
|
+
return this.request('/Statistics');
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get daily statistics
|
|
221
|
+
*/
|
|
222
|
+
async getDailyStatistics(days = 30) {
|
|
223
|
+
return this.request(`/Statistics/daily/${days}`);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Reset statistics
|
|
227
|
+
*/
|
|
228
|
+
async resetStatistics() {
|
|
229
|
+
await this.request('/Statistics/reset', { method: 'POST' });
|
|
230
|
+
}
|
|
231
|
+
// ============ Schedule / Jobs ============
|
|
232
|
+
/**
|
|
233
|
+
* Get all scheduled jobs
|
|
234
|
+
*/
|
|
235
|
+
async getJobs() {
|
|
236
|
+
return this.request('/Schedule/jobs');
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Start a job by name
|
|
240
|
+
*/
|
|
241
|
+
async startJob(jobName) {
|
|
242
|
+
await this.request('/Schedule/job/start', {
|
|
243
|
+
method: 'POST',
|
|
244
|
+
body: JSON.stringify({ jobName }),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Run automated translation job
|
|
249
|
+
*/
|
|
250
|
+
async runAutomatedTranslation() {
|
|
251
|
+
await this.request('/Schedule/job/automation');
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Sync movies from Radarr
|
|
255
|
+
*/
|
|
256
|
+
async syncMovies() {
|
|
257
|
+
await this.request('/Schedule/job/movie');
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Sync shows from Sonarr
|
|
261
|
+
*/
|
|
262
|
+
async syncShows() {
|
|
263
|
+
await this.request('/Schedule/job/show');
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Remove a job from queue
|
|
267
|
+
*/
|
|
268
|
+
async removeJob(jobId) {
|
|
269
|
+
await this.request(`/Schedule/job/remove/${encodeURIComponent(jobId)}`, {
|
|
270
|
+
method: 'DELETE',
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Reindex movies
|
|
275
|
+
*/
|
|
276
|
+
async reindexMovies() {
|
|
277
|
+
await this.request('/Schedule/job/index/movies', { method: 'POST' });
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Reindex shows
|
|
281
|
+
*/
|
|
282
|
+
async reindexShows() {
|
|
283
|
+
await this.request('/Schedule/job/index/shows', { method: 'POST' });
|
|
284
|
+
}
|
|
285
|
+
// ============ Settings ============
|
|
286
|
+
/**
|
|
287
|
+
* Get a setting value
|
|
288
|
+
*/
|
|
289
|
+
async getSetting(key) {
|
|
290
|
+
return this.request(`/Setting/${encodeURIComponent(key)}`);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get multiple settings
|
|
294
|
+
*/
|
|
295
|
+
async getSettings(keys) {
|
|
296
|
+
return this.request('/Setting/multiple/get', {
|
|
297
|
+
method: 'POST',
|
|
298
|
+
body: JSON.stringify(keys),
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Set a setting value
|
|
303
|
+
*/
|
|
304
|
+
async setSetting(key, value) {
|
|
305
|
+
await this.request('/Setting', {
|
|
306
|
+
method: 'POST',
|
|
307
|
+
body: JSON.stringify({ key, value }),
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Set multiple settings
|
|
312
|
+
*/
|
|
313
|
+
async setSettings(settings) {
|
|
314
|
+
await this.request('/Setting/multiple/set', {
|
|
315
|
+
method: 'POST',
|
|
316
|
+
body: JSON.stringify(settings),
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=lingarr-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lingarr-client.js","sourceRoot":"","sources":["../src/lingarr-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lingarr MCP Tool Handlers
|
|
3
|
+
*
|
|
4
|
+
* This module contains all the handlers for Lingarr tools.
|
|
5
|
+
* Separated from index.ts to reduce merge conflicts when mcp-arr updates.
|
|
6
|
+
*/
|
|
7
|
+
import { LingarrClient } from "./lingarr-client.js";
|
|
8
|
+
/**
|
|
9
|
+
* Handler result type matching MCP SDK expectations
|
|
10
|
+
*/
|
|
11
|
+
export interface HandlerResult {
|
|
12
|
+
content: Array<{
|
|
13
|
+
type: "text";
|
|
14
|
+
text: string;
|
|
15
|
+
}>;
|
|
16
|
+
isError?: boolean;
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Handle Lingarr tool calls
|
|
21
|
+
* @param toolName The name of the tool being called
|
|
22
|
+
* @param args The arguments passed to the tool
|
|
23
|
+
* @param client The LingarrClient instance
|
|
24
|
+
* @returns The handler result or null if not a Lingarr tool
|
|
25
|
+
*/
|
|
26
|
+
export declare function handleLingarrTool(toolName: string, args: Record<string, unknown>, client: LingarrClient | undefined): Promise<HandlerResult | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Get Lingarr status for arr_status handler
|
|
29
|
+
* @param client The LingarrClient instance
|
|
30
|
+
* @returns Status object for Lingarr
|
|
31
|
+
*/
|
|
32
|
+
export declare function getLingarrStatus(client: LingarrClient): Promise<{
|
|
33
|
+
configured: boolean;
|
|
34
|
+
connected: boolean;
|
|
35
|
+
version?: string;
|
|
36
|
+
appName?: string;
|
|
37
|
+
updateAvailable?: boolean;
|
|
38
|
+
error?: string;
|
|
39
|
+
}>;
|
|
40
|
+
//# sourceMappingURL=lingarr-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lingarr-handlers.d.ts","sourceRoot":"","sources":["../src/lingarr-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAiC,MAAM,qBAAqB,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,aAAa,GAAG,SAAS,GAChC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAwV/B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;IACrE,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAiBD"}
|