Mailgun
ทางการโต้ตอบกับ Mailgun API
คุณทำอะไรได้บ้างด้วย Mailgun MCP?
- ส่งอีเมล — ขอให้ผู้ช่วยส่งอีเมลจากโดเมนและที่อยู่ผู้ส่งที่เลือก
- ตรวจสอบที่อยู่อีเมล — ตรวจสอบรูปแบบและความสามารถในการส่งถึงของที่อยู่อีเมลด้วย
validateก่อนส่ง - ตรวจสอบตำแหน่งที่อีเมลไปถึงในกล่องจดหมาย — ดึงผลการทดสอบด้วย seed ด้วย
optimizeและสรุปว่าข้อความไปอยู่ที่ใด แยกตามผู้ให้บริการ - ดูตัวอย่างการแสดงผล — ดึงผลการแสดงตัวอย่างอีเมลด้วย
inspectเพื่อดูว่าข้อความแสดงผลอย่างไรในโปรแกรมรับส่งอีเมลต่าง ๆ - ตรวจสอบปัญหาการส่งอีเมล — ตรวจสอบสถิติการจัดประเภทอีเมลตีกลับ การยกเลิกรับอีเมล และข้อร้องเรียนของโดเมน
- จัดการเทมเพลตและรายชื่อ — สร้างหรืออัปเดตเทมเพลตอีเมลและรายชื่อผู้รับจดหมายพร้อมสมาชิก
เอกสาร
Mailgun MCP Server
ภาพรวม
เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ Mailgun ที่มอบอินเทอร์เฟซที่ใช้งานได้จริงและออกแบบตามเวิร์กโฟลว์ให้แก่เอเจนต์ AI เพื่อส่งอีเมล ตรวจสอบปัญหาการส่งถึงผู้รับ และจัดการการดำเนินงานของบัญชี
[!NOTE] เซิร์ฟเวอร์ MCP นี้ทำงานในเครื่องของคุณและสื่อสารผ่าน stdio ขณะนี้ Mailgun ยังไม่มีเซิร์ฟเวอร์เวอร์ชันโฮสต์ให้บริการ
ความสามารถ
- การส่งข้อความ — ส่งอีเมล เรียกดูข้อความที่จัดเก็บไว้ และส่งข้อความซ้ำ
- โดเมน — ดูรายละเอียดโดเมน ตรวจสอบการกำหนดค่า DNS และจัดการการตั้งค่าการติดตาม (การคลิก การเปิด การยกเลิกการสมัคร)
- เว็บฮุก — แสดงรายการ สร้าง และอัปเดตเว็บฮุกเหตุการณ์
- เส้นทาง — ดูและอัปเดตกฎการกำหนดเส้นทางอีเมลขาเข้า
- รายชื่อผู้รับจดหมาย — สร้าง ดู และอัปเดตรายชื่อผู้รับจดหมายและสมาชิก
- เทมเพลต — สร้าง ดู และอัปเดตเทมเพลตอีเมลพร้อมการกำหนดเวอร์ชัน
- การวิเคราะห์ — สอบถามเมตริกการส่ง เมตริกการใช้งาน และบันทึก
- สถิติ — ดูสถิติรวมตามโดเมน แท็ก ผู้ให้บริการ อุปกรณ์ และประเทศ
- รายการระงับ — ดูการตีกลับ การยกเลิกการสมัคร การร้องเรียน และรายการอนุญาต
- IP และพูล IP — ดูการกำหนด IP และการกำหนดค่าพูล IP เฉพาะ
- การจัดประเภทการตีกลับ — วิเคราะห์ประเภทการตีกลับและปัญหาการส่ง
- การตรวจสอบความถูกต้อง — ตรวจสอบความสามารถในการส่งถึงและไวยากรณ์ของที่อยู่อีเมลก่อนส่ง (
validate) - Optimize (การจัดวางในกล่องจดหมาย) — เรียกดูผลการทดสอบการจัดวางในกล่องจดหมาย / seed เพื่อประเมินความสามารถในการส่งถึง (
optimize) - Inspect (ตัวอย่างอีเมล) — เรียกดูผลการทดสอบการแสดงผลและตัวอย่างอีเมลในไคลเอ็นต์ต่าง ๆ (
inspect) - ขีดจำกัดบัญชี — ดูขีดจำกัดการส่งรายเดือนแบบกำหนดเอง
ป้ายกำกับด้านบน (validate, optimize, inspect) คือแท็กผลิตภัณฑ์ที่ใช้โดย การกรองแท็ก ความสามารถอื่นทั้งหมดจะลงทะเบียนภายใต้แท็ก send ซึ่งแบ่งออกเป็น send.<group> ชุดเครื่องมือ
[!NOTE] เครื่องมือจำกัดอยู่ที่การอ่านและอัปเดตเท่านั้น — ไม่มีการเปิดเผยการดำเนินการลบ ซึ่งช่วยจำกัดขอบเขตผลกระทบจากการดำเนินการที่ไม่ตั้งใจ ดู ข้อควรพิจารณาด้านความปลอดภัย
วิธีการทำงาน
เซิร์ฟเวอร์ขับเคลื่อนด้วย OpenAPI เมื่อเริ่มทำงาน เซิร์ฟเวอร์จะแยกวิเคราะห์ข้อกำหนด OpenAPI ของ Mailgun ที่รวมมาให้ และลงทะเบียนปลายทางที่คัดเลือกไว้เป็นเครื่องมือ MCP โดยสร้างสคีมาอินพุตของแต่ละเครื่องมือ (ผ่าน Zod) จากข้อกำหนด เครื่องมือทุกตัวจะมีคำอธิบายประกอบระบุแท็กผลิตภัณฑ์ของ Mailgun (send, validate, optimize หรือ inspect) ชุดเครื่องมือที่สังกัด และระบุว่าเป็นเครื่องมืออ่านข้อมูลเท่านั้นหรือไม่
โดยค่าเริ่มต้น เซิร์ฟเวอร์จะโหลดเครื่องมือทั้งหมดเมื่อเริ่มทำงาน เมื่อใช้ --tags dynamic เซิร์ฟเวอร์จะโหลด ชุดเครื่องมือหลัก ขนาดเล็ก พร้อมเครื่องมือสามตัวที่โมเดลใช้โหลดชุดเครื่องมือเพิ่มเติมตามต้องการ ซึ่งช่วยลดขนาดคำจำกัดความเครื่องมือที่ส่งให้โมเดล ส่วนการกรองแท็ก จะโหลดชุดเครื่องมือที่กำหนดไว้ตายตัวเมื่อเริ่มทำงาน เพื่อให้เวิร์กโฟลว์แต่ละรายการเปิดเผยเฉพาะผลิตภัณฑ์ที่ต้องการได้
ข้อกำหนดเบื้องต้น
- Node.js (v20.12 หรือสูงกว่า)
- บัญชี Mailgun และ API key
การติดตั้ง
เซิร์ฟเวอร์เผยแพร่บน npm ในชื่อ @mailgun/mcp-server และทำงานผ่าน stdio ไคลเอ็นต์ส่วนใหญ่สามารถเปิดใช้งานได้ตามต้องการด้วย npx จึงไม่จำเป็นต้องติดตั้งแบบ global ในแต่ละตัวอย่างด้านล่าง ให้แทนที่ YOUR-mailgun-api-key ด้วยคีย์จากการตั้งค่าความปลอดภัย API ของ Mailgun
[!TIP] หากบัญชีของคุณโฮสต์อยู่ในภูมิภาค EU ของ Mailgun ให้เพิ่ม
"MAILGUN_API_REGION": "eu"ลงในบล็อกenv(หรือใช้-e MAILGUN_API_REGION=euบน CLI) ค่าเริ่มต้นคือus
Claude Code
claude mcp add mailgun -e MAILGUN_API_KEY=YOUR-mailgun-api-key -- npx -y @mailgun/mcp-server
จากนั้นเรียกใช้ /mcp ใน Claude Code เพื่อยืนยันว่าเชื่อมต่อเซิร์ฟเวอร์ mailgun แล้ว
Claude Desktop
เปิด Settings → Developer → Edit Config หรือแก้ไขไฟล์โดยตรง:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mailgun": {
"command": "npx",
"args": ["-y", "@mailgun/mcp-server"],
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key",
"MAILGUN_API_REGION": "us"
}
}
}
}
Cursor
เปิดแผงคำสั่ง แล้วเลือก Cursor Settings → MCP → Add new global MCP server จากนั้นเพิ่ม:
{
"mcpServers": {
"mailgun": {
"command": "npx",
"args": ["-y", "@mailgun/mcp-server"],
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key"
}
}
}
}
Codex
codex mcp add mailgun \
--env MAILGUN_API_KEY=YOUR-mailgun-api-key \
-- npx -y @mailgun/mcp-server
VS Code (GitHub Copilot)
เพิ่มรายการต่อไปนี้ลงใน settings.json:
{
"mcp": {
"servers": {
"mailgun": {
"command": "npx",
"args": ["-y", "@mailgun/mcp-server"],
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key"
}
}
}
}
}
Windsurf
{
"mcpServers": {
"mailgun": {
"command": "npx",
"args": ["-y", "@mailgun/mcp-server"],
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key"
}
}
}
}
Gemini CLI
เพิ่มลงใน ~/.gemini/settings.json:
{
"mcpServers": {
"mailgun": {
"command": "npx",
"args": ["-y", "@mailgun/mcp-server"],
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key"
}
}
}
}
การกำหนดค่า
ตัวแปรสภาพแวดล้อม
| ตัวแปร | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
MAILGUN_API_KEY | ใช่ | — | API key ของ Mailgun |
MAILGUN_API_REGION | ไม่ | us | ภูมิภาค API: us หรือ eu |
MAILGUN_API_HOSTNAME | ไม่ | (อนุมานจากภูมิภาค) | ใช้แทนชื่อโฮสต์ API (เช่น api.eu.mailgun.net) มีลำดับความสำคัญเหนือกว่าภูมิภาค |
MAILGUN_MCP_TAGS | ไม่ | (ทั้งหมด) | แท็กหรือชุดเครื่องมือที่ต้องการโหลด คั่นด้วยจุลภาค หรือ dynamic เพื่อใช้เครื่องมือหลักและโหลดเครื่องมือเพิ่มเติมตามต้องการ เทียบเท่ากับ --tags โดยแฟล็ก CLI มีลำดับความสำคัญสูงกว่า |
ตัวเลือก CLI
ส่งแฟล็กต่อท้ายชื่อแพ็กเกจใน args ของไคลเอ็นต์ (เช่น ["-y", "@mailgun/mcp-server", "--tags", "validate,inspect"])
| แฟล็ก | คำอธิบาย |
|---|---|
--tags <list> | แท็กหรือชุดเครื่องมือที่ต้องการโหลด คั่นด้วยจุลภาค (ค่าเริ่มต้น: ทั้งหมด) ค่าที่ใช้ได้: all, dynamic, core, send, validate, optimize, inspect และชุดเครื่องมือ send.<group> |
--list-tags | แสดงค่า --tags ที่ใช้ได้ทั้งหมดพร้อมคำอธิบาย แล้วออกจากโปรแกรม |
--help, -h | แสดงวิธีใช้แล้วออกจากโปรแกรม |
ชุดเครื่องมือแบบโหลดตามต้องการ
เมื่อใช้ --tags dynamic (หรือ MAILGUN_MCP_TAGS=dynamic) เซิร์ฟเวอร์จะเริ่มทำงานพร้อมเครื่องมือหลักเหล่านี้:
| เครื่องมือ | วัตถุประสงค์ |
|---|---|
post-v3-domain-messages | ส่งอีเมล |
get-v4-domains | แสดงรายการโดเมน |
get-v4-domains-name | รายละเอียดโดเมนและระเบียน DNS |
put-v4-domains-name-verify | ตรวจสอบระเบียน DNS ของโดเมนอีกครั้ง |
get-v3-domains-name-tracking | การตั้งค่าการติดตาม |
get_metrics_summary | สรุปเมตริกการส่งที่สำคัญ |
post-v1-analytics-metrics | สอบถามเมตริกบัญชี |
post-v1-analytics-logs | สอบถามบันทึกเหตุการณ์ |
post-v2-bounce-classification-metrics | เมตริกการจัดประเภทการตีกลับ |
get-v3-domain-bounces | แสดงรายการการตีกลับ |
get-v3-domain-bounces-address | ค้นหาระเบียนการตีกลับ |
get-v3-domain-unsubscribes | แสดงรายการการยกเลิกการสมัคร |
get-v3-domain-complaints | แสดงรายการการร้องเรียน |
get-v3-domain-templates | แสดงรายการเทมเพลต |
validate_email | ตรวจสอบที่อยู่อีเมล |
เครื่องมือทุกตัวสังกัดชุดเครื่องมือ โมเดลจะโหลดเครื่องมือที่เหลือในชุดเครื่องมือเมื่อจำเป็นต้องใช้กับงาน:
| ชุดเครื่องมือ | เครื่องมือ | เนื้อหา |
|---|---|---|
send.messages | 3 | ส่งอีเมล เรียกดูและส่งข้อความที่จัดเก็บไว้ซ้ำ |
send.domains | 8 | โดเมน การตรวจสอบ DNS คิวการส่ง การตั้งค่าการติดตาม |
send.webhooks | 4 | เว็บฮุกของโดเมน |
send.account | 8 | IP ของบัญชี พูล IP เฉพาะ ขีดจำกัดการส่งแบบกำหนดเอง |
send.message_tags | 8 | แท็กข้อความ สถิติตามแท็ก ขีดจำกัดแท็ก |
send.analytics | 12 | สถิติและข้อมูลรวม เมตริกและบันทึกการวิเคราะห์ การจัดประเภทการตีกลับ |
send.suppressions | 8 | การตีกลับ การยกเลิกการสมัคร การร้องเรียน รายการอนุญาต |
send.routes | 3 | เส้นทางขาเข้า |
send.lists | 8 | รายชื่อผู้รับจดหมายและสมาชิก |
send.templates | 8 | เทมเพลตและเวอร์ชันของเทมเพลต |
validate | 1 | การตรวจสอบที่อยู่อีเมล |
optimize | 1 | ผลการทดสอบการจัดวางในกล่องจดหมาย |
inspect | 1 | ผลการทดสอบตัวอย่างอีเมล |
โมเดลโหลดชุดเครื่องมือด้วยเครื่องมือเพิ่มเติมสามตัว:
mailgun_list_toolsetsแสดงรายการชุดเครื่องมือและเครื่องมือทั้งหมด พร้อมระบุว่าเครื่องมือใดโหลดแล้วและเครื่องมือใดเปลี่ยนแปลงข้อมูล หากระบุชื่อเครื่องมือ ระบบจะแสดงสคีมาอินพุตของเครื่องมือนั้นแทนmailgun_enable_toolsetโหลดชุดเครื่องมือหนึ่งชุดหรือหลายชุด จากนั้นเซิร์ฟเวอร์จะแจ้งไคลเอ็นต์ว่ารายการเครื่องมือมีการเปลี่ยนแปลง (notifications/tools/list_changed) และเครื่องมือใหม่จะปรากฏพร้อมกับเครื่องมือหลัก การตอบกลับจะแสดงรายการเครื่องมือใหม่โดยไม่มีสคีมาอินพุต ซึ่งจะมาพร้อมกับรายการเครื่องมือที่อัปเดตแล้วmailgun_call_toolเรียกใช้เครื่องมือแบบอ่านอย่างเดียวตามชื่อ ไม่ว่าชุดเครื่องมือของเครื่องมือนั้นจะโหลดแล้วหรือไม่ เป็นทางเลือกสำรองสำหรับไคลเอ็นต์ที่ไม่รีเฟรชรายการเครื่องมือหลังมีการเปลี่ยนแปลง เครื่องมือนี้จะปฏิเสธเครื่องมือหลักและเครื่องมือที่เปลี่ยนแปลงข้อมูล ดังนั้นเครื่องมือเหล่านั้นจึงต้องเรียกใช้เป็นการเรียกเครื่องมือแยกต่างหากเสมอ
ชุดเครื่องมือที่โหลดไว้จะคงอยู่จนกว่าไคลเอ็นต์จะตัดการเชื่อมต่อ การโหลดตามต้องการจำเป็นต้องใช้ไคลเอ็นต์ที่รีเฟรชรายการเครื่องมือเมื่อเซิร์ฟเวอร์รายงานการเปลี่ยนแปลง ซึ่ง Claude Code ทำได้ ในไคลเอ็นต์ที่ทำไม่ได้ เครื่องมือที่โหลดใหม่จะไม่ปรากฏ: เครื่องมือแบบอ่านอย่างเดียวยังคงใช้งานผ่าน mailgun_call_tool ได้ ส่วนเครื่องมือที่เปลี่ยนแปลงข้อมูลต้องใช้ค่าเริ่มต้น (เครื่องมือทั้งหมด) หรือ --tags เช่น --tags core,send.templates
การกรองแท็ก
การตั้งค่า --tags หรือ MAILGUN_MCP_TAGS เป็นค่าอื่นที่ไม่ใช่ dynamic จะโหลดเฉพาะเครื่องมือที่ตรงกันเมื่อเริ่มทำงาน โดยไม่มีเครื่องมือสำหรับโหลด ใช้ตัวเลือกนี้เพื่อจำกัดเครื่องมือที่แสดงให้โมเดลเห็น (เช่น แสดงเฉพาะเครื่องมือตรวจสอบความถูกต้องสำหรับเวิร์กโฟลว์ที่ไม่ส่งอีเมล)
ค่าที่ใช้ได้ (เรียกใช้ --list-tags เพื่อดูคำอธิบาย):
all— เครื่องมือทั้งหมด (ค่าเริ่มต้น)dynamic— เครื่องมือหลัก พร้อมโหลดชุดเครื่องมืออื่น ๆ ตามต้องการ ใช้ค่านี้เพียงค่าเดียว การใช้ร่วมกับค่าอื่นจะทำให้เริ่มทำงานไม่สำเร็จcore— เฉพาะเครื่องมือหลักที่แสดงไว้ด้านบนsend,validate,optimize,inspect— เครื่องมือทั้งหมดของผลิตภัณฑ์นั้น (sendครอบคลุมชุดเครื่องมือsend.<group>ทั้งหมด)- ID ของชุดเครื่องมือ เช่น
send.templates
การกรองใช้ตรรกะ OR: เครื่องมือจะถูกโหลดหากตรงกับค่าใดค่าหนึ่งในรายการ ตัวอย่างเช่น core,send.templates จะโหลดเครื่องมือหลักพร้อมกับเครื่องมือเทมเพลตทั้งหมด
ผ่านแฟล็ก CLI — ส่ง --tags ใน args ของการกำหนดค่าไคลเอ็นต์ MCP:
{
"mcpServers": {
"mailgun": {
"command": "npx",
"args": ["-y", "@mailgun/mcp-server", "--tags", "validate,inspect"],
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key"
}
}
}
}
ผ่านตัวแปรสภาพแวดล้อม — ตั้งค่า MAILGUN_MCP_TAGS (หากกำหนดทั้งสองแบบ แฟล็ก CLI จะมีลำดับความสำคัญสูงกว่า):
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key",
"MAILGUN_MCP_TAGS": "validate,inspect"
}
[!TIP] เรียกใช้ไบนารีพร้อม
--list-tagsเพื่อแสดงค่าที่ใช้ได้ทั้งหมด หรือใช้--helpเพื่อดูวิธีใช้ฉบับเต็ม หากมีค่าที่ไม่รู้จัก ระบบจะปฏิเสธเมื่อเริ่มทำงานพร้อมข้อความแสดงข้อผิดพลาดที่ชัดเจน
ตัวอย่างพรอมป์ต์
ส่งอีเมล
Can you send an email to EMAIL_HERE with a funny email body that makes it sound
like it's from the IT Desk from Office Space? Please use the sending domain
DOMAIN_HERE, and make the email from "postmaster@DOMAIN_HERE"!
[!NOTE] MCP client บางตัวต้องใช้แพ็กเกจแบบชำระเงินเพื่อเรียกใช้เครื่องมือที่ส่งข้อมูล หากการส่งล้มเหลวโดยไม่มีข้อความแจ้งเตือน ให้ตรวจสอบแพ็กเกจของ client
ดึงข้อมูลและแสดงสถิติการส่ง
Would you be able to make a chart with email delivery statistics for the past week?
จัดการเทมเพลต
Create a welcome email template for new signups on my domain DOMAIN_HERE.
Include a personalized greeting and a call-to-action button.
ตรวจสอบความสามารถในการส่งอีเมล
Can you check the bounce classification stats for my account and tell me
what the most common bounce reasons are?
แก้ไขปัญหา DNS
Check the DNS verification status for my domain DOMAIN_HERE and tell me
if anything needs fixing.
ตรวจสอบรายการระงับ
Are there any unsubscribes or complaints for DOMAIN_HERE? Summarize the
top offenders.
จัดการกฎการกำหนดเส้นทาง
List all my inbound routes and explain what each one does.
สร้างรายชื่อผู้รับจดหมาย
Create a mailing list called announcements@DOMAIN_HERE and add these
members: alice@example.com, bob@example.com.
เปรียบเทียบโดเมน
Compare my sending volume and delivery rates across all my domains for
the past month.
การมีส่วนร่วมตามภูมิภาค
Break down my email engagement by country and device for DOMAIN_HERE.
ตรวจสอบการตั้งค่าการติดตาม
List all my domains and show which ones have tracking enabled for clicks
and opens.
ตรวจสอบความถูกต้องของที่อยู่อีเมล
Validate the email address EMAIL_HERE and tell me whether it's safe to send to.
ตรวจสอบตำแหน่งในกล่องจดหมาย (Optimize)
Pull the inbox placement results for seed test RESULT_ID_HERE and summarize
where my message landed (inbox, spam, or missing) by provider.
ดูตัวอย่างอีเมล (Inspect)
Get the email preview results for test TEST_ID_HERE and tell me if the email
renders correctly across clients.
การพัฒนา
เรียกใช้จากซอร์สโค้ด
เซิร์ฟเวอร์เขียนด้วย TypeScript โคลน ติดตั้ง สร้าง และทดสอบ:
git clone https://github.com/mailgun/mailgun-mcp-server.git
cd mailgun-mcp-server
npm install
npm run build
npm test
npm run build คอมไพล์ src/ เป็น dist/ และคัดลอก OpenAPI spec ที่รวมไว้ ชี้ MCP client ของคุณไปยัง entry ที่สร้างขึ้น แทนที่จะใช้ npx (ใช้พาธแบบสัมบูรณ์):
{
"mcpServers": {
"mailgun": {
"command": "node",
"args": ["/absolute/path/to/mailgun-mcp-server/dist/mailgun-mcp.js"],
"env": {
"MAILGUN_API_KEY": "YOUR-mailgun-api-key"
}
}
}
}
ทดสอบแบบเรียลไทม์ขณะแก้ไข
MCP server เป็นโปรเซส stdio ที่ทำงานต่อเนื่องและไม่โหลดซ้ำโดยอัตโนมัติ ดังนั้นขั้นตอนการทำงานคือ สร้างใหม่เมื่อบันทึก แล้วเชื่อมต่อ client อีกครั้งเพื่อรับการเปลี่ยนแปลง
-
เรียกใช้
npm run buildหนึ่งครั้งเพื่อให้dist/openapi.yamlพร้อมใช้งาน -
เปิด TypeScript compiler ค้างไว้เพื่อสร้าง
dist/ใหม่ทุกครั้งที่บันทึก:npx tsc --watch -
ชี้ MCP client แยกต่างหาก (หรือ MCP Inspector ด้านล่าง) ไปที่
dist/mailgun-mcp.jsหลังจากเปลี่ยนแปลง ให้เริ่มเซสชัน MCP client ใหม่เพื่อโหลดบิลด์ใหม่
ทดสอบด้วย MCP Inspector
MCP Inspector ช่วยให้คุณทดลองใช้เครื่องมือได้โดยไม่ต้องมี client เต็มรูปแบบ สร้างก่อน แล้วเปิดใช้งานกับเซิร์ฟเวอร์ที่สร้างขึ้น:
npm run build
MAILGUN_API_KEY=YOUR-mailgun-api-key npx @modelcontextprotocol/inspector node dist/mailgun-mcp.js
เปิด UI ของ Inspector คลิก Connect จากนั้นใช้ List Tools เพื่อตรวจสอบว่าเซิร์ฟเวอร์ทำงานอยู่ หากต้องการทดสอบชุดเครื่องมือที่กรองแล้ว ให้เพิ่ม flags ต่อท้ายพาธของเซิร์ฟเวอร์:
MAILGUN_API_KEY=YOUR-mailgun-api-key npx @modelcontextprotocol/inspector node dist/mailgun-mcp.js --tags validate,inspect
Git pre-commit hooks
npm install ติดตั้ง git pre-commit hook (ผ่าน husky) ซึ่งเรียกใช้ oxlint --fix และ oxfmt กับไฟล์ TypeScript/JavaScript ที่ stage ไว้ และเรียกใช้ npm run check:versions ปัญหาที่แก้ไขได้จะได้รับการแก้ไขโดยอัตโนมัติและ stage ใหม่ ส่วน commit ที่ทำให้เกิดข้อผิดพลาด lint ที่แก้ไขไม่ได้หรือเวอร์ชันไม่ตรงกันจะถูกปฏิเสธ หากคุณมี local clone อยู่ก่อนการเปลี่ยนแปลงนี้แล้ว ให้เรียกใช้ npm install หนึ่งครั้งเพื่อติดตั้ง hook
หมายเหตุเกี่ยวกับการเพิ่ม endpoints
Endpoints จะจัดกลุ่มตาม toolset ใน endpointGroups รายการสตริงธรรมดาจะรับ product tag จาก toolset ของตน (send.templates → send) และจะถือเป็นแบบอ่านอย่างเดียวก็ต่อเมื่อเป็น GET ใช้รูปแบบออบเจ็กต์ของ EndpointEntry เพื่อตั้งชื่อเครื่องมือ กำหนดให้เครื่องมือเป็น core (โหลดเมื่อเริ่มต้นในโหมด dynamic) หรือกำหนดให้ POST ที่ใช้ค้นหาข้อมูลเท่านั้นเป็น readOnly: true
ข้อควรพิจารณาด้านความปลอดภัย
การแยก API key
API key ของ Mailgun จะถูกส่งผ่านตัวแปรสภาพแวดล้อมและจะไม่เปิดเผยต่อโมเดล AI โดยตรง — ใช้เฉพาะโดยโปรเซส MCP server เพื่อยืนยันตัวตนของคำขอเท่านั้น เซิร์ฟเวอร์จะไม่บันทึก API key พารามิเตอร์คำขอ หรือข้อมูลการตอบกลับ
การทำงานภายในเครื่อง
เซิร์ฟเวอร์ทำงานภายในเครื่องของคุณ การสื่อสารทั้งหมดกับ Mailgun API ใช้ HTTPS โดยบังคับตรวจสอบใบรับรอง TLS ไม่มีการส่งข้อมูลไปยังบริการของบุคคลที่สามนอกเหนือจาก Mailgun API
สิทธิ์ของ API key
ใช้ API key ของ Mailgun โดยเฉพาะ และจำกัดสิทธิ์ให้ครอบคลุมเฉพาะการดำเนินการที่คุณต้องการ เซิร์ฟเวอร์เปิดให้ใช้การดำเนินการอ่านและอัปเดต แต่ไม่มีการดำเนินการลบ ซึ่งช่วยจำกัดขอบเขตความเสียหายจากการกระทำที่ไม่ตั้งใจ
การจำกัดอัตราการเรียกใช้
เซิร์ฟเวอร์ไม่ได้จำกัดอัตราการเรียกใช้ฝั่ง client การเรียกใช้เครื่องมือแต่ละครั้งจาก AI จะแปลงเป็นคำขอ Mailgun API โดยตรง เซิร์ฟเวอร์อาศัยการจำกัดอัตราการเรียกใช้ฝั่งเซิร์ฟเวอร์ของ Mailgun เพื่อป้องกันการใช้งานในทางที่ผิด — คำขอที่เกินขีดจำกัดดังกล่าวจะส่งข้อผิดพลาดกลับไปยัง AI assistant
Prompt injection
เช่นเดียวกับ MCP server ทุกตัว prompt ที่สร้างขึ้นอย่างเจาะจงหรือเป็นปฏิปักษ์อาจหลอกให้ AI assistant เรียกใช้การดำเนินการที่คุณไม่ได้ตั้งใจได้ — ตัวอย่างเช่น เปลี่ยนการตั้งค่าการติดตามหรืออ่านสมาชิกในรายชื่อผู้รับจดหมาย ตรวจสอบการยืนยันการเรียกใช้เครื่องมือของ AI assistant ก่อนอนุมัติการดำเนินการ โดยเฉพาะในบริบทของ prompt ที่ไม่น่าเชื่อถือ
การโหลดเครื่องมือและการอนุมัติ
เครื่องมือทุกตัวมี annotation MCP readOnlyHint เพื่อให้ client แยกเครื่องมือที่อ่านข้อมูลอย่างเดียวออกจากเครื่องมือที่เปลี่ยนแปลงข้อมูลได้ (เช่น เมื่อต้องขออนุมัติ) mailgun_list_toolsets และ mailgun_call_tool เป็นแบบอ่านอย่างเดียว mailgun_enable_toolset เปลี่ยนเครื่องมือที่เซสชันมองเห็น จึงไม่ได้ระบุว่าเป็นแบบอ่านอย่างเดียว แต่จะไม่เปลี่ยนแปลงสิ่งใดใน Mailgun mailgun_call_tool เรียกใช้เฉพาะเครื่องมือแบบอ่านอย่างเดียวที่ไม่อยู่ในชุดหลัก ดังนั้นการอนุมัติจึงไม่สามารถส่งอีเมลหรือเปลี่ยนการตั้งค่าบัญชีได้ เครื่องมือที่เปลี่ยนแปลงข้อมูลจะทำงานเป็นการเรียกใช้เครื่องมือแยกต่างหากเสมอ
การโหลด toolset ตามต้องการช่วยลดสิ่งที่โมเดลมองเห็น แต่ไม่ใช่การควบคุมการเข้าถึง เพราะโมเดลสามารถโหลด toolset ใดก็ได้ หากต้องการจำกัดเครื่องมือที่เซิร์ฟเวอร์เปิดให้ใช้งานทั้งหมด ให้ใช้ --tags
URL ของ Webhook
การดำเนินการสร้างและอัปเดต webhook ยอมรับ URL ใดก็ได้ที่ AI assistant ระบุ MCP server จะส่ง URL เหล่านี้ไปยัง Mailgun API โดยไม่มีการตรวจสอบเพิ่มเติม Mailgun เป็นผู้รับผิดชอบในการตรวจสอบปลายทาง webhook ตรวจสอบให้แน่ใจว่า AI assistant ไม่ได้ตั้งค่า URL ของ webhook ให้ชี้ไปยังที่อยู่ภายในหรือที่อยู่ละเอียดอ่อนที่ไม่ต้องการ
การตรวจสอบความถูกต้องของอินพุต
พารามิเตอร์เครื่องมือทั้งหมดจะได้รับการตรวจสอบตาม Mailgun OpenAPI specification โดยใช้ Zod schemas อย่างไรก็ตาม การตรวจสอบขึ้นอยู่กับความถูกต้องของ OpenAPI spec และพารามิเตอร์บางกรณีที่พบได้ยากอาจใช้การตรวจสอบแบบผ่อนปรน Mailgun API จะตรวจสอบข้อมูลฝั่งเซิร์ฟเวอร์ของตนเองเพิ่มเติมเพื่อเป็นการป้องกันอีกชั้นหนึ่ง
การดีบัก
MCP server สื่อสารผ่าน stdio ดู MCP Debugging Guide เพื่อแก้ไขปัญหา
ใบอนุญาต
Apache 2.0 — ดูรายละเอียดได้ที่ LICENSE
การมีส่วนร่วม
เรายินดีรับการมีส่วนร่วม! คุณสามารถส่ง Pull Request หรือเปิด Issue ได้ตามสะดวก