mxroute-cli 0.1.1

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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +464 -0
  3. package/dist/commands/accounts.d.ts +4 -0
  4. package/dist/commands/accounts.js +262 -0
  5. package/dist/commands/accounts.js.map +1 -0
  6. package/dist/commands/aliases.d.ts +3 -0
  7. package/dist/commands/aliases.js +190 -0
  8. package/dist/commands/aliases.js.map +1 -0
  9. package/dist/commands/auth.d.ts +3 -0
  10. package/dist/commands/auth.js +143 -0
  11. package/dist/commands/auth.js.map +1 -0
  12. package/dist/commands/autoresponder.d.ts +4 -0
  13. package/dist/commands/autoresponder.js +280 -0
  14. package/dist/commands/autoresponder.js.map +1 -0
  15. package/dist/commands/catchall.d.ts +2 -0
  16. package/dist/commands/catchall.js +173 -0
  17. package/dist/commands/catchall.js.map +1 -0
  18. package/dist/commands/config.d.ts +5 -0
  19. package/dist/commands/config.js +161 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/dns.d.ts +3 -0
  22. package/dist/commands/dns.js +160 -0
  23. package/dist/commands/dns.js.map +1 -0
  24. package/dist/commands/dnsapi.d.ts +4 -0
  25. package/dist/commands/dnsapi.js +397 -0
  26. package/dist/commands/dnsapi.js.map +1 -0
  27. package/dist/commands/domains.d.ts +2 -0
  28. package/dist/commands/domains.js +109 -0
  29. package/dist/commands/domains.js.map +1 -0
  30. package/dist/commands/filters.d.ts +3 -0
  31. package/dist/commands/filters.js +300 -0
  32. package/dist/commands/filters.js.map +1 -0
  33. package/dist/commands/forwarders.d.ts +3 -0
  34. package/dist/commands/forwarders.js +202 -0
  35. package/dist/commands/forwarders.js.map +1 -0
  36. package/dist/commands/info.d.ts +2 -0
  37. package/dist/commands/info.js +163 -0
  38. package/dist/commands/info.js.map +1 -0
  39. package/dist/commands/lists.d.ts +6 -0
  40. package/dist/commands/lists.js +372 -0
  41. package/dist/commands/lists.js.map +1 -0
  42. package/dist/commands/quota.d.ts +2 -0
  43. package/dist/commands/quota.js +184 -0
  44. package/dist/commands/quota.js.map +1 -0
  45. package/dist/commands/send.d.ts +9 -0
  46. package/dist/commands/send.js +107 -0
  47. package/dist/commands/send.js.map +1 -0
  48. package/dist/commands/setup.d.ts +1 -0
  49. package/dist/commands/setup.js +535 -0
  50. package/dist/commands/setup.js.map +1 -0
  51. package/dist/commands/spam.d.ts +4 -0
  52. package/dist/commands/spam.js +215 -0
  53. package/dist/commands/spam.js.map +1 -0
  54. package/dist/commands/status.d.ts +1 -0
  55. package/dist/commands/status.js +79 -0
  56. package/dist/commands/status.js.map +1 -0
  57. package/dist/commands/troubleshoot.d.ts +1 -0
  58. package/dist/commands/troubleshoot.js +324 -0
  59. package/dist/commands/troubleshoot.js.map +1 -0
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.js +589 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/mcp.d.ts +2 -0
  64. package/dist/mcp.js +599 -0
  65. package/dist/mcp.js.map +1 -0
  66. package/dist/utils/api.d.ts +15 -0
  67. package/dist/utils/api.js +30 -0
  68. package/dist/utils/api.js.map +1 -0
  69. package/dist/utils/config.d.ts +24 -0
  70. package/dist/utils/config.js +150 -0
  71. package/dist/utils/config.js.map +1 -0
  72. package/dist/utils/directadmin.d.ts +49 -0
  73. package/dist/utils/directadmin.js +444 -0
  74. package/dist/utils/directadmin.js.map +1 -0
  75. package/dist/utils/dns.d.ts +14 -0
  76. package/dist/utils/dns.js +284 -0
  77. package/dist/utils/dns.js.map +1 -0
  78. package/dist/utils/theme.d.ts +24 -0
  79. package/dist/utils/theme.js +95 -0
  80. package/dist/utils/theme.js.map +1 -0
  81. package/package.json +92 -0
package/dist/mcp.js ADDED
@@ -0,0 +1,599 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ process.removeAllListeners('warning');
5
+ process.on('warning', (w) => {
6
+ if (w.name !== 'DeprecationWarning')
7
+ console.warn(w);
8
+ });
9
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
10
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
11
+ const zod_1 = require("zod");
12
+ const config_1 = require("./utils/config");
13
+ const api_1 = require("./utils/api");
14
+ const directadmin_1 = require("./utils/directadmin");
15
+ const dns_1 = require("./utils/dns");
16
+ function getCreds() {
17
+ const config = (0, config_1.getConfig)();
18
+ if (!config.daUsername || !config.daLoginKey) {
19
+ throw new Error('Not authenticated. Run "mxroute auth login" first.');
20
+ }
21
+ return { server: config.server, username: config.daUsername, loginKey: config.daLoginKey };
22
+ }
23
+ const server = new mcp_js_1.McpServer({
24
+ name: 'mxroute',
25
+ version: '0.1.0',
26
+ });
27
+ // ─── Domain Tools ────────────────────────────────────────
28
+ server.tool('list_domains', 'List all domains on your MXroute account', {}, async () => {
29
+ const creds = getCreds();
30
+ const domains = await (0, directadmin_1.listDomains)(creds);
31
+ return { content: [{ type: 'text', text: JSON.stringify({ domains }, null, 2) }] };
32
+ });
33
+ server.tool('domain_info', 'Show domain details including aliases', {
34
+ domain: zod_1.z.string().describe('Domain name'),
35
+ }, async ({ domain }) => {
36
+ const creds = getCreds();
37
+ const pointers = await (0, directadmin_1.listDomainPointers)(creds, domain).catch(() => ({}));
38
+ const aliases = Object.keys(pointers).filter((k) => k !== 'error' && k !== 'text');
39
+ return {
40
+ content: [
41
+ { type: 'text', text: JSON.stringify({ domain, aliases, server: `${creds.server}.mxrouting.net` }, null, 2) },
42
+ ],
43
+ };
44
+ });
45
+ // ─── Email Account Tools ─────────────────────────────────
46
+ server.tool('list_email_accounts', 'List email accounts for a domain', {
47
+ domain: zod_1.z.string().describe('Domain name'),
48
+ }, async ({ domain }) => {
49
+ const creds = getCreds();
50
+ const accounts = await (0, directadmin_1.listEmailAccounts)(creds, domain);
51
+ return {
52
+ content: [
53
+ { type: 'text', text: JSON.stringify({ domain, accounts: accounts.map((a) => `${a}@${domain}`) }, null, 2) },
54
+ ],
55
+ };
56
+ });
57
+ server.tool('create_email_account', 'Create a new email account', {
58
+ domain: zod_1.z.string().describe('Domain name'),
59
+ username: zod_1.z.string().describe('Username (before the @)'),
60
+ password: zod_1.z.string().describe('Password (min 8 characters)'),
61
+ quota: zod_1.z.number().optional().describe('Quota in MB (0 = unlimited, default: 0)'),
62
+ }, async ({ domain, username, password, quota }) => {
63
+ const creds = getCreds();
64
+ const result = await (0, directadmin_1.createEmailAccount)(creds, domain, username, password, quota || 0);
65
+ const success = !result.error || result.error === '0';
66
+ return {
67
+ content: [
68
+ {
69
+ type: 'text',
70
+ text: JSON.stringify({
71
+ success,
72
+ email: `${username}@${domain}`,
73
+ message: success ? 'Account created' : result.text || result.details || 'Failed',
74
+ }, null, 2),
75
+ },
76
+ ],
77
+ };
78
+ });
79
+ server.tool('delete_email_account', 'Delete an email account', {
80
+ domain: zod_1.z.string().describe('Domain name'),
81
+ username: zod_1.z.string().describe('Username (before the @)'),
82
+ }, async ({ domain, username }) => {
83
+ const creds = getCreds();
84
+ const result = await (0, directadmin_1.deleteEmailAccount)(creds, domain, username);
85
+ const success = !result.error || result.error === '0';
86
+ return {
87
+ content: [
88
+ {
89
+ type: 'text',
90
+ text: JSON.stringify({ success, email: `${username}@${domain}`, message: success ? 'Account deleted' : result.text || 'Failed' }, null, 2),
91
+ },
92
+ ],
93
+ };
94
+ });
95
+ server.tool('change_email_password', 'Change password for an email account', {
96
+ domain: zod_1.z.string().describe('Domain name'),
97
+ username: zod_1.z.string().describe('Username (before the @)'),
98
+ password: zod_1.z.string().describe('New password'),
99
+ }, async ({ domain, username, password }) => {
100
+ const creds = getCreds();
101
+ const result = await (0, directadmin_1.changeEmailPassword)(creds, domain, username, password);
102
+ const success = !result.error || result.error === '0';
103
+ return {
104
+ content: [
105
+ {
106
+ type: 'text',
107
+ text: JSON.stringify({ success, message: success ? 'Password changed' : result.text || 'Failed' }, null, 2),
108
+ },
109
+ ],
110
+ };
111
+ });
112
+ server.tool('set_email_quota', 'Set storage quota for an email account', {
113
+ domain: zod_1.z.string().describe('Domain name'),
114
+ username: zod_1.z.string().describe('Username (before the @)'),
115
+ quota: zod_1.z.number().describe('Quota in MB (0 = unlimited)'),
116
+ }, async ({ domain, username, quota }) => {
117
+ const creds = getCreds();
118
+ const result = await (0, directadmin_1.changeEmailQuota)(creds, domain, username, quota);
119
+ const success = !result.error || result.error === '0';
120
+ return {
121
+ content: [
122
+ {
123
+ type: 'text',
124
+ text: JSON.stringify({
125
+ success,
126
+ message: success ? `Quota set to ${quota === 0 ? 'unlimited' : quota + 'MB'}` : result.text || 'Failed',
127
+ }, null, 2),
128
+ },
129
+ ],
130
+ };
131
+ });
132
+ // ─── Forwarder Tools ─────────────────────────────────────
133
+ server.tool('list_forwarders', 'List email forwarders for a domain', {
134
+ domain: zod_1.z.string().describe('Domain name'),
135
+ }, async ({ domain }) => {
136
+ const creds = getCreds();
137
+ const forwarders = await (0, directadmin_1.listForwarders)(creds, domain);
138
+ const details = [];
139
+ for (const fwd of forwarders) {
140
+ let dest = '';
141
+ try {
142
+ dest = await (0, directadmin_1.getForwarderDestination)(creds, domain, fwd);
143
+ }
144
+ catch { }
145
+ details.push({ from: `${fwd}@${domain}`, to: dest });
146
+ }
147
+ return { content: [{ type: 'text', text: JSON.stringify({ domain, forwarders: details }, null, 2) }] };
148
+ });
149
+ server.tool('create_forwarder', 'Create an email forwarder', {
150
+ domain: zod_1.z.string().describe('Domain name'),
151
+ username: zod_1.z.string().describe('Username to forward from (before the @)'),
152
+ destination: zod_1.z.string().describe('Destination email address'),
153
+ }, async ({ domain, username, destination }) => {
154
+ const creds = getCreds();
155
+ const result = await (0, directadmin_1.createForwarder)(creds, domain, username, destination);
156
+ const success = !result.error || result.error === '0';
157
+ return {
158
+ content: [
159
+ {
160
+ type: 'text',
161
+ text: JSON.stringify({
162
+ success,
163
+ from: `${username}@${domain}`,
164
+ to: destination,
165
+ message: success ? 'Forwarder created' : result.text || 'Failed',
166
+ }, null, 2),
167
+ },
168
+ ],
169
+ };
170
+ });
171
+ server.tool('delete_forwarder', 'Delete an email forwarder', {
172
+ domain: zod_1.z.string().describe('Domain name'),
173
+ username: zod_1.z.string().describe('Forwarder username (before the @)'),
174
+ }, async ({ domain, username }) => {
175
+ const creds = getCreds();
176
+ const result = await (0, directadmin_1.deleteForwarder)(creds, domain, username);
177
+ const success = !result.error || result.error === '0';
178
+ return {
179
+ content: [
180
+ {
181
+ type: 'text',
182
+ text: JSON.stringify({ success, message: success ? 'Forwarder deleted' : result.text || 'Failed' }, null, 2),
183
+ },
184
+ ],
185
+ };
186
+ });
187
+ // ─── Autoresponder Tools ─────────────────────────────────
188
+ server.tool('list_autoresponders', 'List autoresponders for a domain', {
189
+ domain: zod_1.z.string().describe('Domain name'),
190
+ }, async ({ domain }) => {
191
+ const creds = getCreds();
192
+ const autoresponders = await (0, directadmin_1.listAutoresponders)(creds, domain);
193
+ return { content: [{ type: 'text', text: JSON.stringify({ domain, autoresponders }, null, 2) }] };
194
+ });
195
+ server.tool('create_autoresponder', 'Create an autoresponder / vacation message', {
196
+ domain: zod_1.z.string().describe('Domain name'),
197
+ username: zod_1.z.string().describe('Email username (before the @)'),
198
+ message: zod_1.z.string().describe('Autoresponder message text'),
199
+ cc: zod_1.z.string().optional().describe('CC address (optional)'),
200
+ }, async ({ domain, username, message, cc }) => {
201
+ const creds = getCreds();
202
+ const result = await (0, directadmin_1.createAutoresponder)(creds, domain, username, message, cc);
203
+ const success = !result.error || result.error === '0';
204
+ return {
205
+ content: [
206
+ {
207
+ type: 'text',
208
+ text: JSON.stringify({ success, message: success ? 'Autoresponder created' : result.text || 'Failed' }, null, 2),
209
+ },
210
+ ],
211
+ };
212
+ });
213
+ server.tool('delete_autoresponder', 'Delete an autoresponder', {
214
+ domain: zod_1.z.string().describe('Domain name'),
215
+ username: zod_1.z.string().describe('Email username (before the @)'),
216
+ }, async ({ domain, username }) => {
217
+ const creds = getCreds();
218
+ const result = await (0, directadmin_1.deleteAutoresponder)(creds, domain, username);
219
+ const success = !result.error || result.error === '0';
220
+ return {
221
+ content: [
222
+ {
223
+ type: 'text',
224
+ text: JSON.stringify({ success, message: success ? 'Autoresponder deleted' : result.text || 'Failed' }, null, 2),
225
+ },
226
+ ],
227
+ };
228
+ });
229
+ // ─── Catch-All Tools ─────────────────────────────────────
230
+ server.tool('get_catchall', 'Get catch-all setting for a domain', {
231
+ domain: zod_1.z.string().describe('Domain name'),
232
+ }, async ({ domain }) => {
233
+ const creds = getCreds();
234
+ const value = await (0, directadmin_1.getCatchAll)(creds, domain);
235
+ let description = value;
236
+ if (value === ':fail:')
237
+ description = 'Reject (bounce to sender)';
238
+ else if (value === ':blackhole:')
239
+ description = 'Disabled (silently discard)';
240
+ else if (value)
241
+ description = `Forward to ${value}`;
242
+ else
243
+ description = 'Not configured';
244
+ return { content: [{ type: 'text', text: JSON.stringify({ domain, catchAll: value, description }, null, 2) }] };
245
+ });
246
+ server.tool('set_catchall', 'Set catch-all for a domain', {
247
+ domain: zod_1.z.string().describe('Domain name'),
248
+ address: zod_1.z.string().describe('Destination email, or ":fail:" to reject, or ":blackhole:" to discard'),
249
+ }, async ({ domain, address }) => {
250
+ const creds = getCreds();
251
+ const result = await (0, directadmin_1.setCatchAll)(creds, domain, address);
252
+ const success = !result.error || result.error === '0';
253
+ return {
254
+ content: [
255
+ {
256
+ type: 'text',
257
+ text: JSON.stringify({ success, message: success ? `Catch-all set to ${address}` : result.text || 'Failed' }, null, 2),
258
+ },
259
+ ],
260
+ };
261
+ });
262
+ // ─── Spam Tools ──────────────────────────────────────────
263
+ server.tool('get_spam_config', 'Get SpamAssassin configuration for a domain', {
264
+ domain: zod_1.z.string().describe('Domain name'),
265
+ }, async ({ domain }) => {
266
+ const creds = getCreds();
267
+ const config = await (0, directadmin_1.getSpamConfig)(creds, domain);
268
+ return { content: [{ type: 'text', text: JSON.stringify({ domain, spamConfig: config }, null, 2) }] };
269
+ });
270
+ server.tool('set_spam_config', 'Configure SpamAssassin for a domain', {
271
+ domain: zod_1.z.string().describe('Domain name'),
272
+ enabled: zod_1.z.boolean().optional().describe('Enable or disable SpamAssassin'),
273
+ required_score: zod_1.z.string().optional().describe('Score threshold (1-10, lower = more aggressive)'),
274
+ where: zod_1.z.string().optional().describe('Where to put spam: "userspamfolder", "inbox", or "delete"'),
275
+ }, async ({ domain, enabled, required_score, where }) => {
276
+ const creds = getCreds();
277
+ const settings = {};
278
+ if (enabled !== undefined)
279
+ settings.action = enabled ? 'enable' : 'disable';
280
+ if (required_score)
281
+ settings.required_score = required_score;
282
+ if (where)
283
+ settings.where = where;
284
+ const result = await (0, directadmin_1.setSpamConfig)(creds, domain, settings);
285
+ const success = !result.error || result.error === '0';
286
+ return {
287
+ content: [
288
+ {
289
+ type: 'text',
290
+ text: JSON.stringify({ success, message: success ? 'Spam config updated' : result.text || 'Failed' }, null, 2),
291
+ },
292
+ ],
293
+ };
294
+ });
295
+ // ─── DNS Tools ───────────────────────────────────────────
296
+ server.tool('dns_health_check', 'Run DNS health check for a domain (MX, SPF, DKIM, DMARC)', {
297
+ domain: zod_1.z.string().describe('Domain name'),
298
+ }, async ({ domain }) => {
299
+ const config = (0, config_1.getConfig)();
300
+ const server = config.server;
301
+ if (!server)
302
+ throw new Error('Server not configured. Run "mxroute config setup" first.');
303
+ const results = await (0, dns_1.runFullDnsCheck)(domain, server);
304
+ const summary = {
305
+ domain,
306
+ passed: results.filter((r) => r.status === 'pass').length,
307
+ total: results.length,
308
+ checks: results.map((r) => ({
309
+ type: r.type,
310
+ status: r.status,
311
+ message: r.message,
312
+ expected: r.expected,
313
+ actual: r.actual,
314
+ })),
315
+ };
316
+ return { content: [{ type: 'text', text: JSON.stringify(summary, null, 2) }] };
317
+ });
318
+ server.tool('list_dns_records', 'List DNS records for a domain via DirectAdmin', {
319
+ domain: zod_1.z.string().describe('Domain name'),
320
+ }, async ({ domain }) => {
321
+ const creds = getCreds();
322
+ const records = await (0, directadmin_1.listDnsRecords)(creds, domain);
323
+ return { content: [{ type: 'text', text: JSON.stringify({ domain, records }, null, 2) }] };
324
+ });
325
+ server.tool('add_dns_record', 'Add a DNS record', {
326
+ domain: zod_1.z.string().describe('Domain name'),
327
+ type: zod_1.z.string().describe('Record type (A, AAAA, CNAME, MX, TXT, SRV)'),
328
+ name: zod_1.z.string().describe('Record name'),
329
+ value: zod_1.z.string().describe('Record value'),
330
+ priority: zod_1.z.number().optional().describe('Priority (for MX records)'),
331
+ }, async ({ domain, type, name, value, priority }) => {
332
+ const creds = getCreds();
333
+ const result = await (0, directadmin_1.addDnsRecord)(creds, domain, type, name, value, priority);
334
+ const success = !result.error || result.error === '0';
335
+ return {
336
+ content: [
337
+ {
338
+ type: 'text',
339
+ text: JSON.stringify({ success, message: success ? `Added ${type} record` : result.text || 'Failed' }, null, 2),
340
+ },
341
+ ],
342
+ };
343
+ });
344
+ server.tool('delete_dns_record', 'Delete a DNS record', {
345
+ domain: zod_1.z.string().describe('Domain name'),
346
+ type: zod_1.z.string().describe('Record type'),
347
+ name: zod_1.z.string().describe('Record name'),
348
+ value: zod_1.z.string().describe('Record value'),
349
+ }, async ({ domain, type, name, value }) => {
350
+ const creds = getCreds();
351
+ const result = await (0, directadmin_1.deleteDnsRecord)(creds, domain, type, name, value);
352
+ const success = !result.error || result.error === '0';
353
+ return {
354
+ content: [
355
+ {
356
+ type: 'text',
357
+ text: JSON.stringify({ success, message: success ? 'Record deleted' : result.text || 'Failed' }, null, 2),
358
+ },
359
+ ],
360
+ };
361
+ });
362
+ server.tool('get_dkim_key', 'Retrieve DKIM key for a domain', {
363
+ domain: zod_1.z.string().describe('Domain name'),
364
+ }, async ({ domain }) => {
365
+ const creds = getCreds();
366
+ const key = await (0, directadmin_1.getDkimKey)(creds, domain);
367
+ return {
368
+ content: [
369
+ {
370
+ type: 'text',
371
+ text: JSON.stringify({
372
+ domain,
373
+ recordName: `x._domainkey.${domain}`,
374
+ recordType: 'TXT',
375
+ value: key || null,
376
+ found: !!key,
377
+ }, null, 2),
378
+ },
379
+ ],
380
+ };
381
+ });
382
+ // ─── Email Filter Tools ──────────────────────────────────
383
+ server.tool('list_email_filters', 'List email filters for an account', {
384
+ domain: zod_1.z.string().describe('Domain name'),
385
+ username: zod_1.z.string().describe('Email username (before the @)'),
386
+ }, async ({ domain, username }) => {
387
+ const creds = getCreds();
388
+ const filters = await (0, directadmin_1.listEmailFilters)(creds, domain, username);
389
+ return {
390
+ content: [{ type: 'text', text: JSON.stringify({ account: `${username}@${domain}`, filters }, null, 2) }],
391
+ };
392
+ });
393
+ server.tool('create_email_filter', 'Create an email filter rule', {
394
+ domain: zod_1.z.string().describe('Domain name'),
395
+ username: zod_1.z.string().describe('Email username (before the @)'),
396
+ name: zod_1.z.string().describe('Filter name'),
397
+ field: zod_1.z.string().describe('Field to match: from, to, subject, body'),
398
+ match: zod_1.z.string().describe('Match type: contains, equals, startswith, endswith'),
399
+ value: zod_1.z.string().describe('Value to match against'),
400
+ action: zod_1.z.string().describe('Action: discard, forward, move'),
401
+ destination: zod_1.z.string().optional().describe('Destination (email for forward, folder for move)'),
402
+ }, async ({ domain, username, name, field, match, value, action, destination }) => {
403
+ const creds = getCreds();
404
+ const result = await (0, directadmin_1.createEmailFilter)(creds, domain, username, {
405
+ name,
406
+ field,
407
+ match,
408
+ value,
409
+ action,
410
+ destination: destination || '',
411
+ });
412
+ const success = !result.error || result.error === '0';
413
+ return {
414
+ content: [
415
+ {
416
+ type: 'text',
417
+ text: JSON.stringify({ success, message: success ? 'Filter created' : result.text || 'Failed' }, null, 2),
418
+ },
419
+ ],
420
+ };
421
+ });
422
+ server.tool('delete_email_filter', 'Delete an email filter', {
423
+ domain: zod_1.z.string().describe('Domain name'),
424
+ username: zod_1.z.string().describe('Email username (before the @)'),
425
+ filterName: zod_1.z.string().describe('Name of the filter to delete'),
426
+ }, async ({ domain, username, filterName }) => {
427
+ const creds = getCreds();
428
+ const result = await (0, directadmin_1.deleteEmailFilter)(creds, domain, username, filterName);
429
+ const success = !result.error || result.error === '0';
430
+ return {
431
+ content: [
432
+ {
433
+ type: 'text',
434
+ text: JSON.stringify({ success, message: success ? 'Filter deleted' : result.text || 'Failed' }, null, 2),
435
+ },
436
+ ],
437
+ };
438
+ });
439
+ // ─── Mailing List Tools ──────────────────────────────────
440
+ server.tool('list_mailing_lists', 'List mailing lists for a domain', {
441
+ domain: zod_1.z.string().describe('Domain name'),
442
+ }, async ({ domain }) => {
443
+ const creds = getCreds();
444
+ const lists = await (0, directadmin_1.listMailingLists)(creds, domain);
445
+ return { content: [{ type: 'text', text: JSON.stringify({ domain, lists }, null, 2) }] };
446
+ });
447
+ server.tool('create_mailing_list', 'Create a mailing list', {
448
+ domain: zod_1.z.string().describe('Domain name'),
449
+ name: zod_1.z.string().describe('List name'),
450
+ }, async ({ domain, name }) => {
451
+ const creds = getCreds();
452
+ const result = await (0, directadmin_1.createMailingList)(creds, domain, name);
453
+ const success = !result.error || result.error === '0';
454
+ return {
455
+ content: [
456
+ {
457
+ type: 'text',
458
+ text: JSON.stringify({ success, list: `${name}@${domain}`, message: success ? 'List created' : result.text || 'Failed' }, null, 2),
459
+ },
460
+ ],
461
+ };
462
+ });
463
+ server.tool('delete_mailing_list', 'Delete a mailing list', {
464
+ domain: zod_1.z.string().describe('Domain name'),
465
+ name: zod_1.z.string().describe('List name'),
466
+ }, async ({ domain, name }) => {
467
+ const creds = getCreds();
468
+ const result = await (0, directadmin_1.deleteMailingList)(creds, domain, name);
469
+ const success = !result.error || result.error === '0';
470
+ return {
471
+ content: [
472
+ {
473
+ type: 'text',
474
+ text: JSON.stringify({ success, message: success ? 'List deleted' : result.text || 'Failed' }, null, 2),
475
+ },
476
+ ],
477
+ };
478
+ });
479
+ server.tool('list_mailing_list_members', 'Show members of a mailing list', {
480
+ domain: zod_1.z.string().describe('Domain name'),
481
+ name: zod_1.z.string().describe('List name'),
482
+ }, async ({ domain, name }) => {
483
+ const creds = getCreds();
484
+ const members = await (0, directadmin_1.getMailingListMembers)(creds, domain, name);
485
+ return { content: [{ type: 'text', text: JSON.stringify({ list: `${name}@${domain}`, members }, null, 2) }] };
486
+ });
487
+ server.tool('add_mailing_list_member', 'Add member to a mailing list', {
488
+ domain: zod_1.z.string().describe('Domain name'),
489
+ name: zod_1.z.string().describe('List name'),
490
+ email: zod_1.z.string().describe('Email address to add'),
491
+ }, async ({ domain, name, email }) => {
492
+ const creds = getCreds();
493
+ const result = await (0, directadmin_1.addMailingListMember)(creds, domain, name, email);
494
+ const success = !result.error || result.error === '0';
495
+ return {
496
+ content: [
497
+ {
498
+ type: 'text',
499
+ text: JSON.stringify({ success, message: success ? `Added ${email}` : result.text || 'Failed' }, null, 2),
500
+ },
501
+ ],
502
+ };
503
+ });
504
+ server.tool('remove_mailing_list_member', 'Remove member from a mailing list', {
505
+ domain: zod_1.z.string().describe('Domain name'),
506
+ name: zod_1.z.string().describe('List name'),
507
+ email: zod_1.z.string().describe('Email address to remove'),
508
+ }, async ({ domain, name, email }) => {
509
+ const creds = getCreds();
510
+ const result = await (0, directadmin_1.removeMailingListMember)(creds, domain, name, email);
511
+ const success = !result.error || result.error === '0';
512
+ return {
513
+ content: [
514
+ {
515
+ type: 'text',
516
+ text: JSON.stringify({ success, message: success ? `Removed ${email}` : result.text || 'Failed' }, null, 2),
517
+ },
518
+ ],
519
+ };
520
+ });
521
+ // ─── Domain Alias Tools ──────────────────────────────────
522
+ server.tool('list_domain_aliases', 'List domain aliases/pointers', {
523
+ domain: zod_1.z.string().describe('Primary domain name'),
524
+ }, async ({ domain }) => {
525
+ const creds = getCreds();
526
+ const pointers = await (0, directadmin_1.listDomainPointers)(creds, domain);
527
+ const aliases = Object.keys(pointers).filter((k) => k !== 'error' && k !== 'text');
528
+ return { content: [{ type: 'text', text: JSON.stringify({ domain, aliases }, null, 2) }] };
529
+ });
530
+ server.tool('add_domain_alias', 'Add a domain alias/pointer', {
531
+ domain: zod_1.z.string().describe('Primary domain name'),
532
+ alias: zod_1.z.string().describe('Alias domain to add'),
533
+ }, async ({ domain, alias }) => {
534
+ const creds = getCreds();
535
+ const result = await (0, directadmin_1.addDomainPointer)(creds, domain, alias);
536
+ const success = !result.error || result.error === '0';
537
+ return {
538
+ content: [
539
+ {
540
+ type: 'text',
541
+ text: JSON.stringify({ success, message: success ? `Added alias ${alias} → ${domain}` : result.text || 'Failed' }, null, 2),
542
+ },
543
+ ],
544
+ };
545
+ });
546
+ server.tool('remove_domain_alias', 'Remove a domain alias/pointer', {
547
+ domain: zod_1.z.string().describe('Primary domain name'),
548
+ alias: zod_1.z.string().describe('Alias domain to remove'),
549
+ }, async ({ domain, alias }) => {
550
+ const creds = getCreds();
551
+ const result = await (0, directadmin_1.deleteDomainPointer)(creds, domain, alias);
552
+ const success = !result.error || result.error === '0';
553
+ return {
554
+ content: [
555
+ {
556
+ type: 'text',
557
+ text: JSON.stringify({ success, message: success ? `Removed alias ${alias}` : result.text || 'Failed' }, null, 2),
558
+ },
559
+ ],
560
+ };
561
+ });
562
+ // ─── Quota Tools ─────────────────────────────────────────
563
+ server.tool('get_quota', 'Get account-wide quota and usage information', {}, async () => {
564
+ const creds = getCreds();
565
+ const [usage, config] = await Promise.all([(0, directadmin_1.getQuotaUsage)(creds), (0, directadmin_1.getUserConfig)(creds)]);
566
+ return { content: [{ type: 'text', text: JSON.stringify({ usage, limits: config }, null, 2) }] };
567
+ });
568
+ // ─── Send Email Tools ────────────────────────────────────
569
+ server.tool('send_email', 'Send an email via MXroute SMTP API', {
570
+ to: zod_1.z.string().describe('Recipient email address'),
571
+ subject: zod_1.z.string().describe('Email subject'),
572
+ body: zod_1.z.string().describe('Email body (HTML supported)'),
573
+ from: zod_1.z.string().optional().describe('Sender email (defaults to configured username)'),
574
+ }, async ({ to, subject, body, from }) => {
575
+ const config = (0, config_1.getConfig)();
576
+ if (!config.server || !config.username || !config.password) {
577
+ throw new Error('SMTP not configured. Run "mxroute config setup" first.');
578
+ }
579
+ const result = await (0, api_1.sendEmail)({
580
+ server: `${config.server}.mxrouting.net`,
581
+ username: config.username,
582
+ password: config.password,
583
+ from: from || config.username,
584
+ to,
585
+ subject,
586
+ body,
587
+ });
588
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
589
+ });
590
+ // ─── Start server ────────────────────────────────────────
591
+ async function main() {
592
+ const transport = new stdio_js_1.StdioServerTransport();
593
+ await server.connect(transport);
594
+ }
595
+ main().catch((err) => {
596
+ console.error('MCP server error:', err);
597
+ process.exit(1);
598
+ });
599
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface SendEmailOptions {
2
+ server: string;
3
+ username: string;
4
+ password: string;
5
+ from: string;
6
+ to: string;
7
+ subject: string;
8
+ body: string;
9
+ }
10
+ export interface ApiResponse {
11
+ success: boolean;
12
+ message: string;
13
+ }
14
+ export declare function sendEmail(options: SendEmailOptions): Promise<ApiResponse>;
15
+ export declare function testConnection(server: string, username: string, password: string): Promise<ApiResponse>;