@marlinjai/email-mcp 1.4.3 → 1.5.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/README.md +23 -3
- package/dist/index.js +304 -120
- package/dist/index.js.map +3 -3
- package/dist/setup/wizard.js +229 -92
- package/dist/setup/wizard.js.map +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -105,7 +105,7 @@ npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
|
105
105
|
# Optionally enter SMTP host and port for sending
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
## Available Tools (
|
|
108
|
+
## Available Tools (31)
|
|
109
109
|
|
|
110
110
|
### Account Management (4)
|
|
111
111
|
|
|
@@ -116,7 +116,7 @@ npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
|
116
116
|
| `email_remove_account` | Remove an account and its stored credentials |
|
|
117
117
|
| `email_test_account` | Test connection to an account |
|
|
118
118
|
|
|
119
|
-
### Reading & Searching (
|
|
119
|
+
### Reading & Searching (6)
|
|
120
120
|
|
|
121
121
|
| Tool | Description |
|
|
122
122
|
|------|-------------|
|
|
@@ -125,6 +125,7 @@ npx -y -p @marlinjai/email-mcp@latest email-mcp-setup
|
|
|
125
125
|
| `email_get` | Get full email content by ID (headers, body, attachment metadata) |
|
|
126
126
|
| `email_get_thread` | Get an entire email thread/conversation |
|
|
127
127
|
| `email_get_attachment` | Download a specific attachment by ID (returns base64 data) |
|
|
128
|
+
| `email_save_attachment` | Download an attachment directly to disk, returning metadata only — avoids the token cost of round-tripping large files as base64. `outputPath` is relative to a fixed downloads directory (`~/.email-mcp/downloads`, override with `EMAIL_MCP_DOWNLOADS_DIR`) and cannot escape it |
|
|
128
129
|
|
|
129
130
|
### Sending & Drafts (5)
|
|
130
131
|
|
|
@@ -165,7 +166,7 @@ All batch tools accept a `sourceFolder` parameter for IMAP/iCloud and include a
|
|
|
165
166
|
|------|-------------|
|
|
166
167
|
| `email_report_spam` | Report an email as spam/junk, training the provider's own filter — the same signal the "Report Junk" button sends in Gmail/Outlook. This is different from `email_delete`, which removes the message but teaches the filter nothing. **Not** an abuse report to the provider's security team; it only trains this account's filter |
|
|
167
168
|
| `email_batch_report_spam` | Report multiple emails as spam/junk at once |
|
|
168
|
-
| `email_create_block_rule` | Create a standing rule that intercepts future mail matching a pattern (sender domain/address, subject, or arbitrary header content) and either deletes it or
|
|
169
|
+
| `email_create_block_rule` | Create a standing rule that intercepts future mail matching a pattern (sender domain/address, subject, or arbitrary header content) and either deletes it or moves it. Use `headerContains` (e.g. a Reply-To domain) to block a spam template family whose visible "From" domain rotates — matching the rotating domain directly stops working within days. **Not supported on iCloud/generic IMAP** (no standard server-side rule mechanism exists across IMAP servers). On Outlook, `moveToJunk` files straight to the Junk Email folder and requires the `MailboxSettings.ReadWrite` scope. On Gmail, `moveToJunk` skips the inbox (archives) rather than literally filing to Spam — Gmail's filter API rejects the SPAM label on standing rules (only Gmail's own classifier can apply it; `email_report_spam` still can, since that's a direct per-message action, not a filter) — and requires the `gmail.settings.basic` scope. Accounts authenticated before these scopes existed need to re-run the setup wizard once to re-consent |
|
|
169
170
|
| `email_list_block_rules` | List the standing block rules on an account, for auditing or before deleting one |
|
|
170
171
|
| `email_delete_block_rule` | Delete a standing block rule — use to undo a rule that turned out too broad |
|
|
171
172
|
|
|
@@ -217,6 +218,25 @@ pnpm test:watch
|
|
|
217
218
|
pnpm test:integration
|
|
218
219
|
```
|
|
219
220
|
|
|
221
|
+
## Credential Storage
|
|
222
|
+
|
|
223
|
+
Account credentials are encrypted at rest with AES-256-GCM in `~/.email-mcp/credentials.enc`.
|
|
224
|
+
|
|
225
|
+
By default the encryption key is derived from a stable, machine-specific identifier
|
|
226
|
+
(the hardware UUID on macOS, `/etc/machine-id` on Linux, or the `MachineGuid` on
|
|
227
|
+
Windows), falling back to the hostname when none is available.
|
|
228
|
+
|
|
229
|
+
Set the `EMAIL_MCP_KEY` environment variable to supply your own passphrase instead.
|
|
230
|
+
This is recommended when the machine identifier may change (for example in
|
|
231
|
+
containers or CI), or when you want to move `credentials.enc` between machines:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
export EMAIL_MCP_KEY="your-strong-passphrase"
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
When `EMAIL_MCP_KEY` is set, existing credential files are transparently
|
|
238
|
+
re-encrypted with the passphrase the next time they are read.
|
|
239
|
+
|
|
220
240
|
## Support
|
|
221
241
|
|
|
222
242
|
If this project is useful to you, consider supporting its development:
|