Skip to main content
Glama
DynamicEndpoints

Advanced PocketBase MCP Server

send_custom_email

Send personalized emails programmatically using the Advanced PocketBase MCP Server. Integrate custom email functionality for user notifications, updates, or alerts directly within your database workflows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Primary MCP tool handler function for 'send_custom_email'. Ensures email service is loaded, calls the underlying sendCustomEmail helper, handles errors, and returns formatted MCP response with email log details.
    async ({ to, from, subject, html, text }) => { // Lazy load Email service await this.ensureEmailService(); if (!this.emailService) { throw new Error('Email service not available. Please configure EMAIL_SERVICE or SMTP settings.'); } try { const result = await this.emailService.sendCustomEmail({ to, from, subject, html, text }); return { content: [{ type: 'text', text: JSON.stringify({ success: true, emailLog: { id: result.id, to: result.to, subject: result.subject, status: result.status, sentAt: result.created } }, null, 2) }] }; } catch (error: any) { throw new Error(`Failed to send email: ${error.message}`); } }
  • Core helper function in EmailService that sends the email using nodemailer transporter and creates an email log record in PocketBase database.
    async sendCustomEmail(data: { to: string; from?: string; subject: string; html: string; text?: string; }): Promise<EmailLog> { try { // Send email const info = await this.transporter.sendMail({ from: data.from || process.env.SMTP_USER || process.env.DEFAULT_FROM_EMAIL, to: data.to, subject: data.subject, html: data.html, text: data.text, }); // Log email const emailLog = await this.pb.collection('email_logs').create({ to: data.to, from: data.from || process.env.SMTP_USER || process.env.DEFAULT_FROM_EMAIL, subject: data.subject, status: 'sent', }); return emailLog as unknown as EmailLog; } catch (error: any) { // Log failed email const emailLog = await this.pb.collection('email_logs').create({ to: data.to, from: data.from || process.env.SMTP_USER || process.env.DEFAULT_FROM_EMAIL, subject: data.subject, status: 'failed', error: error.message, }); throw new Error(`Failed to send custom email: ${error.message}`); } }
  • Zod input schema defining the parameters accepted by the send_custom_email tool.
    description: 'Send a custom email with specified content', inputSchema: { to: z.string().email().describe('Recipient email address'), from: z.string().email().optional().describe('Sender email address'), subject: z.string().describe('Email subject'), html: z.string().describe('HTML email body'), text: z.string().optional().describe('Plain text email body') }
  • Registration of the 'send_custom_email' tool on the MCP server, including schema and inline handler function.
    this.server.tool( 'send_custom_email', { description: 'Send a custom email with specified content', inputSchema: { to: z.string().email().describe('Recipient email address'), from: z.string().email().optional().describe('Sender email address'), subject: z.string().describe('Email subject'), html: z.string().describe('HTML email body'), text: z.string().optional().describe('Plain text email body') } }, async ({ to, from, subject, html, text }) => { // Lazy load Email service await this.ensureEmailService(); if (!this.emailService) { throw new Error('Email service not available. Please configure EMAIL_SERVICE or SMTP settings.'); } try { const result = await this.emailService.sendCustomEmail({ to, from, subject, html, text }); return { content: [{ type: 'text', text: JSON.stringify({ success: true, emailLog: { id: result.id, to: result.to, subject: result.subject, status: result.status, sentAt: result.created } }, null, 2) }] }; } catch (error: any) { throw new Error(`Failed to send email: ${error.message}`); } } );
  • Tool schema definition in Cloudflare Worker tools/list response for send_custom_email.
    name: 'send_custom_email', description: 'Send a custom email with specified content', inputSchema: { type: 'object', properties: { to: { type: 'string', format: 'email', description: 'Recipient email address' }, from: { type: 'string', format: 'email', description: 'Sender email address' }, subject: { type: 'string', description: 'Email subject' }, html: { type: 'string', description: 'HTML email body' }, text: { type: 'string', description: 'Plain text email body' } }, required: ['to', 'subject', 'html'] } }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DynamicEndpoints/advanced-pocketbase-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server