Mailtrap

resmi

Terintegrasi dengan Mailtrap Email API.

Apa yang bisa Anda lakukan dengan Mailtrap MCP?

  • Kirim email transaksional — Minta pengiriman email melalui send-email dengan konten inline atau template, termasuk CC/BCC dan variabel kustom.
  • Kelola template email — Gunakan list-templates, create-template, update-template, atau delete-template untuk memelihara desain email yang dapat digunakan ulang.
  • Periksa log pengiriman — Kueri list-email-logs dengan filter seperti penerima, status, atau tanggal, lalu telusuri detail dengan get-email-log-message.
  • Uji email di sandbox — Kirim ke kotak masuk uji melalui send-sandbox-email, lalu tinjau pesan dengan get-sandbox-messages dan show-sandbox-email-message.
  • Analisis kinerja pengiriman — Dapatkan tingkat pengiriman, pantulan, dan keterlibatan melalui get-sending-stats, opsional dipecah berdasarkan domain atau kategori.
  • Konfigurasi infrastruktur pengiriman — Kelola list-sending-domains, buat atau hapus domain, dan ambil petunjuk pengaturan DNS.

Dokumentasi

TypeScript test NPM

Server MCP Mailtrap

Server MCP yang menyediakan alat untuk mengirim dan menguji di sandbox melalui Mailtrap.

Prasyarat

Sebelum menggunakan server MCP ini, Anda perlu:

  1. Buat akun Mailtrap
  2. Verifikasi domain Anda
  3. Dapatkan token API dari pengaturan API Mailtrap
  4. Dapatkan ID Akun Anda dari manajemen akun Mailtrap

Variabel Lingkungan yang Diperlukan:

  • MAILTRAP_API_TOKEN - Diperlukan untuk semua fungsionalitas
  • MAILTRAP_ACCOUNT_ID - Diperlukan untuk template, statistik, log email, daftar/tampilan sandbox, dan domain pengiriman. Opsional hanya untuk alat kirim (send-email, send-sandbox-email, dan alat batch-send-*).

Opsional (dapat diberikan sebagai parameter alat sebagai gantinya):

  • DEFAULT_FROM_EMAIL - Email pengirim default ketika from tidak diberikan ke send-email, send-sandbox-email, atau alat batch-send-* (yang mengisi base.from). Memungkinkan penggantian pengirim per panggilan melalui parameter from.
  • MAILTRAP_SANDBOX_ID - ID sandbox default untuk alat sandbox ketika sandbox_id tidak diberikan. Memungkinkan peralihan antar sandbox per panggilan melalui parameter sandbox_id.
  • MAILTRAP_TEST_INBOX_ID - ID kotak masuk uji default untuk alat sandbox ketika test_inbox_id tidak diberikan. Memungkinkan peralihan antar kotak masuk per panggilan melalui parameter test_inbox_id. Alias lama untuk MAILTRAP_SANDBOX_ID, masih dihormati sebagai cadangan.
  • MAILTRAP_ORGANIZATION_ID - Diperlukan untuk alat organisasi (list-sub-accounts, create-sub-account).
  • MAILTRAP_ORGANIZATION_API_TOKEN - Token API khusus organisasi. Diperlukan untuk alat organisasi (terpisah dari MAILTRAP_API_TOKEN).

Instalasi Cepat

Install in Cursor

Install with Node in VS Code

Smithery CLI

Smithery adalah penginstal dan pengelola registri untuk server MCP yang berfungsi dengan semua klien AI.

npx @smithery/cli install mailtrap

Smithery secara otomatis menangani konfigurasi klien dan menyediakan proses pengaturan interaktif. Ini adalah cara termudah untuk memulai dengan server MCP secara lokal.

Pengaturan

Claude Desktop

Gunakan MCPB untuk menginstal server Mailtrap. Anda dapat menemukan file-file tersebut di Releases.
Unduh file .MCPB dan buka. Jika Anda memiliki Claude Desktop - file tersebut akan terbuka dan menyarankan untuk dikonfigurasi.

Claude Desktop atau Cursor

Tambahkan konfigurasi berikut:

{
  "mcpServers": {
    "mailtrap": {
      "command": "npx",
      "args": ["-y", "mcp-mailtrap"],
      "env": {
        "MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
        "DEFAULT_FROM_EMAIL": "your_sender@example.com",
        "MAILTRAP_ACCOUNT_ID": "your_account_id",
        "MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
      }
    }
  }
}

Jika Anda menggunakan asdf untuk mengelola Node.js, Anda harus menggunakan jalur absolut ke executable (contoh untuk Mac)

{
  "mcpServers": {
    "mailtrap": {
      "command": "/Users/<username>/.asdf/shims/npx",
      "args": ["-y", "mcp-mailtrap"],
      "env": {
        "PATH": "/Users/<username>/.asdf/shims:/usr/bin:/bin",
        "ASDF_DIR": "/opt/homebrew/opt/asdf/libexec",
        "ASDF_DATA_DIR": "/Users/<username>/.asdf",
        "ASDF_NODEJS_VERSION": "20.6.1",
        "MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
        "DEFAULT_FROM_EMAIL": "your_sender@example.com",
        "MAILTRAP_ACCOUNT_ID": "your_account_id",
        "MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
      }
    }
  }
}

Lokasi file konfigurasi Claude Desktop

Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

Lokasi file konfigurasi Cursor

Mac: ~/.cursor/mcp.json

Windows: %USERPROFILE%\.cursor\mcp.json

VS Code

Mengubah konfigurasi secara manual

Jalankan di Command Palette: Preferences: Open User Settings (JSON)

Kemudian, di file pengaturan, tambahkan konfigurasi berikut:

{
  "mcp": {
    "servers": {
      "mailtrap": {
        "command": "npx",
        "args": ["-y", "mcp-mailtrap"],
        "env": {
          "MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
          "DEFAULT_FROM_EMAIL": "your_sender@example.com",
          "MAILTRAP_ACCOUNT_ID": "your_account_id",
          "MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
        }
      }
    }
  }
}

[!TIP] Jangan lupa untuk me-restart server MCP Anda setelah mengubah bagian "env".

MCP Bundle (MCPB)

Untuk instalasi mudah di host yang mendukung MCP Bundles, Anda dapat mendistribusikan file bundle .mcpb.

# Build TypeScript and pack the MCPB bundle
npm run mcpb:pack

# Inspect bundle metadata
npm run mcpb:info

# Sign the bundle for distribution (optional)
npm run mcpb:sign

Ini membuat mailtrap-mcp.mcpb menggunakan repositori manifest.json dan artefak yang dibangun di dist/.

Penggunaan

Setelah dikonfigurasi, Anda dapat meminta agen untuk mengirim email dan mengelola template, misalnya:

Operasi Pengiriman Email:

  • "Kirim email ke john.doe@example.com dengan subjek 'Meeting Tomorrow' dan pengingat ramah tentang pertemuan kita yang akan datang."
  • "Email sarah@example.com tentang pembaruan proyek, dan CC tim di team@example.com"
  • "Kirim template selamat datang (uuid b81aabcd-1a1e-41cf-91b6-eca0254b3d96) ke new@example.com dengan variabel { name: 'Alex' }"
  • "Kirim email sandbox ke test@example.com dengan subjek 'Test Template' untuk melihat pratinjau tampilan email selamat datang kita"

Log Email (debug pengiriman):

  • "Daftarkan log email yang baru saya kirim"
  • "Tampilkan log email untuk email yang dikirim ke user@example.com"
  • "Dapatkan pesan log email untuk ID abc-123-uuid untuk memeriksa status pengiriman"

Statistik Pengiriman:

  • "Dapatkan statistik pengiriman untuk Januari 2025"
  • "Tampilkan tingkat pengiriman yang dipecah berdasarkan domain untuk bulan lalu"
  • "Apa statistik email saya berdasarkan kategori dari 2025-01-01 hingga 2025-01-31?"

Operasi Sandbox:

  • "Dapatkan semua pesan dari kotak masuk sandbox saya"
  • "Tampilkan halaman pertama pesan sandbox"
  • "Cari pesan yang mengandung 'test' di kotak masuk sandbox saya"
  • "Tampilkan detail pesan sandbox dengan ID 5159037506"

Operasi Template:

  • "Daftarkan semua template email di akun Mailtrap saya"
  • "Buat template email baru bernama 'Welcome Email' dengan subjek 'Welcome to our platform!'"
  • "Perbarui template dengan ID 12345 untuk mengubah subjek menjadi 'Updated Welcome Message'"
  • "Hapus template dengan ID 67890"

Domain Pengiriman:

  • "Daftarkan domain pengiriman saya"
  • "Dapatkan domain pengiriman dengan ID 3938"
  • "Buat domain pengiriman untuk example.com"
  • "Hapus domain pengiriman 3938"
  • "Dapatkan domain pengiriman 3938 dengan petunjuk pengaturan DNS"

Alat yang Tersedia

send-email

Mengirim email transaksional melalui Mailtrap. Mendukung dua mode yang saling eksklusif — konten inline (subject + text/html) atau berbasis template (template_uuid).

Parameter:

  • from (opsional): Pengirim sebagai { email, name? } (string email polos juga diterima saat runtime). Jika tidak diberikan, DEFAULT_FROM_EMAIL digunakan.
  • to (opsional): Array penerima sebagai objek { email, name? } (string email polos, atau satu alamat non-array, juga diterima saat runtime). Opsional jika cc atau bcc diberikan; setidaknya satu dari to / cc / bcc harus berisi penerima.
  • cc (opsional): Array penerima CC sebagai objek { email, name? } (string email polos juga diterima saat runtime).
  • bcc (opsional): Array penerima BCC sebagai objek { email, name? } (string email polos juga diterima saat runtime).
  • subject (kondisional): Baris subjek email. Diperlukan untuk pengiriman inline; harus dihilangkan ketika template_uuid diatur.
  • text (kondisional): Teks isi email. Diperlukan (bersamaan dengan atau sebagai pengganti html) untuk pengiriman inline; harus dihilangkan ketika template_uuid diatur.
  • html (kondisional): Versi HTML dari isi email. Diperlukan (bersamaan dengan atau sebagai pengganti text) untuk pengiriman inline; harus dihilangkan ketika template_uuid diatur.
  • category (opsional): Kategori email untuk pelacakan dan analitik. Harus dihilangkan ketika template_uuid diatur.
  • template_uuid (opsional): Gunakan template email Mailtrap alih-alih konten inline. Saat diatur, subject / text / html / category harus dihilangkan (sesuai API Mailtrap).
  • template_variables (opsional): Objek variabel yang disubstitusikan ke dalam template yang dirujuk oleh template_uuid. Hanya diizinkan bersama dengan template_uuid.

batch-send-transactional-email

Mengirim batch email transaksional dalam satu panggilan API Mailtrap (aliran pengiriman default). Bidang bersama ditempatkan di base; penimpaan per-penerima ditempatkan di requests[]. Setiap permintaan harus menyertakan setidaknya satu penerima melalui to, cc, atau bcc. Aturan eksklusi inline-vs-template yang sama seperti send-email — diperiksa setelah menggabungkan basis dengan setiap permintaan.

Parameter:

  • base (opsional): Objek dengan bidang yang dibagikan di seluruh batch.
    • from (opsional): Pengirim sebagai { email, name? } (string email polos juga diterima saat runtime). Jatuh kembali ke DEFAULT_FROM_EMAIL.
    • reply_to (opsional): Alamat balas (reply-to).
    • subject / text / html / category (opsional, mode inline): Konten default untuk setiap permintaan.
    • template_uuid / template_variables (opsional, mode template): Template default + variabel. Saling eksklusif dengan bidang inline.
    • custom_variables (opsional): Variabel kustom default (bernilai string).
    • headers (opsional): Header kustom default.
  • requests (wajib): Array non-kosong dari pesan per-penerima. Setiap entri memiliki:
    • to (opsional): Array penerima sebagai objek { email, name? } (string email polos, atau satu alamat non-array, juga diterima saat runtime). Opsional jika cc atau bcc diberikan; setidaknya satu dari to / cc / bcc harus berisi penerima.
    • cc, bcc, reply_to (opsional).
    • Penimpaan inline (subject/text/html/category) atau template (template_uuid/template_variables); bidang apa pun yang dihilangkan akan jatuh kembali ke nilai base yang sesuai.
    • custom_variables, headers (opsional).

batch-send-bulk-email

Mengirim batch email massal melalui API bulk-stream Mailtrap. Bentuk base + requests[], validasi, dan aturan inline-vs-template yang sama seperti batch-send-transactional-email — satu-satunya perbedaan adalah alat ini merutekan panggilan melalui endpoint bulk alih-alih endpoint transaksional. Lihat parameter di atas.

list-email-logs

Mencantumkan log email yang dikirim (riwayat pengiriman) dengan paginasi dan filter opsional. Gunakan untuk men-debug masalah pengiriman dari IDE.

Parameter:

  • search_after (opsional): Kursor paginasi dari next_page_cursor respons sebelumnya
  • sent_after (opsional): Tanggal/waktu ISO 8601; hanya log yang dikirim setelah waktu ini
  • sent_before (opsional): Tanggal/waktu ISO 8601; hanya log yang dikirim sebelum waktu ini
  • from_email (opsional): Filter berdasarkan email pengirim; gunakan dengan from_operator (default: ci_equal)
  • to_email (opsional): Filter berdasarkan email penerima; gunakan dengan to_operator (default: ci_equal)
  • status (opsional): Filter berdasarkan status pengiriman: delivered, not_delivered, enqueued, opted_out; gunakan dengan status_operator (default: equal)
  • subject (opsional): Filter berdasarkan subjek email; gunakan dengan subject_operator (default: ci_contain). Gunakan subject_operator: empty/not_empty untuk memfilter berdasarkan keberadaan subjek.
  • sending_domain_id (opsional): Filter berdasarkan ID domain pengiriman (angka); gunakan dengan sending_domain_id_operator (default: equal)
  • sending_stream (opsional): Filter berdasarkan aliran: transactional atau bulk; gunakan dengan sending_stream_operator (default: equal)
  • events (opsional): Filter berdasarkan jenis peristiwa: delivery, open, click, bounce, spam, unsubscribe, soft_bounce, reject, suspension; gunakan dengan events_operator (include_event / not_include_event)
  • clicks_count / opens_count (opsional): Filter berdasarkan jumlah klik/buka; gunakan dengan *_operator: equal, greater_than, less_than
  • client_ip / sending_ip (opsional): Filter berdasarkan IP; gunakan dengan *_operator: equal, not_equal, contain, not_contain
  • email_service_provider_response (opsional): Filter berdasarkan teks respons penyedia; gunakan dengan *_operator (ci_contain, dll.)
  • email_service_provider (opsional): Filter berdasarkan penyedia (tepat); gunakan dengan *_operator: equal, not_equal
  • recipient_mx (opsional): Filter berdasarkan MX penerima; gunakan dengan recipient_mx_operator (ci_contain, dll.)
  • category (opsional): Filter berdasarkan kategori email; gunakan dengan category_operator: equal, not_equal

Semua parameter bersifat opsional.

get-email-log-message

Mendapatkan satu pesan log email berdasarkan ID (UUID): ringkasan yang dapat dibaca (dari, ke, subjek, waktu pengiriman, status, kategori, aliran, keterlibatan, konteks pengiriman), kemudian riwayat peristiwa yang terperinci. Secara opsional, dengan include_content: true, Anda juga dapat memuat dan menampilkan isi pesan (HTML dan teks polos) ketika Mailtrap mengekspos URL pesan mentah.

Parameter:

  • message_id (wajib): UUID dari pesan log email (dari respons pengiriman atau daftar-log-email). Gunakan list-email-logs untuk menemukan ID pesan.
  • include_content (opsional): Saat true, mengambil EML mentah (jika raw_message_url tersedia) dan menambahkan bagian konten HTML serta teks biasa yang telah diurai, mirip dengan show-sandbox-email-message.

get-sending-stats

Dapatkan statistik pengiriman email (tingkat pengiriman, bounce, buka, klik, spam) untuk rentang tanggal. Secara opsional dapat dipecah berdasarkan domain, kategori, penyedia layanan email, atau tanggal. Periksa tingkat pengiriman tanpa meninggalkan editor.

Parameter:

  • start_date (wajib): Tanggal mulai untuk rentang statistik (YYYY-MM-DD)
  • end_date (wajib): Tanggal akhir untuk rentang statistik (YYYY-MM-DD)
  • breakdown (opsional): Cara memecah statistik: aggregated (default), by_domain, by_category, by_email_service_provider, atau by_date
  • sending_domain_ids (opsional): Batasi hasil ke ID domain pengiriman berikut (array bilangan bulat)
  • sending_streams (opsional): Batasi ke transactional dan/atau bulk (array string)
  • categories (opsional): Batasi ke kategori email berikut (array string)
  • email_service_providers (opsional): Batasi ke penyedia berikut, mis. Google, Yahoo, Outlook (array string)

create-template

Membuat template email baru di akun Mailtrap Anda.

Parameter:

  • name (wajib): Nama template
  • subject (wajib): Baris subjek email
  • html (atau text wajib): Konten HTML dari template
  • text (atau html wajib): Versi teks biasa dari template
  • category (opsional): Kategori template (defaultnya "General")

list-templates

Mencantumkan semua template email di akun Mailtrap Anda.

Parameter:

  • Tidak diperlukan parameter

get-template

Dapatkan satu template email berdasarkan ID, termasuk subjek, kategori, dan konten HTML/teks.

Parameter:

  • template_id (wajib): ID template yang akan diambil

update-template

Memperbarui template email yang sudah ada.

Parameter:

  • template_id (wajib): ID template yang akan diperbarui
  • name (opsional): Nama baru untuk template
  • subject (opsional): Baris subjek email baru
  • html (opsional): Konten HTML baru dari template
  • text (opsional): Versi teks biasa baru dari template
  • category (opsional): Kategori baru untuk template

[!NOTE] Setidaknya satu kolom yang dapat diperbarui (name, subject, html, text, atau category) harus disediakan saat memanggil update-template untuk melakukan pembaruan.

delete-template

Menghapus template email yang sudah ada.

Parameter:

  • template_id (wajib): ID template yang akan dihapus

send-sandbox-email

Mengirim email ke kotak masuk uji Mailtrap Anda untuk tujuan pengembangan dan pengujian. Ini sangat cocok untuk menguji template email tanpa mengirim email ke penerima sungguhan. Mendukung dua mode yang sama seperti send-emailkonten inline atau berbasis template (template_uuid).

Parameter:

  • test_inbox_id (opsional): ID kotak masuk uji Mailtrap. Wajib kecuali MAILTRAP_TEST_INBOX_ID disetel; berikan per pemanggilan untuk menargetkan kotak masuk tertentu.
  • from (opsional): Pengirim sebagai { email, name? } (string email polos juga diterima saat runtime). Jika tidak diberikan, DEFAULT_FROM_EMAIL yang digunakan.
  • to (opsional): Array penerima sebagai objek { email, name? } (string email polos dalam array, atau string email biasa yang dipisahkan koma, juga diterima saat runtime). Opsional jika cc atau bcc diberikan; setidaknya satu dari to / cc / bcc harus berisi penerima.
  • cc (opsional): Array penerima CC sebagai objek { email, name? } (string email polos juga diterima saat runtime).
  • bcc (opsional): Array penerima BCC sebagai objek { email, name? } (string email polos juga diterima saat runtime).
  • subject (bersyarat): Baris subjek email. Wajib untuk pengiriman inline; harus dihilangkan saat template_uuid disetel.
  • text (bersyarat): Teks konten email. Wajib (bersamaan dengan atau sebagai pengganti html) untuk pengiriman inline; harus dihilangkan saat template_uuid disetel.
  • html (bersyarat): Versi HTML dari konten email. Wajib (bersamaan dengan atau sebagai pengganti text) untuk pengiriman inline; harus dihilangkan saat template_uuid disetel.
  • category (opsional): Kategori email untuk pelacakan. Harus dihilangkan saat template_uuid disetel.
  • template_uuid (opsional): Gunakan template email Mailtrap alih-alih konten inline. Saat disetel, subject / text / html / category harus dihilangkan.
  • template_variables (opsional): Objek variabel yang disubstitusikan ke dalam template yang dirujuk oleh template_uuid. Hanya diperbolehkan bersama dengan template_uuid.

batch-send-sandbox-email

Mengirim sekumpulan email ke kotak masuk uji Mailtrap Anda dalam satu panggilan API, tanpa mengirim ke penerima sungguhan. Bentuk base + requests[], validasi, dan aturan inline-vs-template yang sama seperti batch-send-transactional-email — perbedaannya adalah alat ini mengarahkan panggilan melalui endpoint sandbox untuk satu kotak masuk uji.

Parameter:

  • sandbox_id (opsional): ID sandbox Mailtrap (kotak masuk uji). Wajib kecuali MAILTRAP_SANDBOX_ID disetel; berikan per pemanggilan untuk menargetkan sandbox tertentu.
  • base (opsional), requests (wajib): Lihat batch-send-transactional-email di atas.

[!NOTE] Untuk alat sandbox, berikan test_inbox_id dalam panggilan alat atau setel variabel lingkungan MAILTRAP_TEST_INBOX_ID. Anda dapat berpindah antar kotak masuk per pemanggilan dengan memberikan test_inbox_id. Alat yang menerima sandbox_id menggunakan MAILTRAP_SANDBOX_ID terlebih dahulu.

get-sandbox-messages

Mengambil daftar pesan dari kotak masuk uji Mailtrap Anda. Berguna untuk memeriksa email apa saja yang telah diterima di sandbox Anda selama pengujian.

Parameter:

  • page (opsional): Nomor halaman untuk paginasi (minimum: 1)
  • last_id (opsional): Paginasi menggunakan ID pesan terakhir. Mengembalikan pesan setelah ID pesan yang ditentukan (minimum: 1)
  • search (opsional): Kueri pencarian untuk memfilter pesan

[!NOTE] Semua parameter bersifat opsional. Jika tidak ada yang diberikan, halaman pertama pesan dari kotak masuk akan dikembalikan. Gunakan page untuk paginasi tradisional, last_id untuk paginasi berbasis kursor, atau search untuk memfilter pesan berdasarkan konten.

show-sandbox-email-message

Menampilkan informasi terperinci dan konten pesan email tertentu dari kotak masuk uji Mailtrap Anda, termasuk konten HTML dan teks.

Parameter:

  • message_id (wajib): ID pesan email sandbox yang akan diambil

[!NOTE] Gunakan get-sandbox-messages terlebih dahulu untuk mendapatkan daftar pesan beserta ID-nya, lalu gunakan alat ini untuk melihat konten lengkap pesan tertentu.

get-sandbox-project

Dapatkan proyek sandbox berdasarkan ID, termasuk kotak masuk dan jumlah emailnya.

Parameter:

  • project_id (wajib): ID proyek yang akan diambil

update-sandbox-project

Mengganti nama proyek sandbox yang sudah ada.

Parameter:

  • project_id (wajib): ID proyek yang akan diperbarui
  • name (wajib): Nama baru untuk proyek (2–100 karakter)

list-sandboxes

Cantumkan setiap sandbox yang dapat diakses oleh token API di semua proyek.

Parameter:

  • Tidak diperlukan parameter

mark-sandbox-as-read

Menandai semua pesan di sandbox sebagai sudah dibaca.

Parameter:

  • sandbox_id (wajib): ID sandbox yang akan ditindaklanjuti

reset-sandbox-credentials

Mengatur ulang kredensial SMTP untuk sandbox. Mengembalikan nama pengguna/kata sandi baru.

Parameter:

  • sandbox_id (wajib): ID sandbox yang akan ditindaklanjuti

enable-sandbox-email-address

Mengaktifkan alamat terima-melalui-email untuk sandbox (mengaktifkan alamat Mailtrap yang mengirimkan pesan ke sandbox melalui SMTP).

Parameter:

  • sandbox_id (wajib): ID sandbox yang akan ditindaklanjuti

reset-sandbox-email-address

Menghasilkan alamat terima-melalui-email baru untuk sandbox.

Parameter:

  • sandbox_id (wajib): ID sandbox yang akan ditindaklanjuti

forward-sandbox-message

Meneruskan pesan sandbox ke alamat email eksternal. Dihitung terhadap kuota penerusan bulanan Anda.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox yang akan diteruskan
  • email (wajib): Alamat email tujuan penerusan pesan

update-sandbox-message

Menandai pesan sandbox sebagai sudah dibaca atau belum dibaca.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox yang akan diperbarui
  • is_read (wajib): true menandai sebagai sudah dibaca, false menandai sebagai belum dibaca

delete-sandbox-message

Menghapus satu pesan sandbox.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox yang akan dihapus

get-sandbox-message-spam-score

Dapatkan laporan spam SpamAssassin untuk pesan sandbox (skor, aturan, laporan lengkap). Alternatif mandiri untuk include_spam_report: true pada show-sandbox-email-message.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-message-html-analysis

Dapatkan laporan analisis HTML untuk pesan sandbox (skor kompatibilitas klien, elemen bermasalah). Alternatif mandiri untuk include_html_analysis: true pada show-sandbox-email-message.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-message-headers

Dapatkan header email yang telah diurai untuk pesan sandbox.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-message-html

Dapatkan konten HTML yang dirender dari pesan sandbox.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-message-text

Dapatkan konten teks biasa dari pesan sandbox.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-message-raw

Dapatkan pesan mentah berformat MIME (header + konten) untuk pesan sandbox.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-message-eml

Dapatkan pesan yang dirender sebagai payload file EML (cocok untuk dilampirkan ke tiket atau diimpor ke klien email lain).

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-message-html-source

Dapatkan sumber HTML yang belum dirender dari pesan sandbox (HTML sebelum transformasi sisi Mailtrap seperti penulisan ulang tautan CID).

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

list-sandbox-attachments

Cantumkan semua lampiran pada pesan sandbox (nama file, tipe konten, ukuran, jalur unduhan).

Parameter:

  • sandbox_id (opsional): ID Sandbox. Jatuh kembali ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox

get-sandbox-attachment

Dapatkan metadata dan URL unduhan untuk satu lampiran.

Parameter:

  • sandbox_id (opsional): ID Sandbox. Menggunakan fallback ke MAILTRAP_SANDBOX_ID.
  • message_id (wajib): ID pesan sandbox yang berisi lampiran
  • attachment_id (wajib): ID lampiran yang akan diambil

list-sending-domains

Mencantumkan domain pengirim dan status verifikasi DNS-nya.

Parameter:

  • Tidak ada parameter yang diperlukan

get-sending-domain

Mendapatkan domain pengirim berdasarkan ID dan status verifikasinya (termasuk catatan DNS). Secara opsional menyertakan petunjuk pengaturan DNS dengan mengatur include_setup_instructions ke true.

Parameter:

  • sending_domain_id (wajib): ID domain pengirim
  • include_setup_instructions (opsional): Jika true, tambahkan petunjuk pengaturan DNS ke respons. Default: false

create-sending-domain

Membuat domain pengirim baru. Setelah pembuatan, tambahkan catatan DNS untuk memverifikasi domain (gunakan get-sending-domain dengan include_setup_instructions: true untuk melihat catatannya).

Parameter:

  • domain_name (wajib): Nama domain (mis. example.com)

delete-sending-domain

Menghapus domain pengirim.

Parameter:

  • sending_domain_id (wajib): ID domain pengirim yang akan dihapus

send-sending-domain-setup-instructions

Mengirim petunjuk pengaturan DNS untuk domain pengirim ke alamat tertentu. Berguna untuk meneruskan catatan DNS ke rekan DevOps.

Parameter:

  • sending_domain_id (wajib): ID domain pengirim
  • email (wajib): Alamat email tujuan pengiriman petunjuk pengaturan DNS

list-suppressions

Mencantumkan atau mencari suppressions (hard bounce, keluhan spam, berhenti berlangganan, impor manual). Mengembalikan hingga 1000 hasil per panggilan.

Parameter:

  • email (opsional): Filter email. Hanya mengembalikan suppressions yang cocok dengan alamat ini.

delete-suppression

Menghapus suppression berdasarkan ID. Mailtrap akan melanjutkan pengiriman ke email ini kecuali email tersebut ditekan lagi.

Parameter:

  • suppression_id (wajib): ID suppression yang akan dihapus

list-webhooks

Mencantumkan semua webhook yang dikonfigurasi untuk akun. Mengembalikan catatan webhook lengkap sebagai JSON.

Parameter:

  • Tidak ada parameter yang diperlukan

get-webhook

Mendapatkan satu webhook berdasarkan ID. Mengembalikan catatan webhook lengkap sebagai JSON. Catatan: signing_secret tidak dikembalikan di sini — hanya tersedia dalam respons dari create-webhook.

Parameter:

  • webhook_id (wajib): ID webhook yang akan diambil

create-webhook

Membuat webhook. Respons menyertakan signing_secret untuk memverifikasi tanda tangan payload webhook — rahasia ini hanya dikembalikan saat pembuatan, jadi simpan sekarang. Jika hilang, buat ulang webhook.

Parameter:

  • url (wajib): URL tempat Mailtrap akan mengirim POST peristiwa webhook
  • webhook_type (wajib): "email_sending", "audit_log", atau "inbound_receiving"
  • active (opsional, boolean): default ke true
  • payload_format (opsional): "json" atau "jsonlines". Default ke "json"
  • sending_stream (opsional, hanya email_sending): "transactional" atau "bulk"
  • event_types (opsional, hanya email_sending): array dari delivery, soft_bounce, bounce, suspension, unsubscribe, open, spam_complaint, click, reject
  • domain_id (opsional, hanya email_sending): ID domain pengirim untuk membatasi cakupan webhook ini
  • inbound_inbox_id (opsional, hanya inbound_receiving): ID kotak masuk inbound yang ditautkan ke webhook; kosongkan untuk menerapkan ke semua kotak masuk di akun

update-webhook

Memperbarui kolom yang dapat diubah pada webhook. webhook_type, sending_stream, dan domain_id tidak dapat diubah setelah pembuatan — buat ulang webhook jika perlu mengubahnya.

Parameter:

  • webhook_id (wajib): ID webhook yang akan diperbarui
  • url (opsional): URL webhook baru
  • active (opsional, boolean): Aktifkan atau nonaktifkan webhook
  • payload_format (opsional): "json" atau "jsonlines"
  • event_types (opsional, hanya email_sending): array dari delivery, soft_bounce, bounce, suspension, unsubscribe, open, spam_complaint, click, reject
  • inbound_inbox_id (opsional, hanya inbound_receiving): ID kotak masuk inbound yang ditautkan ke webhook

delete-webhook

Menghapus webhook secara permanen berdasarkan ID. Mengembalikan catatan webhook yang dihapus.

Parameter:

  • webhook_id (wajib): ID webhook yang akan dihapus

get-contact

Mendapatkan kontak berdasarkan ID atau email. Mengembalikan catatan kontak lengkap (keanggotaan daftar, status, kolom kustom).

Parameter:

  • contact_identifier (wajib): ID kontak atau alamat email

create-contact

Membuat kontak baru.

Parameter:

  • email (wajib): Alamat email
  • fields (opsional): Nilai kolom kustom yang dikunci berdasarkan merge tag (mis. first_name). Nilai string, angka, atau boolean
  • list_ids (opsional): ID daftar kontak untuk mendaftarkan kontak ini
  • unsubscribed (opsional, boolean): Buat kontak dengan status unsubscribed

update-contact

Memperbarui kontak yang ada yang diidentifikasi berdasarkan ID atau email. list_ids mengganti seluruh set keanggotaan kontak; list_ids_included/list_ids_excluded menambah/menghapus tanpa mengganggu yang lain.

Parameter:

  • contact_identifier (wajib): ID kontak atau email
  • email (opsional): Alamat email baru
  • fields (opsional): Nilai kolom kustom yang dikunci berdasarkan merge tag
  • list_ids (opsional): Ganti set keanggotaan dengan daftar persis ini
  • list_ids_included (opsional): ID daftar yang akan ditambahkan (aditif)
  • list_ids_excluded (opsional): ID daftar yang akan dihapus
  • unsubscribed (opsional, boolean): Atur ke unsubscribed (benar) atau subscribed (salah)

delete-contact

Menghapus kontak secara permanen berdasarkan ID atau email. Mengembalikan catatan kontak yang dihapus saat API merespons dengan catatan tersebut; jika tidak, mengembalikan payload konfirmasi.

Parameter:

  • contact_identifier (wajib): ID kontak atau email

create-contact-event

Mencatat peristiwa kontak terhadap kontak (berdasarkan ID atau email). Digunakan untuk memicu otomatisasi daftar kontak.

Parameter:

  • contact_identifier (wajib): ID kontak atau email
  • name (wajib): Nama peristiwa (cocok dengan pemicu otomatisasi)
  • params (wajib): Objek berisi pasangan kunci/nilai arbitrer. Nilai dapat berupa string, angka, boolean, atau null

list-contact-lists

Mencantumkan semua daftar kontak untuk akun.

Parameter:

  • search (opsional): Filter daftar kontak berdasarkan nama (pencocokan tidak peka huruf besar/kecil), mis. news

get-contact-list

Mendapatkan daftar kontak berdasarkan ID.

Parameter:

  • list_id (wajib): ID daftar kontak yang akan diambil

create-contact-list

Membuat daftar kontak baru.

Parameter:

  • name (wajib): Nama untuk daftar baru

update-contact-list

Mengganti nama daftar kontak yang ada.

Parameter:

  • list_id (wajib): ID daftar kontak
  • name (wajib): Nama baru untuk daftar

delete-contact-list

Menghapus daftar kontak secara permanen berdasarkan ID.

Parameter:

  • list_id (wajib): ID daftar kontak yang akan dihapus

list-contact-fields

Mencantumkan semua definisi kolom kontak untuk akun.

Parameter:

  • Tidak ada parameter yang diperlukan

get-contact-field

Mendapatkan definisi kolom kontak berdasarkan ID.

Parameter:

  • field_id (wajib): ID kolom kontak

create-contact-field

Membuat definisi kolom kontak baru. merge_tag harus unik dalam akun dan digunakan sebagai nama placeholder dalam variabel template.

Parameter:

  • name (wajib): Nama tampilan (mis. "First Name")
  • merge_tag (wajib): Nama placeholder unik (mis. first_name)
  • data_type (wajib): Salah satu dari text, number, boolean, date

update-contact-field

Memperbarui definisi kolom kontak. Kombinasi apa pun dari name, merge_tag, dan data_type dapat diubah.

Parameter:

  • field_id (wajib): ID kolom kontak
  • name (opsional): Nama tampilan baru
  • merge_tag (opsional): Merge tag baru (harus tetap unik)
  • data_type (opsional): Salah satu dari text, number, boolean, date

delete-contact-field

Menghapus definisi kolom kontak secara permanen berdasarkan ID.

Parameter:

  • field_id (wajib): ID kolom kontak yang akan dihapus

create-contact-import

Impor kontak secara massal. Mengembalikan catatan pekerjaan impor; pantau statusnya dengan get-contact-import.

Parameter:

  • contacts (wajib): Array entri kontak. Setiap entri memerlukan:
    • email (wajib): Alamat email kontak
    • fields (opsional): Nilai kolom kustom yang dikunci berdasarkan merge tag (nilai string atau angka)
    • list_ids_included (opsional): ID daftar untuk menambahkan kontak
    • list_ids_excluded (opsional): ID daftar untuk menghapus kontak

get-contact-import

Mendapatkan status pekerjaan impor kontak (created/started/finished/failed) beserta jumlah created/updated/over-limit.

Parameter:

  • import_id (wajib): ID pekerjaan impor kontak

create-contact-export

Mengekspor kontak yang cocok dengan serangkaian filter yang digabungkan dengan AND. Mengembalikan catatan pekerjaan ekspor; pantau status dengan get-contact-export untuk mengambil URL unduhan setelah status menjadi finished.

Parameter:

  • filters (wajib): Array objek filter. Setiap objek memiliki:
    • name (wajib): Kolom yang akan difilter (list_id, subscription_status, email, dll.)
    • operator (wajib): Salah satu dari equal, not_equal, contains, not_contains, is_empty, is_not_empty
    • value (wajib): Nilai perbandingan (string, angka, boolean, atau array)

get-contact-export

Mendapatkan status pekerjaan ekspor kontak. Setelah status menjadi finished, kolom url berisi tautan unduhan CSV.

Parameter:

  • export_id (wajib): ID pekerjaan ekspor kontak

list-accounts

Mencantumkan akun Mailtrap yang dapat diakses oleh token API saat ini, beserta tingkat akses setiap akun.

Parameter:

  • Tidak ada parameter yang diperlukan

get-billing-usage

Mendapatkan penggunaan siklus penagihan saat ini untuk akun: paket pengiriman dan pengujian, batas, dan jumlah saat ini.

Parameter:

  • Tidak ada parameter yang diperlukan

list-account-accesses

Mencantumkan akses akun (pengguna, undangan, token API) untuk akun. Filter opsional mempersempit hasil ke sumber daya tertentu. Memerlukan izin admin/pemilik akun.

Parameter:

  • domain_uuids (opsional): Filter berdasarkan UUID domain pengirim (array string)
  • inbox_ids (opsional): Filter berdasarkan ID kotak masuk sandbox (array string)
  • project_ids (opsional): Filter berdasarkan ID proyek sandbox (array string)

remove-account-access

Menghapus akses akun berdasarkan ID. Untuk penentu User, ini mencabut izinnya; untuk penentu Invite atau ApiToken, ini menghapus penentu tersebut sepenuhnya. Memerlukan admin/pemilik.

Parameter:

  • account_access_id (wajib): ID catatan akses yang akan dihapus

get-permission-resources

Mendapatkan semua sumber daya (kotak masuk, proyek, domain, penagihan, akun) yang memiliki akses admin oleh token API, disusun berdasarkan hierarki.

Parameter:

  • Tidak ada parameter yang diperlukan

bulk-update-permissions

Membuat, memperbarui, atau menghapus izin secara massal untuk satu akses akun. Pasangan (resource_type, resource_id) yang ada diperbarui; yang baru dibuat. Atur destroy: true pada entri untuk menghapusnya.

Parameter:

  • account_access_id (wajib): ID akses akun target
  • permissions (wajib): Array entri izin. Setiap entri memiliki:
    • resource_id (wajib): ID sumber daya (angka atau string)
    • resource_type (wajib): Salah satu dari account, project, inbox, domain, billing
    • access_level (opsional): admin/100 atau viewer/10
    • destroy (opsional, boolean): Jika true, menghapus izin ini alih-alih membuat/memperbaruinya

list-api-tokens

Mencantumkan semua API token untuk akun.

Parameter:

  • Tidak ada parameter yang diperlukan

create-api-token

Membuat API token baru. Respons menyertakan nilai rahasia token — ini adalah satu-satunya saat token lengkap dikembalikan, jadi simpan segera. Jika hilang, buat ulang token tersebut.

Parameter:

  • name (wajib): Nama tampilan untuk token
  • resources (opsional): Array izin sumber daya untuk membatasi cakupan token. Setiap entri memiliki:
    • resource_type (wajib): Salah satu dari account, project, inbox, domain, billing
    • resource_id (wajib): ID sumber daya
    • access_level (wajib): 100 (admin) atau 10 (viewer)

get-api-token

Mendapatkan API token berdasarkan ID. Hanya mengembalikan metadata — nilai token rahasia tidak dikembalikan di sini (hanya dari create-api-token / reset-api-token).

Parameter:

  • api_token_id (wajib): ID API token

reset-api-token

Mereset (memutar) API token berdasarkan ID. Respons menyertakan nilai rahasia token yang baru — hanya dikembalikan pada panggilan ini, jadi simpan segera. Token sebelumnya menjadi tidak berlaku.

Parameter:

  • api_token_id (wajib): ID API token yang akan direset

delete-api-token

Menghapus API token secara permanen berdasarkan ID. Token tidak dapat lagi melakukan autentikasi setelah dihapus.

Parameter:

  • api_token_id (wajib): ID API token yang akan dihapus

list-sub-accounts

Mencantumkan sub-akun dalam organisasi. Memerlukan variabel lingkungan MAILTRAP_ORGANIZATION_ID dan izin pengelolaan sub-akun.

Parameter:

  • Tidak ada parameter yang diperlukan

create-sub-account

Membuat sub-akun baru di bawah organisasi. Memerlukan variabel lingkungan MAILTRAP_ORGANIZATION_ID dan izin pengelolaan sub-akun.

Parameter:

  • name (wajib): Nama tampilan untuk sub-akun baru

list-inbound-folders

Mencantumkan semua folder masuk dalam akun. Mengembalikan ringkasan terformat.

Parameter:

  • Tidak ada parameter yang diperlukan

get-inbound-folder

Mendapatkan satu folder masuk berdasarkan ID. Mengembalikan catatan folder lengkap sebagai JSON.

Parameter:

  • folder_id (wajib): ID folder masuk

create-inbound-folder

Membuat folder masuk baru.

Parameter:

  • name (wajib): Nama folder

update-inbound-folder

Mengganti nama folder masuk.

Parameter:

  • folder_id (wajib): ID folder masuk
  • name (wajib): Nama folder baru

delete-inbound-folder

Menghapus folder masuk secara permanen beserta semua kotak masuknya.

Parameter:

  • folder_id (wajib): ID folder masuk

list-inbound-inboxes

Mencantumkan semua kotak masuk dalam folder masuk. Mengembalikan ringkasan terformat.

Parameter:

  • folder_id (wajib): ID folder masuk

get-inbound-inbox

Mendapatkan satu kotak masuk berdasarkan ID. Mengembalikan catatan kotak masuk lengkap sebagai JSON.

Parameter:

  • folder_id (wajib): ID folder masuk
  • inbox_id (wajib): ID kotak masuk

create-inbound-inbox

Membuat kotak masuk baru dalam sebuah folder.

Parameter:

  • folder_id (wajib): ID folder masuk
  • name (wajib): Nama kotak masuk
  • domain_id (opsional): Lampirkan ke domain pengiriman kustom (kotak masuk catch-all). Kosongkan untuk kotak masuk yang dihosting Mailtrap

update-inbound-inbox

Mengganti nama kotak masuk.

Parameter:

  • folder_id (wajib): ID folder masuk
  • inbox_id (wajib): ID kotak masuk
  • name (wajib): Nama kotak masuk baru

delete-inbound-inbox

Menghapus kotak masuk secara permanen.

Parameter:

  • folder_id (wajib): ID folder masuk
  • inbox_id (wajib): ID kotak masuk

list-inbound-messages

Mencantumkan pesan yang diterima dalam kotak masuk (dipaginasi dengan kursor). Mengembalikan ringkasan terformat dengan petunjuk halaman berikutnya saat ada hasil lainnya.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • last_id (opsional): Kursor paginasi dari last_id respons sebelumnya

get-inbound-message

Mendapatkan satu pesan masuk beserta isi lengkap dan URL unduhan lampiran. Mengembalikan catatan pesan lengkap sebagai JSON.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • message_id (wajib): ID pesan

delete-inbound-message

Menghapus pesan masuk secara permanen.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • message_id (wajib): ID pesan

reply-to-inbound-message

Membalas pesan masuk (dikirim ke pengirim asli). Mengirim email sungguhan. Alamat menerima string email polos atau { email, name? }.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • message_id (wajib): ID pesan yang akan dibalas
  • text / html (setidaknya satu disarankan): Isi balasan
  • from (opsional): Pengirim. Ditolak untuk kotak masuk yang dihosting Mailtrap; wajib untuk kotak masuk domain kustom
  • cc / bcc / reply_to (opsional): Alamat tambahan
  • category (opsional): Kategori pesan
  • attachments (opsional): Array dari { content (base64), filename, type?, disposition?, content_id? }
  • headers / custom_variables (opsional): Objek berisi nilai string

reply-all-to-inbound-message

Membalas pesan masuk dan menyalin penerima lain dari pesan asli. Mengirim email sungguhan. Parameter sama dengan reply-to-inbound-message.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • message_id (wajib): ID pesan yang akan dibalas
  • Ditambah kolom pengiriman opsional yang sama seperti reply-to-inbound-message

forward-inbound-message

Meneruskan pesan masuk ke penerima baru. Mengirim email sungguhan.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • message_id (wajib): ID pesan yang akan diteruskan
  • to (wajib): Setidaknya satu penerima (string email polos atau { email, name? }, atau sebuah array)
  • Ditambah kolom pengiriman opsional yang sama seperti reply-to-inbound-message

list-inbound-threads

Mencantumkan utas percakapan dalam kotak masuk (dipaginasi dengan kursor). Mengembalikan ringkasan terformat dengan petunjuk halaman berikutnya saat ada hasil lainnya.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • last_id (opsional): Kursor paginasi dari last_id respons sebelumnya

get-inbound-thread

Mendapatkan satu utas masuk dengan pesan-pesannya yang disematkan (terlama terlebih dahulu). Mengembalikan catatan utas lengkap sebagai JSON.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • thread_id (wajib): ID utas

delete-inbound-thread

Menghapus utas masuk secara permanen.

Parameter:

  • inbox_id (wajib): ID kotak masuk
  • thread_id (wajib): ID utas

Pengembangan

  1. Klon repositori:
git clone https://github.com/mailtrap/mailtrap-mcp.git
cd mailtrap-mcp
  1. Instal dependensi:
npm install

Konfigurasi dengan Claude Desktop atau Cursor

[!TIP] Lihat lokasi file konfigurasi di bagian Setup.

Tambahkan konfigurasi berikut:

{
  "mcpServers": {
    "mailtrap": {
      "command": "node",
      "args": ["/path/to/mailtrap-mcp/dist/index.js"],
      "env": {
        "MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
        "DEFAULT_FROM_EMAIL": "your_sender@example.com",
        "MAILTRAP_ACCOUNT_ID": "your_account_id",
        "MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
      }
    }
  }
}

Jika Anda menggunakan asdf untuk mengelola Node.js, gunakan jalur absolut ke executable:

(contoh untuk Mac)

{
  "mcpServers": {
    "mailtrap": {
      "command": "/Users/<username>/.asdf/shims/node",
      "args": ["/path/to/mailtrap-mcp/dist/index.js"],
      "env": {
        "PATH": "/Users/<username>/.asdf/shims:/usr/bin:/bin",
        "ASDF_DIR": "/opt/homebrew/opt/asdf/libexec",
        "ASDF_DATA_DIR": "/Users/<username>/.asdf",
        "ASDF_NODEJS_VERSION": "20.6.1",
        "MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
        "DEFAULT_FROM_EMAIL": "your_sender@example.com",
        "MAILTRAP_ACCOUNT_ID": "your_account_id",
        "MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
      }
    }
  }
}

VS Code

[!TIP] Lihat lokasi file konfigurasi di bagian Setup.

{
  "mcp": {
    "servers": {
      "mailtrap": {
        "command": "node",
        "args": ["/path/to/mailtrap-mcp/dist/index.js"],
        "env": {
          "MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
          "DEFAULT_FROM_EMAIL": "your_sender@example.com",
          "MAILTRAP_ACCOUNT_ID": "your_account_id",
          "MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
        }
      }
    }
  }
}

Pengujian

Menjalankan alat terhadap Mailtrap sungguhan

Ada dua cara untuk menguji alat secara end-to-end terhadap akun Mailtrap sungguhan: UI browser MCP Inspector untuk eksplorasi interaktif, atau mode CLI-nya untuk panggilan sekali jalan dari shell.

Keduanya memerlukan bundle yang dibangun terlebih dahulu:

npm run build

dan MAILTRAP_API_TOKEN + MAILTRAP_ACCOUNT_ID diekspor di shell Anda (skrip mcp:cli meneruskan keduanya ke server yang dijalankan).

UI Browser

npm run dev

Inspector mencetak URL seperti http://localhost:6274. Buka URL tersebut, alihkan ke tab Tools, pilih alat (mis. get-template), isi parameter sebagai JSON, lalu tekan Run. Respons Mailtrap muncul di panel bawah.

CLI

Untuk panggilan sekali jalan tanpa UI, gunakan npm run mcp:cli. Teruskan flag CLI Inspector setelah -- agar npm meneruskannya apa adanya:

# List all tools
npm run mcp:cli -- --method tools/list

# Call a tool — flags after the `--`
npm run mcp:cli -- \
  --method tools/call \
  --tool-name get-template \
  --tool-arg template_id=12345

# Multiple --tool-arg flags for tools with several params
npm run mcp:cli -- \
  --method tools/call \
  --tool-name send-sending-domain-setup-instructions \
  --tool-arg sending_domain_id=3938 \
  --tool-arg email=devops@example.com

Menjalankan Server MCPB

# Run the MCPB server directly
node dist/mcpb-server.js

# Or use the provided binary
mailtrap-mcpb-server

[!TIP] Untuk pengembangan dengan MCP Inspector:

npm run dev:mcpb

Penanganan Kesalahan

Server ini menggunakan penanganan kesalahan terstruktur yang selaras dengan konvensi MCP:

  • VALIDATION_ERROR: Kegagalan validasi input
  • CONFIGURATION_ERROR: Konfigurasi hilang atau tidak valid
  • EXECUTION_ERROR: Kesalahan eksekusi runtime
  • TIMEOUT: Waktu operasi habis (default 30 detik)

Kesalahan menyertakan pesan yang dapat ditindaklanjuti dan dicatat dalam bentuk terstruktur.

Keamanan

  • Input divalidasi melalui skema Zod
  • Variabel lingkungan ditangani dengan aman
  • Perlindungan waktu habis pada operasi (30 detik)
  • Detail sensitif dibersihkan pada keluaran kesalahan

Pencatatan Log

Log JSON terstruktur dengan level: INFO, WARN, ERROR, DEBUG.

Aktifkan pencatatan log debug dengan mengatur DEBUG=true.

# Example: enable debug logging
DEBUG=true node dist/mcpb-server.js

Penting: Server menulis log ke stderr sehingga stdout tetap dicadangkan untuk frame JSON-RPC. Ini mencegah host mengalami kesalahan penguraian JSON akibat log yang tercampur.

Contoh analisis log menggunakan jq:

# Filter error logs
node dist/mcpb-server.js 2>&1 | jq 'select(.level == "error")'

# Filter debug logs
node dist/mcpb-server.js 2>&1 | jq 'select(.level == "debug")'

Pemecahan Masalah

Masalah umum:

  1. API Token hilang: pastikan MAILTRAP_API_TOKEN diatur
  2. Sandbox tidak berfungsi: berikan test_inbox_id dalam panggilan alat atau atur env MAILTRAP_TEST_INBOX_ID
  3. Kesalahan waktu habis: periksa konektivitas jaringan dan status API Mailtrap
  4. Kesalahan validasi: pastikan semua kolom wajib diisi

Kontribusi

Laporan bug dan pull request dipersilakan di GitHub. Proyek ini dimaksudkan sebagai ruang kolaborasi yang aman dan ramah, dan kontributor diharapkan mematuhi kode etik.

Lisensi

Paket ini tersedia sebagai sumber terbuka berdasarkan ketentuan Lisensi MIT.

Kode Etik

Semua orang yang berinteraksi dalam codebase, pelacak masalah, ruang obrolan, dan milis proyek Mailtrap diharapkan mengikuti kode etik.