@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 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
- if (!input.isTTY || typeof input.setRawMode !== "function") {
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(closePrompts);
9794
+ }).finally(() => {
9795
+ closePrompts();
9796
+ process.exit(0);
9797
+ });
9789
9798
  }
9790
9799
  });
9791
9800