read-email-mcp 1.0.0 → 2.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/dist/imap.js CHANGED
@@ -3,6 +3,8 @@ import crypto from "node:crypto";
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import { parseEmail } from "./parser.js";
6
+ const DEFAULT_EXCLUDE_FLAGS = ["\\all"];
7
+ const UID_SET_PATTERN = /^\d+([:,\-]\d+)*$/;
6
8
  export class EmailSyncService {
7
9
  options;
8
10
  clientFactory;
@@ -10,46 +12,52 @@ export class EmailSyncService {
10
12
  this.options = options;
11
13
  this.clientFactory = options.clientFactory ?? createImapFlowClient;
12
14
  }
15
+ async check() {
16
+ return checkConnectivity(this.options.imap, this.clientFactory);
17
+ }
13
18
  async sync(syncOptions = {}) {
14
19
  const startedAt = new Date().toISOString();
15
20
  const client = this.clientFactory(this.options.imap);
21
+ const targeted = Boolean(syncOptions.uids || syncOptions.search || syncOptions.since);
16
22
  let connected = false;
17
23
  const syncedMailboxes = [];
24
+ const errors = [];
18
25
  let syncedMessages = 0;
26
+ let refreshedFlags = 0;
27
+ let prunedMessages = 0;
19
28
  try {
20
29
  await client.connect();
21
30
  connected = true;
22
- const mailboxes = await this.selectMailboxes(client, syncOptions.mailbox);
31
+ const mailboxes = await this.selectMailboxes(client, syncOptions);
23
32
  for (const mailbox of mailboxes) {
24
33
  if (syncOptions.limit !== undefined && syncedMessages >= syncOptions.limit) {
25
34
  break;
26
35
  }
27
36
  syncedMailboxes.push(mailbox.path);
28
- const syncedForMailbox = await this.syncMailbox(client, mailbox, syncOptions, syncedMessages);
29
- syncedMessages += syncedForMailbox;
37
+ try {
38
+ const outcome = await this.syncMailbox(client, mailbox, syncOptions, targeted, syncedMessages);
39
+ syncedMessages += outcome.synced;
40
+ refreshedFlags += outcome.refreshedFlags;
41
+ prunedMessages += outcome.pruned;
42
+ }
43
+ catch (error) {
44
+ errors.push({ mailbox: mailbox.path, message: error instanceof Error ? error.message : String(error) });
45
+ }
30
46
  }
31
- const result = {
32
- ok: true,
33
- mailbox: syncOptions.mailbox ?? null,
34
- startedAt,
35
- finishedAt: new Date().toISOString(),
36
- message: `Synced ${syncedMessages} message${syncedMessages === 1 ? "" : "s"}`,
37
- syncedMessages,
38
- mailboxes: syncedMailboxes
39
- };
40
- this.options.store.recordSyncResult(result);
41
- return result;
42
47
  }
43
48
  catch (error) {
44
- const result = {
49
+ const result = this.buildResult({
45
50
  ok: false,
46
- mailbox: syncOptions.mailbox ?? null,
51
+ mode: targeted ? "targeted" : "incremental",
52
+ syncOptions,
47
53
  startedAt,
48
- finishedAt: new Date().toISOString(),
49
- message: error instanceof Error ? error.message : String(error),
50
54
  syncedMessages,
51
- mailboxes: syncedMailboxes
52
- };
55
+ refreshedFlags,
56
+ prunedMessages,
57
+ syncedMailboxes,
58
+ errors,
59
+ message: error instanceof Error ? error.message : String(error)
60
+ });
53
61
  this.options.store.recordSyncResult(result);
54
62
  return result;
55
63
  }
@@ -58,30 +66,75 @@ export class EmailSyncService {
58
66
  await client.logout();
59
67
  }
60
68
  }
69
+ const ok = errors.length === 0;
70
+ const result = this.buildResult({
71
+ ok,
72
+ mode: targeted ? "targeted" : "incremental",
73
+ syncOptions,
74
+ startedAt,
75
+ syncedMessages,
76
+ refreshedFlags,
77
+ prunedMessages,
78
+ syncedMailboxes,
79
+ errors,
80
+ message: ok
81
+ ? `Synced ${syncedMessages} message${syncedMessages === 1 ? "" : "s"}`
82
+ : `Synced ${syncedMessages} message${syncedMessages === 1 ? "" : "s"} with ${errors.length} mailbox error${errors.length === 1 ? "" : "s"}`
83
+ });
84
+ this.options.store.recordSyncResult(result);
85
+ return result;
86
+ }
87
+ buildResult(input) {
88
+ return {
89
+ ok: input.ok,
90
+ mode: input.mode,
91
+ mailbox: input.syncOptions.mailbox ?? null,
92
+ startedAt: input.startedAt,
93
+ finishedAt: new Date().toISOString(),
94
+ message: input.message,
95
+ syncedMessages: input.syncedMessages,
96
+ mailboxes: input.syncedMailboxes,
97
+ refreshedFlags: input.refreshedFlags,
98
+ prunedMessages: input.prunedMessages,
99
+ errors: input.errors
100
+ };
61
101
  }
62
- async selectMailboxes(client, requestedMailbox) {
102
+ async selectMailboxes(client, syncOptions) {
103
+ const includeNames = new Set([syncOptions.mailbox, ...(syncOptions.mailboxes ?? [])].filter(Boolean));
104
+ const excludeMatcher = makeMatcher(syncOptions.excludeMailboxes ?? []);
105
+ const excludeFlags = new Set((syncOptions.excludeFlags ?? DEFAULT_EXCLUDE_FLAGS).map((flag) => flag.toLowerCase()));
63
106
  const mailboxes = [];
107
+ const seen = new Set();
64
108
  const mailboxList = await client.list();
65
109
  for await (const mailbox of mailboxList) {
66
110
  const flags = [...(mailbox.flags ?? [])];
67
111
  if (flags.includes("\\Noselect")) {
68
112
  continue;
69
113
  }
70
- if (requestedMailbox && mailbox.path !== requestedMailbox) {
114
+ if (includeNames.size > 0 && !includeNames.has(mailbox.path)) {
71
115
  continue;
72
116
  }
117
+ if (excludeMatcher(mailbox.path)) {
118
+ continue;
119
+ }
120
+ if (flags.some((flag) => excludeFlags.has(flag.toLowerCase()))) {
121
+ continue;
122
+ }
123
+ seen.add(mailbox.path);
73
124
  mailboxes.push({
74
125
  path: mailbox.path,
75
126
  delimiter: mailbox.delimiter ?? "/",
76
127
  flags
77
128
  });
78
129
  }
79
- if (requestedMailbox && mailboxes.length === 0) {
80
- mailboxes.push({ path: requestedMailbox, delimiter: "/", flags: [] });
130
+ for (const name of includeNames) {
131
+ if (!seen.has(name) && !excludeMatcher(name)) {
132
+ mailboxes.push({ path: name, delimiter: "/", flags: [] });
133
+ }
81
134
  }
82
135
  return mailboxes;
83
136
  }
84
- async syncMailbox(client, mailbox, syncOptions, alreadySynced) {
137
+ async syncMailbox(client, mailbox, syncOptions, targeted, alreadySynced) {
85
138
  const lock = await client.getMailboxLock(mailbox.path, {
86
139
  readOnly: true,
87
140
  description: "read-email-mcp read-only sync"
@@ -91,12 +144,13 @@ export class EmailSyncService {
91
144
  const uidValidity = mailboxState.uidValidity;
92
145
  const existing = this.options.store.getMailbox(mailbox.path);
93
146
  const uidValidityChanged = Boolean(existing?.uidValidity && existing.uidValidity !== uidValidity);
94
- const startUid = uidValidityChanged ? 1 : (existing?.highestUid ?? 0) + 1;
95
- let highestUid = uidValidityChanged ? 0 : existing?.highestUid ?? 0;
96
- let count = 0;
97
147
  if (uidValidityChanged) {
98
- this.options.store.deleteMailboxMessages(mailbox.path);
148
+ const orphanPaths = this.options.store.deleteMailboxMessages(mailbox.path);
149
+ await this.removeRawFiles(orphanPaths);
99
150
  }
151
+ let highestUid = uidValidityChanged || syncOptions.resetMailbox ? 0 : existing?.highestUid ?? 0;
152
+ const startUid = highestUid + 1;
153
+ let synced = 0;
100
154
  this.options.store.upsertMailbox({
101
155
  path: mailbox.path,
102
156
  delimiter: mailbox.delimiter,
@@ -105,55 +159,161 @@ export class EmailSyncService {
105
159
  selectable: true,
106
160
  lastSyncedAt: existing?.lastSyncedAt ?? null
107
161
  });
108
- const fetchPlan = buildFetchPlan(startUid, syncOptions, alreadySynced, mailboxState.maxUid);
109
- if (!fetchPlan) {
110
- this.options.store.upsertMailbox({
111
- path: mailbox.path,
112
- delimiter: mailbox.delimiter,
113
- uidValidity,
114
- highestUid: Math.max(highestUid, mailboxState.maxUid ?? highestUid),
115
- selectable: true,
116
- lastSyncedAt: new Date().toISOString()
162
+ if (targeted) {
163
+ synced = await this.syncTargeted(client, mailbox, uidValidity, syncOptions, alreadySynced);
164
+ }
165
+ else {
166
+ const outcome = await this.syncIncremental(client, mailbox, uidValidity, syncOptions, {
167
+ startUid,
168
+ highestUid,
169
+ alreadySynced,
170
+ maxUid: mailboxState.maxUid
117
171
  });
118
- return 0;
172
+ synced = outcome.synced;
173
+ highestUid = outcome.highestUid;
119
174
  }
120
- for await (const fetched of client.fetch(fetchPlan.range, { source: true, uid: true, flags: true, internalDate: true, size: true }, { uid: true })) {
121
- if (syncOptions.limit !== undefined && alreadySynced + count >= syncOptions.limit) {
122
- break;
123
- }
124
- highestUid = Math.max(highestUid, fetched.uid);
125
- const internalDate = normalizeInternalDate(fetched.internalDate);
126
- if (syncOptions.since && internalDate && internalDate < syncOptions.since) {
127
- continue;
175
+ let refreshedFlags = 0;
176
+ let pruned = 0;
177
+ if (syncOptions.refreshFlags) {
178
+ const refresh = await this.refreshMailboxFlags(client, mailbox, mailboxState.maxUid ?? highestUid);
179
+ refreshedFlags = refresh.refreshed;
180
+ if (syncOptions.pruneExpunged !== false) {
181
+ pruned = refresh.pruned;
128
182
  }
129
- const raw = Buffer.isBuffer(fetched.source) ? fetched.source : Buffer.from(fetched.source);
130
- const rawPath = await this.writeRawEmail(mailbox.path, uidValidity, fetched.uid, raw);
131
- const parsed = await parseFetchedEmail(raw, {
132
- mailbox: mailbox.path,
133
- uid: fetched.uid,
134
- uidValidity,
135
- rawPath,
136
- internalDate,
137
- flags: [...(fetched.flags ?? [])],
138
- size: fetched.size ?? raw.length
139
- });
140
- this.options.store.upsertMessage(parsed);
141
- count += 1;
142
183
  }
143
184
  this.options.store.upsertMailbox({
144
185
  path: mailbox.path,
145
186
  delimiter: mailbox.delimiter,
146
187
  uidValidity,
147
- highestUid: Math.max(highestUid, fetchPlan.scannedThroughUid ?? highestUid),
188
+ highestUid,
148
189
  selectable: true,
149
190
  lastSyncedAt: new Date().toISOString()
150
191
  });
151
- return count;
192
+ return { synced, refreshedFlags, pruned };
152
193
  }
153
194
  finally {
154
195
  lock.release();
155
196
  }
156
197
  }
198
+ async syncIncremental(client, mailbox, uidValidity, syncOptions, state) {
199
+ let { highestUid } = state;
200
+ let count = 0;
201
+ const fetchPlan = buildFetchPlan(state.startUid, syncOptions, state.alreadySynced, state.maxUid);
202
+ if (!fetchPlan) {
203
+ return { synced: 0, highestUid: Math.max(highestUid, state.maxUid ?? highestUid) };
204
+ }
205
+ for await (const fetched of client.fetch(fetchPlan.range, { source: true, uid: true, flags: true, internalDate: true, size: true }, { uid: true })) {
206
+ if (syncOptions.limit !== undefined && state.alreadySynced + count >= syncOptions.limit) {
207
+ break;
208
+ }
209
+ highestUid = Math.max(highestUid, fetched.uid);
210
+ const parsed = await this.ingestFetched(mailbox.path, uidValidity, fetched);
211
+ if (parsed) {
212
+ count += 1;
213
+ }
214
+ }
215
+ return {
216
+ synced: count,
217
+ highestUid: Math.max(highestUid, fetchPlan.scannedThroughUid ?? highestUid)
218
+ };
219
+ }
220
+ async syncTargeted(client, mailbox, uidValidity, syncOptions, alreadySynced) {
221
+ const uidSet = await this.resolveTargetUids(client, mailbox, syncOptions);
222
+ if (uidSet.length === 0) {
223
+ return 0;
224
+ }
225
+ const remaining = syncOptions.limit === undefined ? null : Math.max(syncOptions.limit - alreadySynced, 0);
226
+ const toFetch = remaining === null ? uidSet : uidSet.slice(0, remaining);
227
+ if (toFetch.length === 0) {
228
+ return 0;
229
+ }
230
+ let count = 0;
231
+ for await (const fetched of client.fetch(toFetch.join(","), { source: true, uid: true, flags: true, internalDate: true, size: true }, { uid: true })) {
232
+ if (syncOptions.limit !== undefined && alreadySynced + count >= syncOptions.limit) {
233
+ break;
234
+ }
235
+ const parsed = await this.ingestFetched(mailbox.path, uidValidity, fetched);
236
+ if (parsed) {
237
+ count += 1;
238
+ }
239
+ }
240
+ return count;
241
+ }
242
+ async resolveTargetUids(client, mailbox, syncOptions) {
243
+ const criteria = { ...syncOptions.search };
244
+ if (syncOptions.since && !criteria.since) {
245
+ criteria.since = syncOptions.since;
246
+ }
247
+ const hasCriteria = Object.values(criteria).some((value) => value !== undefined);
248
+ let uids = null;
249
+ if (hasCriteria) {
250
+ uids = await this.runServerSideSearch(client, mailbox, criteria);
251
+ }
252
+ if (syncOptions.uids) {
253
+ const explicit = expandUidSet(syncOptions.uids);
254
+ uids = uids === null ? explicit : new Set([...uids].filter((uid) => explicit.has(uid)));
255
+ }
256
+ if (uids === null) {
257
+ return [];
258
+ }
259
+ return [...uids].sort((a, b) => a - b);
260
+ }
261
+ async runServerSideSearch(client, mailbox, criteria) {
262
+ if (client.search) {
263
+ const query = toImapSearchQuery(criteria);
264
+ const result = await client.search(query, { uid: true });
265
+ return new Set(await collectNumbers(result));
266
+ }
267
+ const onlySince = Object.keys(criteria).every((key) => key === "since");
268
+ if (onlySince && criteria.since) {
269
+ const sinceTime = Date.parse(criteria.since);
270
+ const uids = new Set();
271
+ for await (const message of client.fetch("1:*", { uid: true, internalDate: true }, { uid: true })) {
272
+ const internalDate = normalizeInternalDate(message.internalDate);
273
+ if (internalDate && Date.parse(internalDate) >= sinceTime) {
274
+ uids.add(message.uid);
275
+ }
276
+ }
277
+ return uids;
278
+ }
279
+ throw new Error(`Server-side search is not supported by this IMAP client for mailbox ${mailbox.path}; only "since" can be evaluated locally`);
280
+ }
281
+ async ingestFetched(mailboxPath, uidValidity, fetched) {
282
+ if (fetched.source === undefined) {
283
+ return false;
284
+ }
285
+ const raw = Buffer.isBuffer(fetched.source) ? fetched.source : Buffer.from(fetched.source);
286
+ const internalDate = normalizeInternalDate(fetched.internalDate);
287
+ const rawPath = await this.writeRawEmail(mailboxPath, uidValidity, fetched.uid, raw);
288
+ const parsed = await parseFetchedEmail(raw, {
289
+ mailbox: mailboxPath,
290
+ uid: fetched.uid,
291
+ uidValidity,
292
+ rawPath,
293
+ internalDate,
294
+ flags: [...(fetched.flags ?? [])],
295
+ size: fetched.size ?? raw.length
296
+ });
297
+ this.options.store.upsertMessage(parsed);
298
+ return true;
299
+ }
300
+ async refreshMailboxFlags(client, mailbox, maxUid) {
301
+ if (maxUid === null || maxUid <= 0) {
302
+ return { refreshed: 0, pruned: 0 };
303
+ }
304
+ const seenUids = new Set();
305
+ let refreshed = 0;
306
+ for await (const fetched of client.fetch(`1:${maxUid}`, { uid: true, flags: true }, { uid: true })) {
307
+ seenUids.add(fetched.uid);
308
+ const updated = this.options.store.updateMessageFlags(mailbox.path, fetched.uid, [...(fetched.flags ?? [])]);
309
+ if (updated) {
310
+ refreshed += 1;
311
+ }
312
+ }
313
+ const orphanPaths = this.options.store.pruneMailboxMessagesExcept(mailbox.path, seenUids, maxUid);
314
+ await this.removeRawFiles(orphanPaths);
315
+ return { refreshed, pruned: orphanPaths.length };
316
+ }
157
317
  async writeRawEmail(mailbox, uidValidity, uid, raw) {
158
318
  const mailboxDir = path.join(this.options.rawDir, hashMailbox(mailbox));
159
319
  await fs.mkdir(mailboxDir, { recursive: true });
@@ -161,15 +321,51 @@ export class EmailSyncService {
161
321
  await fs.writeFile(rawPath, raw);
162
322
  return rawPath;
163
323
  }
324
+ async removeRawFiles(paths) {
325
+ const rawRoot = path.resolve(this.options.rawDir);
326
+ for (const rawPath of paths) {
327
+ const resolved = path.resolve(rawPath);
328
+ if (!resolved.startsWith(rawRoot + path.sep)) {
329
+ continue;
330
+ }
331
+ await fs.rm(resolved, { force: true }).catch(() => { });
332
+ }
333
+ }
334
+ }
335
+ export async function checkConnectivity(imap, clientFactory = createImapFlowClient) {
336
+ const client = clientFactory(imap);
337
+ try {
338
+ await client.connect();
339
+ const listed = await client.list();
340
+ const mailboxes = [];
341
+ for await (const mailbox of listed) {
342
+ mailboxes.push(mailbox.path);
343
+ }
344
+ return { ok: true, host: imap.host, mailboxCount: mailboxes.length, mailboxes };
345
+ }
346
+ catch (error) {
347
+ return {
348
+ ok: false,
349
+ host: imap.host,
350
+ mailboxCount: 0,
351
+ mailboxes: [],
352
+ error: error instanceof Error ? error.message : String(error)
353
+ };
354
+ }
355
+ finally {
356
+ await client.logout().catch(() => { });
357
+ }
164
358
  }
165
359
  function createImapFlowClient(config) {
166
- return new ImapFlow({
360
+ const flow = new ImapFlow({
167
361
  host: config.host,
168
362
  port: config.port,
169
363
  secure: config.secure,
170
364
  auth: config.auth,
365
+ ...(config.tls ? { tls: config.tls } : {}),
171
366
  logger: false
172
367
  });
368
+ return flow;
173
369
  }
174
370
  function getMailboxSyncState(lock, client) {
175
371
  const uidNext = normalizeUidNumber(lock.uidNext ?? client.mailbox?.uidNext);
@@ -201,6 +397,77 @@ function buildFetchPlan(startUid, syncOptions, alreadySynced, maxUid) {
201
397
  scannedThroughUid: typeof endUid === "number" && maxUid !== null ? endUid : undefined
202
398
  };
203
399
  }
400
+ function toImapSearchQuery(criteria) {
401
+ const query = {};
402
+ if (criteria.from) {
403
+ query.from = criteria.from;
404
+ }
405
+ if (criteria.to) {
406
+ query.to = criteria.to;
407
+ }
408
+ if (criteria.cc) {
409
+ query.cc = criteria.cc;
410
+ }
411
+ if (criteria.subject) {
412
+ query.subject = criteria.subject;
413
+ }
414
+ if (criteria.since) {
415
+ query.since = new Date(criteria.since);
416
+ }
417
+ if (criteria.before) {
418
+ query.before = new Date(criteria.before);
419
+ }
420
+ if (criteria.unseen !== undefined) {
421
+ query.seen = !criteria.unseen;
422
+ }
423
+ if (criteria.flagged !== undefined) {
424
+ query.flagged = criteria.flagged;
425
+ }
426
+ return query;
427
+ }
428
+ async function collectNumbers(result) {
429
+ if (!result) {
430
+ return [];
431
+ }
432
+ if (Array.isArray(result)) {
433
+ return result;
434
+ }
435
+ if (Symbol.asyncIterator in Object(result) && typeof result[Symbol.asyncIterator] === "function") {
436
+ const collected = [];
437
+ for await (const value of result) {
438
+ collected.push(value);
439
+ }
440
+ return collected;
441
+ }
442
+ return [...result];
443
+ }
444
+ function expandUidSet(spec, cap = 250_000) {
445
+ if (!UID_SET_PATTERN.test(spec)) {
446
+ throw new Error(`Invalid UID set "${spec}". Expected comma-separated UIDs and ranges like "12,15,20-30".`);
447
+ }
448
+ const uids = new Set();
449
+ for (const part of spec.replace(/-/g, ":").split(",")) {
450
+ const [startText, endText] = part.split(":");
451
+ const start = Number(startText);
452
+ const end = endText === undefined ? start : Number(endText);
453
+ for (let uid = start; uid <= end; uid += 1) {
454
+ uids.add(uid);
455
+ if (uids.size > cap) {
456
+ throw new Error(`UID set "${spec}" expands to more than ${cap} messages. Narrow the range.`);
457
+ }
458
+ }
459
+ }
460
+ return uids;
461
+ }
462
+ function makeMatcher(patterns) {
463
+ const regexes = patterns
464
+ .filter(Boolean)
465
+ .map((pattern) => new RegExp(`^${pattern.split("*").map(escapeRegex).join(".*")}$`));
466
+ return (value) => regexes.some((regex) => regex.test(value));
467
+ }
468
+ function escapeRegex(value) {
469
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
470
+ }
204
471
  function normalizeUidNumber(value) {
205
472
  if (typeof value !== "number" || !Number.isFinite(value)) {
206
473
  return null;
@@ -244,7 +511,8 @@ function normalizeInternalDate(value) {
244
511
  if (!value) {
245
512
  return null;
246
513
  }
247
- return value instanceof Date ? value.toISOString() : new Date(value).toISOString();
514
+ const parsed = value instanceof Date ? value : new Date(value);
515
+ return Number.isNaN(parsed.getTime()) ? null : parsed.toISOString();
248
516
  }
249
517
  function hashMailbox(mailbox) {
250
518
  return crypto.createHash("sha256").update(mailbox).digest("hex").slice(0, 16);
package/dist/imap.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"imap.js","sourceRoot":"","sources":["../src/imap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imap.js","sourceRoot":"","sources":["../src/imap.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,19 +1,39 @@
1
1
  #!/usr/bin/env node
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { runCli } from "./accounts-cli.js";
3
4
  import { loadConfig } from "./config.js";
4
5
  import { EmailSyncService } from "./imap.js";
5
6
  import { createEmailMcpServer } from "./server.js";
6
7
  import { EmailStore } from "./store.js";
8
+ const CLI_COMMANDS = new Set(["accounts", "init", "help", "--help", "-h"]);
7
9
  async function main() {
8
- const config = loadConfig();
9
- const store = new EmailStore(config.storage.databasePath);
10
- store.init();
11
- const sync = new EmailSyncService({
12
- imap: config.imap,
13
- rawDir: config.storage.rawDir,
14
- store
10
+ const argv = process.argv.slice(2);
11
+ if (argv.length > 0 && CLI_COMMANDS.has(argv[0])) {
12
+ const code = await runCli(argv);
13
+ process.exitCode = code;
14
+ return;
15
+ }
16
+ const { accounts } = loadConfig();
17
+ const runtimes = accounts.map((config) => {
18
+ const store = new EmailStore(config.storage.databasePath);
19
+ store.init();
20
+ const sync = new EmailSyncService({
21
+ imap: config.imap,
22
+ rawDir: config.storage.rawDir,
23
+ store
24
+ });
25
+ return {
26
+ name: config.account.name,
27
+ email: config.account.email,
28
+ provider: config.account.provider,
29
+ groups: config.account.groups,
30
+ store,
31
+ sync,
32
+ storagePath: config.storage.accountDir,
33
+ rawDir: config.storage.rawDir
34
+ };
15
35
  });
16
- const server = createEmailMcpServer(config, store, sync);
36
+ const server = createEmailMcpServer(runtimes);
17
37
  await server.connect(new StdioServerTransport());
18
38
  }
19
39
  main().catch((error) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,EAAE,CAAC;IACb,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QAC7B,KAAK;KACN,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAE3E,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC;YAChC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,KAAK;SACN,CAAC,CAAC;QACH,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YACzB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;YAC3B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;YACjC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,KAAK;YACL,IAAI;YACJ,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;YACtC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface ProviderPreset {
2
+ id: string;
3
+ label: string;
4
+ imapHost: string;
5
+ imapPort: number;
6
+ imapSecure: boolean;
7
+ domains: string[];
8
+ hints: string[];
9
+ }
10
+ export declare const PROVIDER_PRESETS: ProviderPreset[];
11
+ export declare function findProvider(id: string): ProviderPreset | null;
12
+ export declare function detectProvider(email: string): ProviderPreset | null;