@marlinjai/email-mcp 1.4.1 → 1.4.2
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/README.md +8 -6
- package/dist/index.js +12 -3
- package/dist/index.js.map +2 -2
- package/dist/setup/wizard.js +12 -3
- package/dist/setup/wizard.js.map +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,9 +31,11 @@ npx @marlinjai/email-mcp
|
|
|
31
31
|
1. Run the interactive setup wizard to add your email accounts:
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
npx @marlinjai/email-mcp setup
|
|
34
|
+
npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
> **The `-p`/`--package` flag is required.** This package declares two binaries (`email-mcp` for the MCP server, `email-mcp-setup` for this wizard). Without `-p`, npx runs the bin matching the *package's own name* (`email-mcp`, the server) and silently passes `email-mcp-setup` to it as an ignored argument — the server then sits waiting for MCP protocol input on stdin forever, producing no output at all. It looks exactly like a hang. `-p` tells npx explicitly which package to resolve and which of its binaries to actually run.
|
|
38
|
+
|
|
37
39
|
The wizard will walk you through provider selection and authentication. After each account, it asks if you'd like to add another — so you can set up Gmail, Outlook, and iCloud all in one go.
|
|
38
40
|
|
|
39
41
|
2. Add the server to your MCP configuration (`.mcp.json`):
|
|
@@ -58,7 +60,7 @@ The wizard will walk you through provider selection and authentication. After ea
|
|
|
58
60
|
No configuration needed — the setup wizard handles everything using built-in OAuth credentials (PKCE):
|
|
59
61
|
|
|
60
62
|
```bash
|
|
61
|
-
npx @marlinjai/email-mcp setup
|
|
63
|
+
npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
62
64
|
# Select "Gmail" when prompted
|
|
63
65
|
# A browser window opens for Google authorization
|
|
64
66
|
# Grant the requested permissions and return to the terminal
|
|
@@ -71,13 +73,13 @@ npx @marlinjai/email-mcp setup
|
|
|
71
73
|
No configuration needed — the setup wizard handles everything using built-in OAuth credentials (PKCE):
|
|
72
74
|
|
|
73
75
|
```bash
|
|
74
|
-
npx @marlinjai/email-mcp setup
|
|
76
|
+
npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
75
77
|
# Select "Outlook" when prompted
|
|
76
78
|
# A browser window opens for Microsoft authorization
|
|
77
79
|
# Sign in and grant the requested permissions
|
|
78
80
|
```
|
|
79
81
|
|
|
80
|
-
> **Note:** If you prefer to use your own OAuth app, register one in the [Azure Portal](https://portal.azure.com/) with `Mail.ReadWrite`, `Mail.Send`, and `offline_access` permissions.
|
|
82
|
+
> **Note:** If you prefer to use your own OAuth app, register one in the [Azure Portal](https://portal.azure.com/) with `Mail.ReadWrite`, `Mail.Send`, `MailboxSettings.ReadWrite` (needed for `email_create_block_rule`), and `offline_access` permissions.
|
|
81
83
|
|
|
82
84
|
### iCloud
|
|
83
85
|
|
|
@@ -86,7 +88,7 @@ npx @marlinjai/email-mcp setup
|
|
|
86
88
|
3. Run the setup wizard:
|
|
87
89
|
|
|
88
90
|
```bash
|
|
89
|
-
npx @marlinjai/email-mcp setup
|
|
91
|
+
npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
90
92
|
# Select "iCloud" when prompted
|
|
91
93
|
# Enter your iCloud email address
|
|
92
94
|
# Enter the app-specific password you generated
|
|
@@ -97,7 +99,7 @@ npx @marlinjai/email-mcp setup
|
|
|
97
99
|
Run the setup wizard with your IMAP/SMTP server details:
|
|
98
100
|
|
|
99
101
|
```bash
|
|
100
|
-
npx @marlinjai/email-mcp setup
|
|
102
|
+
npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
101
103
|
# Select "Other IMAP" when prompted
|
|
102
104
|
# Enter your IMAP host, port, and credentials
|
|
103
105
|
# Optionally enter SMTP host and port for sending
|
package/dist/index.js
CHANGED
|
@@ -9338,13 +9338,19 @@ async function askChoice(message, choices) {
|
|
|
9338
9338
|
function askPassword(message) {
|
|
9339
9339
|
return new Promise((resolve) => {
|
|
9340
9340
|
output.write(`${message} `);
|
|
9341
|
-
|
|
9341
|
+
closePrompts();
|
|
9342
|
+
let rawModeOk = true;
|
|
9343
|
+
try {
|
|
9344
|
+
input.setRawMode(true);
|
|
9345
|
+
} catch {
|
|
9346
|
+
rawModeOk = false;
|
|
9347
|
+
}
|
|
9348
|
+
if (!rawModeOk) {
|
|
9342
9349
|
const rl = getInterface();
|
|
9343
9350
|
rl.question("").then(resolve);
|
|
9344
9351
|
return;
|
|
9345
9352
|
}
|
|
9346
9353
|
let value = "";
|
|
9347
|
-
input.setRawMode(true);
|
|
9348
9354
|
input.resume();
|
|
9349
9355
|
input.setEncoding("utf8");
|
|
9350
9356
|
const cleanup = () => {
|
|
@@ -9785,7 +9791,10 @@ var init_wizard = __esm({
|
|
|
9785
9791
|
console.error(`
|
|
9786
9792
|
Setup failed: ${err.message}`);
|
|
9787
9793
|
process.exit(1);
|
|
9788
|
-
}).finally(
|
|
9794
|
+
}).finally(() => {
|
|
9795
|
+
closePrompts();
|
|
9796
|
+
process.exit(0);
|
|
9797
|
+
});
|
|
9789
9798
|
}
|
|
9790
9799
|
});
|
|
9791
9800
|
|