Mektup-mcp について
Mektup-mcpはMektupのメールプラットフォームを操作するMCPサーバーです。AIエージェントや対応クライアント向けにREST APIの各機能をツール化し、リモートHTTPとローカルstdioで利用できます。
主な機能
- 01ドメイン登録とDNSレコード取得
- 02メールボックスの作成と管理
- 03メール送受信とスレッド管理
- 04下書き、連絡先、フォルダーの管理
- 05転送、自動返信、Webhookの設定
活用シーン
- 01エージェント用の独自ドメインメール設定
- 02受信トレイの確認とスレッド処理
- 03下書きの作成とメール送信
- 04受信メールのWebhook通知設定
MCP 対応
Mektup REST APIに対応するツールを提供し、ドメイン、メールボックス、メール、アカウント設定を操作できます。リモートのStreamable HTTPとローカルstdioに対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.usemektup.com/mcpclaude mcp add --transport http mektup https://mcp.usemektup.com/mcp{"mcpServers":{"mektup":{"type":"http","url":"https://mcp.usemektup.com/mcp"}}}Cursor で開く{"servers":{"mektup":{"type":"http","url":"https://mcp.usemektup.com/mcp"}}}VS Code で開く{"mcpServers":{"mektup":{"type":"http","url":"https://mcp.usemektup.com/mcp"}}}{"mcpServers":{"mektup":{"serverUrl":"https://mcp.usemektup.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.usemektup.com/mcp認証が必要ツール
詳細
Mektup MCP サーバー
Mektup は、完全マネージド型のマルチドメイン対応メールプラットフォームです。メールインフラはすべて Mektup がホストするため、セルフホストする必要はありません。サインアップするだけですぐに利用できます。この MCP サーバーを使うと、AI コーディングエージェント(Claude Code、Claude Desktop、Cursor、Lovable、Replit、Base44、または MCP 対応クライアント)が、ドメインの登録、DNS レコードの追加、メールボックスの作成、メールの送受信、下書き/連絡先/フォルダー/転送/休暇中の自動返信の管理など、実際のメールを管理できます。人間が curl コマンドを手書きしたり、生成されたコードに API キーを貼り付けたりする代わりに、エージェント自身のセッション内でネイティブなツール呼び出しとして操作できます。
すべてのツール呼び出しは、実際の Mektup REST API への直接的な HTTP リクエストです。別途覚える必要があるロジックはありません。API を理解していれば、MCP サーバーも理解できます。完全なカバレッジ:すべての REST エンドポイントに対応するツールがあり、本番環境で稼働中の API に対する読み取りと書き込みの実際の一連の操作(作成 → 更新 → 一覧表示 → 削除)を各ステップで確認済みです。
実行方法は 2 通りありますが、どちらも同じツールセットを使います(lib/build-server.js でツールを一度定義し、両方で共有します)。
- リモート(Streamable HTTP) —
https://mcp.usemektup.com/mcpでホストされているサーバーです。「カスタム MCP サーバー」の URL を指定できるクライアントなら、インストールせずに直接接続できます。Lovable/Cursor/Replit/Base44 などのプラットフォームでは、こちらを使用します。 - ローカル(stdio) — 環境変数にキーを設定して、
server.jsを自分で実行します。ローカルプロセスの起動のみをサポートする MCP クライアント(Claude Desktop の設定など)向けです。
リモートサーバー(プラットフォーム統合に推奨)
エンドポイント: https://mcp.usemektup.com/mcp(Streamable HTTP — 仕様で定められた直接 JSON 応答と SSE ストリーミング応答の両モードをサポートします)。
ステートレス: リクエスト間でセッションは保持されません。各ツール呼び出しは REST API への単発のパススルーであり、保持する価値のあるセッション状態がないためです。
テナント分離: 内部で動作しているのは REST API そのものであるため、REST API と同じです。サーバー自体はアカウント固有の認証情報を保持せず、呼び出し元が送信したトークン(API キーまたは OAuth アクセストークン。詳細は後述)をそのまま api.usemektup.com に転送するだけです。トークンを検証するのはこの API のみです。トークンからアクセスできるのは、そのトークン自身のアカウントのデータだけです。
認証モードは 2 種類あり、同じエンドポイントで利用できます。どちらも同じ Authorization: Bearer <token> ヘッダーで送信されます。
OAuth(プラットフォーム統合に推奨)
実際のエンドユーザーがいるプラットフォーム(Lovable、Cursor、Replit、Base44 など)では、ユーザーが「接続」をクリックし、既存の Mektup アカウントでサインインして承認すれば完了です。トークンのコピー&ペーストや、ダッシュボードへのアクセスは不要です。
Clerk(clerk.usemektup.com)は OAuth 2.1 認可サーバーです。この MCP サーバーは常にリソースサーバーとしてのみ動作します。仕様に準拠した OAuth 対応 MCP クライアントなら、検出は自動で行われます。必要なのは上記のエンドポイント URL だけで、https://mcp.usemektup.com/.well-known/oauth-protected-resource/mcp(RFC 9728)を通じて残りの情報を自動で取得します。この URL は Clerk 独自の https://clerk.usemektup.com/.well-known/oauth-authorization-server(RFC 8414)を指しています。そこからクライアントは Dynamic Client Registration により自身を登録し(利用者側での手動設定は不要です)、標準の Authorization Code + PKCE フローを実行します。最後に取得する JWT アクセストークンは、API キーとまったく同じように使用できます。
Lovable: Connectors → All → Custom(MCP カード)→ Server Name Mektup、Server URL https://mcp.usemektup.com/mcp、Auth → OAuth(サーバーが OAuth をサポートしている場合のデフォルト)→ Add & authorize。
API キー(単一アカウント、スクリプト、OAuth に対応していないクライアントに最適な最も簡単な方法)
Authorization: Bearer mek_live_... — app.usemektup.com → API keys で作成します。
カスタム MCP コネクターに対応したクライアントへの追加は、通常 3 つのフィールドを入力するだけです。
| フィールド | 値 |
|---|---|
| サーバー URL | https://mcp.usemektup.com/mcp |
| 認証タイプ | Bearer トークン/API キー |
| トークン | お使いの mek_live_... キー |
Cursor / Claude Desktop / MCP JSON 設定をそのまま読み込むクライアント:
{
"mcpServers": {
"mektup": {
"url": "https://mcp.usemektup.com/mcp",
"headers": { "Authorization": "Bearer mek_live_..." }
}
}
}
Replit / Base44 / その他の「ツールを接続」するフロー: 上の表と同じ 3 つのフィールド(サーバー URL、Bearer 認証、キー)を入力します。
ローカル(stdio)でのセットアップ
クライアントがリモート URL を呼び出せず、ローカルプロセスしか起動できない場合に使用します。
1. API キーを取得します。 app.usemektup.com のダッシュボードにサインインし、API keys を開いてキーを作成します。キーは mek_live_... の形式で、表示されるのは一度だけです。すぐにコピーしてください。
2. 依存関係をインストールします:
git clone https://github.com/WeeCi/mektup-mcp.git
cd mektup-mcp
npm install
3. MCP クライアントを設定し、キーを環境変数として指定して server.js を実行します。Claude Desktop / Claude Code の場合は、MCP 設定(例:claude_desktop_config.json)に追加します。
{
"mcpServers": {
"mektup": {
"command": "node",
"args": ["/absolute/path/to/mektup-mcp/server.js"],
"env": {
"MEKTUP_API_KEY": "mek_live_..."
}
}
}
}
MEKTUP_API_BASE_URL は省略可能で、デフォルトは https://api.usemektup.com です。通常の使用では設定する必要はありません。
MEKTUP_API_KEY が設定されていない場合、サーバーは起動を拒否します。
ツールの応答
すべてのツールは、成功時に結果を JSON テキストとして返します。失敗時は isError: true と Error: <message> を返します。メッセージは、基盤となる REST エンドポイントから返されたものと同じです(エンドポイントごとの請求上限に関する 402 を含む正確なエラー条件については、API リファレンスを参照してください)。
ツール
アカウント
| ツール | 入力 | 説明 |
|---|---|---|
get_me | — | 認証済みアカウントの識別情報を取得します。認証が正常に機能しているか確認するのに便利です。 |
get_usage | — | 現在の請求プラン、その上限、および上限に対する実際の使用量を取得します。一括操作の前に確認してください。 |
API キー
| ツール | 入力 | 説明 |
|---|---|---|
list_api_keys | — | このアカウントのキーを一覧表示します(プレフィックスとステータスのみ)。 |
create_api_key | — | 新しいキーを作成します。キー全体が返されるのは一度だけです。ユーザーが保存できるよう、すぐに提示してください。 |
revoke_api_key | id | キーをただちに無効化します。取り消しはできません。特に、このセッションで使用中のキーである可能性がある場合は、先にユーザーに確認してください。 |
ドメイン
| ツール | 入力 | 説明 |
|---|---|---|
create_domain | domain | ドメインを登録し、正確な DNS レコード(MX/SPF/DMARC/DKIM)とセットアップの推奨事項を取得します。DNS 自体には一切変更を加えません。 |
list_domains | — | このアカウントのすべてのドメインを一覧表示します。 |
get_domain_records | domain | 登録後いつでも、ドメインの DNS レコードを再取得します。 |
verify_domain | domain | ライブ DNS を再チェックし、一致すると検証済みに更新します。自動では実行されません。 |
delete_domain | domain | ドメインと、その配下にあるすべてのものを削除します。元に戻せないため、先にユーザーに確認してください。 |
メールボックス
| ツール | 入力 | 説明 |
|---|---|---|
create_mailbox | domain、localPart、password? | 実際に使用できる IMAP/SMTP-AUTH 認証情報を備えたメールボックスを作成します。任意のメールクライアントで使用できます。 |
list_mailboxes | domain | ドメイン上のメールボックスを一覧表示します。 |
reset_mailbox_password | domain、localPart、password? | メールボックスのログインパスワードをリセットします。表示されるのは一度だけです。 |
delete_mailbox | domain、localPart | メールボックスを削除します。先にユーザーに確認してください。 |
Webhooks
| ツール | 入力 | 説明 |
|---|---|---|
get_mailbox_webhook | domain, localPart | メールボックスに設定されている Webhook URL を確認します(署名シークレットは返しません)。 |
set_mailbox_webhook | domain, localPart, url, regenerateSecret? | 新しい受信メッセージが届くたびに実行される(HMAC 署名付き)URL を設定または更新します。これにより、エージェントは list_messages をポーリングせずに新着メールを把握できます。署名シークレットは初回設定時またはローテーション時に一度だけ返されます。 |
delete_mailbox_webhook | domain, localPart | メールボックスの Webhook を削除します。 |
転送
| ツール | 入力 | 説明 |
|---|---|---|
list_forwards | domain, localPart | 受信メールのコピーが届くアドレスを一覧表示します。 |
add_forward | domain, localPart, forwardTo | 転送先アドレスを追加します。 |
remove_forward | domain, localPart, id | 転送先アドレスを削除します。 |
ID 情報
| ツール | 入力 | 説明 |
|---|---|---|
get_identity | domain, localPart | 表示名と署名を取得します。 |
set_identity | domain, localPart, displayName?, signatureText?, signatureHtml? | 表示名と署名を設定します。送信メールに自動的に適用されます。 |
休暇/自動返信
| ツール | 入力 | 説明 |
|---|---|---|
get_vacation | domain, localPart | 休暇中の自動返信設定を取得します。 |
set_vacation | domain, localPart, enabled, subject?, message? | 自動返信を有効化/設定します。有効化する場合は message が必須です。 |
フォルダー
| ツール | 入力 | 説明 |
|---|---|---|
list_folders | domain, localPart | カスタムフォルダーを一覧表示します。 |
create_folder | domain, localPart, name | フォルダーを作成します。 |
delete_folder | domain, localPart, id | フォルダーを削除します(中のメールは受信トレイ/送信済みに戻ります)。 |
連絡先
アカウント単位で、メールボックスごとの設定ではありません。
| ツール | 入力 | 説明 |
|---|---|---|
list_contacts | — | 連絡先を一覧表示します。 |
create_contact | name?, email | 連絡先を追加します。 |
update_contact | id, name?, email? | 部分更新します。変更するフィールドのみ指定してください。 |
delete_contact | id | 連絡先を削除します。 |
下書き
| ツール | 入力 | 説明 |
|---|---|---|
list_drafts | domain, localPart | 下書きを一覧表示します(メタデータのみ)。 |
get_draft | domain, localPart, id | 本文を含む下書きを取得します。 |
create_draft | domain, localPart, to?, subject?, text?, html? | 下書きを作成します。 |
update_draft | domain, localPart, id, to?, subject?, text?, html? | 部分更新します(自動保存に適しています)。 |
delete_draft | domain, localPart, id | 下書きを削除します。 |
送信
| ツール | 入力 | 説明 |
|---|---|---|
send_email | from, to, subject, text?, html?, attachments?, draftId? | メールを実際に送信します。from はこのアカウントのメールボックス、またはこのアカウントが認証済みのドメイン上の任意のアドレスである必要があります。添付ファイルは {filename, contentType?, contentBase64} の形式で、デコード後のサイズはそれぞれ最大 10MB です。送信が成功したときに下書きを削除するには、draftId を指定します。 |
例:
send_email({ from: "[email protected]", to: "[email protected]", subject: "It works", text: "Real mail, sent through Mektup." })
→ { "messageId": "<[email protected]>", "envelope": { "from": "[email protected]", "to": ["[email protected]"] } }
メッセージとスレッド
| ツール | 入力 | 説明 |
|---|---|---|
list_messages | mailbox, limit?, direction?, trash?, folder?, q? | メッセージを一覧表示します(スレッドごとに1行)。受信トレイと送信済みを分けるには、direction を指定します。省略すると両方が統合されます。 |
get_delivery_stats | mailbox, days? | Mektup 独自の Postfix 配信ログを基に、メールボックスから送信されたメールの送信済み/保留中/バウンス/不明の件数を集計します。トラッキングピクセルは使用しません。 |
get_thread | threadKey, mailbox, direction?, trash?, folder? | 1つのスレッド内のすべてのメッセージを、古い順に取得します。 |
get_message | id | メッセージの全内容を取得します。副作用として既読になります。html は攻撃者が制御できるため、直接レンダリングしないでください。 |
update_message | id, read?, restore?, flagged?, folderId? | 既読/未読への変更、ゴミ箱からの復元、フラグ付け、フォルダーへの移動を、1回の呼び出しで任意に組み合わせて行います。 |
delete_message | id | 2段階で削除します。最初の呼び出しでゴミ箱に移動し、すでにゴミ箱にあるメッセージに対する2回目の呼び出しで完全に削除します。完全削除の前に確認してください。 |
download_attachment | id, index | 添付ファイルを1つダウンロードし、Base64 でエンコードします。実際のファイル内容が必要な場合にのみ使用してください。get_message の添付ファイル一覧には、ファイル名/種類/サイズがすでに含まれています。 |
アカウント全体
| ツール | 入力 | 説明 |
|---|---|---|
get_unread_counts | — | すべてのドメイン/メールボックスの受信トレイにある未読件数を一度に取得します。 |
関連項目
- REST API リファレンス全文 — このサーバーがラップするすべての機能
- OpenAPI 3.1 仕様 — 同じ API の機械可読版
- usemektup.com — アカウント登録、ダッシュボード、料金
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。