social-mcp 2.2.0 → 2.3.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 +15 -2
- package/dist/lib/config.d.ts +5 -0
- package/dist/lib/config.js +5 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/services/email-service.d.ts +5 -1
- package/dist/services/email-service.js +76 -4
- package/dist/services/email-service.js.map +1 -1
- package/dist/tools/email-tools/send-bulk-email.d.ts +8 -0
- package/dist/tools/email-tools/send-bulk-email.js +17 -1
- package/dist/tools/email-tools/send-bulk-email.js.map +1 -1
- package/dist/tools/email-tools/send-email.d.ts +8 -0
- package/dist/tools/email-tools/send-email.js +17 -1
- package/dist/tools/email-tools/send-email.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ An MCP (Model Context Protocol) server that lets AI assistants post and interact
|
|
|
22
22
|
| YouTube | Get channel info, search videos, get video info, list channel videos, get comments, post comment, update video |
|
|
23
23
|
| Pinterest | Get boards, create board, create pin, get pin, get board pins, delete pin |
|
|
24
24
|
| Medium | Get user profile, publish article (Markdown, up to 5 tags, public/draft/unlisted) |
|
|
25
|
-
| Email | Send email, send bulk email (drivers: SMTP, SendGrid, Mailgun)
|
|
25
|
+
| Email | Send email, send bulk email (drivers: SMTP, SendGrid, Mailgun, Amazon SES) |
|
|
26
26
|
| Dev.to | Create article, get my articles, get article by ID, update article |
|
|
27
27
|
| Hashnode | Create post, get posts, get publication info |
|
|
28
28
|
| Beehiiv | Create newsletter post, get posts, get subscribers |
|
|
@@ -91,6 +91,9 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
91
91
|
"MAIL_USERNAME": "you@gmail.com",
|
|
92
92
|
"MAIL_PASSWORD": "your_password",
|
|
93
93
|
"MAIL_ENCRYPTION": "tls",
|
|
94
|
+
"SES_ACCESS_KEY_ID": "your_access_key_id",
|
|
95
|
+
"SES_SECRET_ACCESS_KEY": "your_secret_access_key",
|
|
96
|
+
"SES_REGION": "us-east-1",
|
|
94
97
|
"DEVTO_API_KEY": "your_api_key",
|
|
95
98
|
"HASHNODE_ACCESS_TOKEN": "your_token",
|
|
96
99
|
"HASHNODE_PUBLICATION_ID": "your_publication_id",
|
|
@@ -284,7 +287,7 @@ Copy `example.env` to `.env` and fill in the credentials for the platforms you w
|
|
|
284
287
|
|
|
285
288
|
Email uses a Laravel-style driver system. **Env vars are optional** — credentials can also be passed inline per tool call (see [Per-org / Multi-account Usage](#per-org--multi-account-usage)).
|
|
286
289
|
|
|
287
|
-
Set `MAIL_MAILER` to select your provider and only configure the variables for the driver you choose.
|
|
290
|
+
Set `MAIL_MAILER` to select your provider (`smtp`, `sendgrid`, `mailgun`, or `ses`) and only configure the variables for the driver you choose.
|
|
288
291
|
|
|
289
292
|
| Variable | Description |
|
|
290
293
|
| -------------------- | ---------------------------------------------------------------------- |
|
|
@@ -317,6 +320,16 @@ Set `MAIL_MAILER` to select your provider and only configure the variables for t
|
|
|
317
320
|
| `MAILGUN_API_KEY` | API key from [Mailgun account settings](https://app.mailgun.com/app/account/security/api_keys) |
|
|
318
321
|
| `MAILGUN_DOMAIN` | Your Mailgun sending domain (e.g. `mg.yourdomain.com`) |
|
|
319
322
|
|
|
323
|
+
**Amazon SES** (`MAIL_MAILER=ses`)
|
|
324
|
+
|
|
325
|
+
| Variable | Description |
|
|
326
|
+
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
327
|
+
| `SES_ACCESS_KEY_ID` | AWS IAM Access Key ID — the IAM user must have `ses:SendEmail` permission |
|
|
328
|
+
| `SES_SECRET_ACCESS_KEY`| AWS IAM Secret Access Key |
|
|
329
|
+
| `SES_REGION` | AWS region where your SES sending identity is verified (default: `us-east-1`) |
|
|
330
|
+
|
|
331
|
+
> **Note:** The sender address (`MAIL_FROM_ADDRESS`) must be a verified identity in your SES account. Sending uses the SES v2 REST API with AWS Signature V4 — no AWS SDK required.
|
|
332
|
+
|
|
320
333
|
## Available Tools
|
|
321
334
|
|
|
322
335
|
### Telegram
|
package/dist/lib/config.d.ts
CHANGED
package/dist/lib/config.js
CHANGED
|
@@ -107,6 +107,11 @@ export const config = {
|
|
|
107
107
|
apiKey: process.env.MAILGUN_API_KEY || "",
|
|
108
108
|
domain: process.env.MAILGUN_DOMAIN || "",
|
|
109
109
|
},
|
|
110
|
+
ses: {
|
|
111
|
+
accessKeyId: process.env.SES_ACCESS_KEY_ID || "",
|
|
112
|
+
secretAccessKey: process.env.SES_SECRET_ACCESS_KEY || "",
|
|
113
|
+
region: process.env.SES_REGION || "us-east-1",
|
|
114
|
+
},
|
|
110
115
|
},
|
|
111
116
|
};
|
|
112
117
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface EmailCredentials {
|
|
2
|
-
mailer: "smtp" | "sendgrid" | "mailgun";
|
|
2
|
+
mailer: "smtp" | "sendgrid" | "mailgun" | "ses";
|
|
3
3
|
fromAddress: string;
|
|
4
4
|
fromName?: string;
|
|
5
5
|
smtpHost?: string;
|
|
@@ -10,6 +10,9 @@ export interface EmailCredentials {
|
|
|
10
10
|
sendgridApiKey?: string;
|
|
11
11
|
mailgunApiKey?: string;
|
|
12
12
|
mailgunDomain?: string;
|
|
13
|
+
sesAccessKeyId?: string;
|
|
14
|
+
sesSecretAccessKey?: string;
|
|
15
|
+
sesRegion?: string;
|
|
13
16
|
}
|
|
14
17
|
export declare class EmailService {
|
|
15
18
|
private creds;
|
|
@@ -22,5 +25,6 @@ export declare class EmailService {
|
|
|
22
25
|
private sendViaSMTP;
|
|
23
26
|
private sendViaSendGrid;
|
|
24
27
|
private sendViaMailgun;
|
|
28
|
+
private sendViaSES;
|
|
25
29
|
}
|
|
26
30
|
export declare function getEmailService(): EmailService;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import nodemailer from "nodemailer";
|
|
2
|
+
import { createHash, createHmac } from "crypto";
|
|
2
3
|
import { config } from "../lib/config.js";
|
|
3
4
|
import { CredentialsError } from "../lib/errors.js";
|
|
4
5
|
function credentialsFromConfig() {
|
|
5
|
-
const { mailer, fromAddress, fromName, smtp, sendgrid, mailgun } = config.email;
|
|
6
|
+
const { mailer, fromAddress, fromName, smtp, sendgrid, mailgun, ses } = config.email;
|
|
6
7
|
return {
|
|
7
8
|
mailer: mailer,
|
|
8
9
|
fromAddress,
|
|
@@ -15,8 +16,24 @@ function credentialsFromConfig() {
|
|
|
15
16
|
sendgridApiKey: sendgrid.apiKey || undefined,
|
|
16
17
|
mailgunApiKey: mailgun.apiKey || undefined,
|
|
17
18
|
mailgunDomain: mailgun.domain || undefined,
|
|
19
|
+
sesAccessKeyId: ses.accessKeyId || undefined,
|
|
20
|
+
sesSecretAccessKey: ses.secretAccessKey || undefined,
|
|
21
|
+
sesRegion: ses.region || undefined,
|
|
18
22
|
};
|
|
19
23
|
}
|
|
24
|
+
// ── AWS Sig V4 helpers ────────────────────────────────────────────────────────
|
|
25
|
+
function sha256Hex(data) {
|
|
26
|
+
return createHash("sha256").update(data, "utf8").digest("hex");
|
|
27
|
+
}
|
|
28
|
+
function hmacSha256(key, data) {
|
|
29
|
+
return createHmac("sha256", key).update(data, "utf8").digest();
|
|
30
|
+
}
|
|
31
|
+
function sesSigningKey(secretKey, dateStamp, region) {
|
|
32
|
+
const kDate = hmacSha256(`AWS4${secretKey}`, dateStamp);
|
|
33
|
+
const kRegion = hmacSha256(kDate, region);
|
|
34
|
+
const kService = hmacSha256(kRegion, "ses");
|
|
35
|
+
return hmacSha256(kService, "aws4_request");
|
|
36
|
+
}
|
|
20
37
|
export class EmailService {
|
|
21
38
|
creds;
|
|
22
39
|
constructor(credentials) {
|
|
@@ -24,7 +41,7 @@ export class EmailService {
|
|
|
24
41
|
this.validateCredentials();
|
|
25
42
|
}
|
|
26
43
|
validateCredentials() {
|
|
27
|
-
const { mailer, fromAddress, smtpHost, smtpUsername, smtpPassword, sendgridApiKey, mailgunApiKey, mailgunDomain, } = this.creds;
|
|
44
|
+
const { mailer, fromAddress, smtpHost, smtpUsername, smtpPassword, sendgridApiKey, mailgunApiKey, mailgunDomain, sesAccessKeyId, sesSecretAccessKey, } = this.creds;
|
|
28
45
|
if (!fromAddress) {
|
|
29
46
|
throw new CredentialsError("Email", ["MAIL_FROM_ADDRESS"]);
|
|
30
47
|
}
|
|
@@ -50,8 +67,16 @@ export class EmailService {
|
|
|
50
67
|
]);
|
|
51
68
|
}
|
|
52
69
|
}
|
|
70
|
+
else if (mailer === "ses") {
|
|
71
|
+
if (!sesAccessKeyId || !sesSecretAccessKey) {
|
|
72
|
+
throw new CredentialsError("Email (Amazon SES)", [
|
|
73
|
+
"SES_ACCESS_KEY_ID",
|
|
74
|
+
"SES_SECRET_ACCESS_KEY",
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
53
78
|
else {
|
|
54
|
-
throw new Error(`Unsupported mailer: "${mailer}". Supported: smtp, sendgrid, mailgun`);
|
|
79
|
+
throw new Error(`Unsupported mailer: "${mailer}". Supported: smtp, sendgrid, mailgun, ses`);
|
|
55
80
|
}
|
|
56
81
|
}
|
|
57
82
|
fromHeader() {
|
|
@@ -68,7 +93,7 @@ export class EmailService {
|
|
|
68
93
|
auth: { user: smtpUsername, pass: smtpPassword },
|
|
69
94
|
});
|
|
70
95
|
}
|
|
71
|
-
// Verifies the SMTP connection. No-op for SendGrid/Mailgun (no free verify endpoint).
|
|
96
|
+
// Verifies the SMTP connection. No-op for SendGrid/Mailgun/SES (no free verify endpoint).
|
|
72
97
|
async verify() {
|
|
73
98
|
if (this.creds.mailer === "smtp") {
|
|
74
99
|
const transporter = this.createSMTPTransporter();
|
|
@@ -83,6 +108,8 @@ export class EmailService {
|
|
|
83
108
|
return this.sendViaSendGrid(to, subject, text, html);
|
|
84
109
|
case "mailgun":
|
|
85
110
|
return this.sendViaMailgun(to, subject, text, html);
|
|
111
|
+
case "ses":
|
|
112
|
+
return this.sendViaSES(to, subject, text, html);
|
|
86
113
|
}
|
|
87
114
|
}
|
|
88
115
|
async sendViaSMTP(to, subject, text, html) {
|
|
@@ -145,6 +172,51 @@ export class EmailService {
|
|
|
145
172
|
throw new Error(`Mailgun error (${response.status}): ${error}`);
|
|
146
173
|
}
|
|
147
174
|
}
|
|
175
|
+
async sendViaSES(to, subject, text, html) {
|
|
176
|
+
const { sesAccessKeyId, sesSecretAccessKey = "", sesRegion = "us-east-1", fromAddress, fromName } = this.creds;
|
|
177
|
+
const region = sesRegion;
|
|
178
|
+
const host = `email.${region}.amazonaws.com`;
|
|
179
|
+
const path = "/v2/email/outbound-emails";
|
|
180
|
+
const toAddresses = Array.isArray(to) ? to : [to];
|
|
181
|
+
const body = JSON.stringify({
|
|
182
|
+
FromEmailAddress: fromName ? `"${fromName}" <${fromAddress}>` : fromAddress,
|
|
183
|
+
Destination: { ToAddresses: toAddresses },
|
|
184
|
+
Content: {
|
|
185
|
+
Simple: {
|
|
186
|
+
Subject: { Data: subject, Charset: "UTF-8" },
|
|
187
|
+
Body: {
|
|
188
|
+
Text: { Data: text, Charset: "UTF-8" },
|
|
189
|
+
...(html ? { Html: { Data: html, Charset: "UTF-8" } } : {}),
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
const now = new Date();
|
|
195
|
+
const amzDate = now.toISOString().replace(/[:-]/g, "").replace(/\.\d{3}/, "");
|
|
196
|
+
const dateStamp = amzDate.slice(0, 8);
|
|
197
|
+
const bodyHash = sha256Hex(body);
|
|
198
|
+
const canonicalHeaders = `content-type:application/json\nhost:${host}\nx-amz-date:${amzDate}\n`;
|
|
199
|
+
const signedHeaders = "content-type;host;x-amz-date";
|
|
200
|
+
const canonicalRequest = ["POST", path, "", canonicalHeaders, signedHeaders, bodyHash].join("\n");
|
|
201
|
+
const credentialScope = `${dateStamp}/${region}/ses/aws4_request`;
|
|
202
|
+
const stringToSign = ["AWS4-HMAC-SHA256", amzDate, credentialScope, sha256Hex(canonicalRequest)].join("\n");
|
|
203
|
+
const signingKey = sesSigningKey(sesSecretAccessKey, dateStamp, region);
|
|
204
|
+
const signature = createHmac("sha256", signingKey).update(stringToSign, "utf8").digest("hex");
|
|
205
|
+
const authorization = `AWS4-HMAC-SHA256 Credential=${sesAccessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`;
|
|
206
|
+
const response = await fetch(`https://${host}${path}`, {
|
|
207
|
+
method: "POST",
|
|
208
|
+
headers: {
|
|
209
|
+
"Content-Type": "application/json",
|
|
210
|
+
"X-Amz-Date": amzDate,
|
|
211
|
+
Authorization: authorization,
|
|
212
|
+
},
|
|
213
|
+
body,
|
|
214
|
+
});
|
|
215
|
+
if (!response.ok) {
|
|
216
|
+
const error = await response.text();
|
|
217
|
+
throw new Error(`SES error (${response.status}): ${error}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
148
220
|
}
|
|
149
221
|
// Singleton for the env-var-based default configuration.
|
|
150
222
|
// When calling tools with per-org credentials, pass an EmailCredentials
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-service.js","sourceRoot":"","sources":["../../src/services/email-service.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-service.js","sourceRoot":"","sources":["../../src/services/email-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ declare const sendBulkEmailParams: z.ZodObject<{
|
|
|
4
4
|
smtp: "smtp";
|
|
5
5
|
sendgrid: "sendgrid";
|
|
6
6
|
mailgun: "mailgun";
|
|
7
|
+
ses: "ses";
|
|
7
8
|
}>>;
|
|
8
9
|
fromAddress: z.ZodOptional<z.ZodString>;
|
|
9
10
|
fromName: z.ZodOptional<z.ZodString>;
|
|
@@ -19,6 +20,9 @@ declare const sendBulkEmailParams: z.ZodObject<{
|
|
|
19
20
|
sendgridApiKey: z.ZodOptional<z.ZodString>;
|
|
20
21
|
mailgunApiKey: z.ZodOptional<z.ZodString>;
|
|
21
22
|
mailgunDomain: z.ZodOptional<z.ZodString>;
|
|
23
|
+
sesAccessKeyId: z.ZodOptional<z.ZodString>;
|
|
24
|
+
sesSecretAccessKey: z.ZodOptional<z.ZodString>;
|
|
25
|
+
sesRegion: z.ZodOptional<z.ZodString>;
|
|
22
26
|
recipients: z.ZodArray<z.ZodString>;
|
|
23
27
|
subject: z.ZodString;
|
|
24
28
|
text: z.ZodString;
|
|
@@ -33,6 +37,7 @@ export declare const sendBulkEmailTool: {
|
|
|
33
37
|
smtp: "smtp";
|
|
34
38
|
sendgrid: "sendgrid";
|
|
35
39
|
mailgun: "mailgun";
|
|
40
|
+
ses: "ses";
|
|
36
41
|
}>>;
|
|
37
42
|
fromAddress: z.ZodOptional<z.ZodString>;
|
|
38
43
|
fromName: z.ZodOptional<z.ZodString>;
|
|
@@ -48,6 +53,9 @@ export declare const sendBulkEmailTool: {
|
|
|
48
53
|
sendgridApiKey: z.ZodOptional<z.ZodString>;
|
|
49
54
|
mailgunApiKey: z.ZodOptional<z.ZodString>;
|
|
50
55
|
mailgunDomain: z.ZodOptional<z.ZodString>;
|
|
56
|
+
sesAccessKeyId: z.ZodOptional<z.ZodString>;
|
|
57
|
+
sesSecretAccessKey: z.ZodOptional<z.ZodString>;
|
|
58
|
+
sesRegion: z.ZodOptional<z.ZodString>;
|
|
51
59
|
recipients: z.ZodArray<z.ZodString>;
|
|
52
60
|
subject: z.ZodString;
|
|
53
61
|
text: z.ZodString;
|
|
@@ -4,7 +4,7 @@ import { EmailService, getEmailService, } from "../../services/email-service.js"
|
|
|
4
4
|
const sendBulkEmailParams = z.object({
|
|
5
5
|
// ── Inline credentials (all optional — omit to use env var config) ──────
|
|
6
6
|
mailer: z
|
|
7
|
-
.enum(["smtp", "sendgrid", "mailgun"])
|
|
7
|
+
.enum(["smtp", "sendgrid", "mailgun", "ses"])
|
|
8
8
|
.optional()
|
|
9
9
|
.describe("Mail driver. Required when not configured via env vars (MAIL_MAILER)."),
|
|
10
10
|
fromAddress: z
|
|
@@ -48,6 +48,19 @@ const sendBulkEmailParams = z.object({
|
|
|
48
48
|
.string()
|
|
49
49
|
.optional()
|
|
50
50
|
.describe("Mailgun sending domain. Required when mailer=mailgun."),
|
|
51
|
+
// Amazon SES
|
|
52
|
+
sesAccessKeyId: z
|
|
53
|
+
.string()
|
|
54
|
+
.optional()
|
|
55
|
+
.describe("AWS IAM Access Key ID. Required when mailer=ses."),
|
|
56
|
+
sesSecretAccessKey: z
|
|
57
|
+
.string()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("AWS IAM Secret Access Key. Required when mailer=ses."),
|
|
60
|
+
sesRegion: z
|
|
61
|
+
.string()
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("AWS region for SES (default us-east-1). Used when mailer=ses."),
|
|
51
64
|
// ── Message ──────────────────────────────────────────────────────────────
|
|
52
65
|
recipients: z
|
|
53
66
|
.array(z.string().email())
|
|
@@ -79,6 +92,9 @@ export const sendBulkEmailTool = {
|
|
|
79
92
|
sendgridApiKey: params.sendgridApiKey,
|
|
80
93
|
mailgunApiKey: params.mailgunApiKey,
|
|
81
94
|
mailgunDomain: params.mailgunDomain,
|
|
95
|
+
sesAccessKeyId: params.sesAccessKeyId,
|
|
96
|
+
sesSecretAccessKey: params.sesSecretAccessKey,
|
|
97
|
+
sesRegion: params.sesRegion,
|
|
82
98
|
})
|
|
83
99
|
: getEmailService();
|
|
84
100
|
await service.send(params.recipients, params.subject, params.text, params.html);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-bulk-email.js","sourceRoot":"","sources":["../../../src/tools/email-tools/send-bulk-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACN,YAAY,EACZ,eAAe,GACf,MAAM,iCAAiC,CAAC;AAEzC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,2EAA2E;IAC3E,MAAM,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"send-bulk-email.js","sourceRoot":"","sources":["../../../src/tools/email-tools/send-bulk-email.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ declare const sendEmailParams: z.ZodObject<{
|
|
|
4
4
|
smtp: "smtp";
|
|
5
5
|
sendgrid: "sendgrid";
|
|
6
6
|
mailgun: "mailgun";
|
|
7
|
+
ses: "ses";
|
|
7
8
|
}>>;
|
|
8
9
|
fromAddress: z.ZodOptional<z.ZodString>;
|
|
9
10
|
fromName: z.ZodOptional<z.ZodString>;
|
|
@@ -19,6 +20,9 @@ declare const sendEmailParams: z.ZodObject<{
|
|
|
19
20
|
sendgridApiKey: z.ZodOptional<z.ZodString>;
|
|
20
21
|
mailgunApiKey: z.ZodOptional<z.ZodString>;
|
|
21
22
|
mailgunDomain: z.ZodOptional<z.ZodString>;
|
|
23
|
+
sesAccessKeyId: z.ZodOptional<z.ZodString>;
|
|
24
|
+
sesSecretAccessKey: z.ZodOptional<z.ZodString>;
|
|
25
|
+
sesRegion: z.ZodOptional<z.ZodString>;
|
|
22
26
|
to: z.ZodString;
|
|
23
27
|
subject: z.ZodString;
|
|
24
28
|
text: z.ZodString;
|
|
@@ -33,6 +37,7 @@ export declare const sendEmailTool: {
|
|
|
33
37
|
smtp: "smtp";
|
|
34
38
|
sendgrid: "sendgrid";
|
|
35
39
|
mailgun: "mailgun";
|
|
40
|
+
ses: "ses";
|
|
36
41
|
}>>;
|
|
37
42
|
fromAddress: z.ZodOptional<z.ZodString>;
|
|
38
43
|
fromName: z.ZodOptional<z.ZodString>;
|
|
@@ -48,6 +53,9 @@ export declare const sendEmailTool: {
|
|
|
48
53
|
sendgridApiKey: z.ZodOptional<z.ZodString>;
|
|
49
54
|
mailgunApiKey: z.ZodOptional<z.ZodString>;
|
|
50
55
|
mailgunDomain: z.ZodOptional<z.ZodString>;
|
|
56
|
+
sesAccessKeyId: z.ZodOptional<z.ZodString>;
|
|
57
|
+
sesSecretAccessKey: z.ZodOptional<z.ZodString>;
|
|
58
|
+
sesRegion: z.ZodOptional<z.ZodString>;
|
|
51
59
|
to: z.ZodString;
|
|
52
60
|
subject: z.ZodString;
|
|
53
61
|
text: z.ZodString;
|
|
@@ -4,7 +4,7 @@ import { EmailService, getEmailService, } from "../../services/email-service.js"
|
|
|
4
4
|
const sendEmailParams = z.object({
|
|
5
5
|
// ── Inline credentials (all optional — omit to use env var config) ──────
|
|
6
6
|
mailer: z
|
|
7
|
-
.enum(["smtp", "sendgrid", "mailgun"])
|
|
7
|
+
.enum(["smtp", "sendgrid", "mailgun", "ses"])
|
|
8
8
|
.optional()
|
|
9
9
|
.describe("Mail driver. Required when not configured via env vars (MAIL_MAILER)."),
|
|
10
10
|
fromAddress: z
|
|
@@ -48,6 +48,19 @@ const sendEmailParams = z.object({
|
|
|
48
48
|
.string()
|
|
49
49
|
.optional()
|
|
50
50
|
.describe("Mailgun sending domain. Required when mailer=mailgun."),
|
|
51
|
+
// Amazon SES
|
|
52
|
+
sesAccessKeyId: z
|
|
53
|
+
.string()
|
|
54
|
+
.optional()
|
|
55
|
+
.describe("AWS IAM Access Key ID. Required when mailer=ses."),
|
|
56
|
+
sesSecretAccessKey: z
|
|
57
|
+
.string()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("AWS IAM Secret Access Key. Required when mailer=ses."),
|
|
60
|
+
sesRegion: z
|
|
61
|
+
.string()
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("AWS region for SES (default us-east-1). Used when mailer=ses."),
|
|
51
64
|
// ── Message ──────────────────────────────────────────────────────────────
|
|
52
65
|
to: z.string().email().describe("Recipient email address."),
|
|
53
66
|
subject: z.string().min(1).describe("Email subject line."),
|
|
@@ -76,6 +89,9 @@ export const sendEmailTool = {
|
|
|
76
89
|
sendgridApiKey: params.sendgridApiKey,
|
|
77
90
|
mailgunApiKey: params.mailgunApiKey,
|
|
78
91
|
mailgunDomain: params.mailgunDomain,
|
|
92
|
+
sesAccessKeyId: params.sesAccessKeyId,
|
|
93
|
+
sesSecretAccessKey: params.sesSecretAccessKey,
|
|
94
|
+
sesRegion: params.sesRegion,
|
|
79
95
|
})
|
|
80
96
|
: getEmailService();
|
|
81
97
|
await service.send(params.to, params.subject, params.text, params.html);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../src/tools/email-tools/send-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACN,YAAY,EACZ,eAAe,GACf,MAAM,iCAAiC,CAAC;AAEzC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,2EAA2E;IAC3E,MAAM,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../../src/tools/email-tools/send-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACN,YAAY,EACZ,eAAe,GACf,MAAM,iCAAiC,CAAC;AAEzC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,2EAA2E;IAC3E,MAAM,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;SAC5C,QAAQ,EAAE;SACV,QAAQ,CACR,uEAAuE,CACvE;IACF,WAAW,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,KAAK,EAAE;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,iEAAiE,CAAC;IAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAChE,OAAO;IACP,QAAQ,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC9D,QAAQ,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;IAC7D,YAAY,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC5D,YAAY,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC5D,cAAc,EAAE,CAAC;SACf,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACnE,WAAW;IACX,cAAc,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC9D,UAAU;IACV,aAAa,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC5D,aAAa,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACnE,aAAa;IACb,cAAc,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC9D,kBAAkB,EAAE,CAAC;SACnB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IAClE,SAAS,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;IAE3E,4EAA4E;IAC5E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC3D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACjE,IAAI,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;CAChE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,IAAI,EAAE,YAAY;IAClB,WAAW,EACV,yJAAyJ;IAC1J,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;QAC1C,IAAI,CAAC;YACJ,MAAM,OAAO,GACZ,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW;gBAClC,CAAC,CAAC,IAAI,YAAY,CAAC;oBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;oBAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC3B,CAAC;gBACH,CAAC,CAAC,eAAe,EAAE,CAAC;YAEtB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACxE,OAAO,8BAA8B,MAAM,CAAC,EAAE,GAAG,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC3F,CAAC;IACF,CAAC;CACQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "social-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "MCP server for posting and interacting across social media platforms: Twitter, Instagram, Facebook, WhatsApp, Discord, Telegram, Slack, LinkedIn, Reddit, Threads, TikTok, Pinterest, Medium, and Email (SMTP/SendGrid/Mailgun)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|