send-email
Send an email message to a specified recipient with a custom body up to 200 characters.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| body | Yes |
Implementation Reference
- src/mcpServer.js:25-70 (handler)MCP tool handler for 'send-email'. Takes email (validated with z.string().email()) and body (max 200 chars), sends a POST request to a configured API endpoint with Bearer token auth. Returns success/error content for the MCP protocol.
server.tool("send-email", { email: z.string().email(), body: z.string().max(200) }, async ({ email, body }) => { // 특정 서버로 요청을 보낼 데이터 const token = config.GARAK_API_KEY; // API 키 가져오기 if(!token) { return { content: [{ type: "text", text: "API 키가 없습니다. \`npx hi-garak\` 명령어로 API 키를 생성해주세요." }], error: "API 키가 없습니다." }; } // 설정 파일에서 baseUrl을 가져오거나 기본값 사용 const serverUrl = config.BASE_URL ? `${config.BASE_URL}/api/send` : "https://garak.wwwai.site/api/send"; try { const response = await fetch(serverUrl, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${token}` }, body: JSON.stringify({ email, body }) }); const result = await response.json(); if(!result.error) { return { content: [{ type: "text", text: "이메일을 성공적으로 보냈습니다." }], serverResponse: result }; } else { return { content: [{ type: "text", text: `${result.message} 다시 시도해주세요. Error : ${result.error}` }], error: result.message }; } } catch (error) { console.error(error); return { content: [{ type: "text", text: "이메일 전송 중 오류가 발생했습니다." }], error: error.message }; } } ); - src/cliManager.js:37-70 (handler)CLI handler for 'send-email' command. Called from executeCommand() switch case. Validates inputs, sends POST request to API endpoint, logs result.
async function sendEmail(email, body) { if (!email || !body) { throw new Error(__('missing_email')); } const token = config.GARAK_API_KEY; if (!token) { throw new Error(__('missing_api_key')); } // 서버 URL 설정 const serverUrl = config.BASE_URL ? `${config.BASE_URL}/api/send` : "https://garak.wwwai.site/api/send"; console.log(chalk.cyan(__('email_sending', { email }))); // API 요청 try { const response = await fetch(serverUrl, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${token}` }, body: JSON.stringify({ email, body }) }); const result = await response.json(); console.log(result); console.log(chalk.green(__('email_success'))); return result; } catch (error) { throw new Error(__('email_error', { error: error.message })); } } - src/cliManager.js:16-30 (registration)CLI command registration: the switch case 'send-email' in executeCommand() routes to the sendEmail() handler.
export async function executeCommand(command, args) { switch (command) { case 'send-email': return sendEmail(args[0], args[1]); case 'add': return add(parseFloat(args[0]), parseFloat(args[1])); case 'troubleshoot': return troubleshoot(args[0]); default: throw new Error(__('unknown_command', { command })); } } - src/mcpServer.js:26-26 (schema)Zod schema for send-email tool inputs: email (validated email string) and body (string max 200 chars).
{ email: z.string().email(), body: z.string().max(200) }, - index.js:63-63 (registration)CLI help text listing 'send-email [email] [body] - 이메일 전송' as an available command.
console.log(__(' send-email [email] [body] - 이메일 전송'));