eSIMfly MCP について
eSIMfly MCPは、AIクライアントをeSIMfly Business APIに接続し、プラン検索、アカウントや利用状況の確認、接続診断を行うMCPサーバーです。標準では読み取り専用で、書き込み操作はプレビュー後に明示的な確認が必要です。
主な機能
- 01eSIMプランと卸価格の検索
- 02残高・利用状況・注文履歴の確認
- 03リアルタイム状態とネットワークイベントの確認
- 04接続問題の診断
- 05確認を伴う注文・アカウント操作
- 06連携・診断用プロンプト
活用シーン
- 01渡航先と費用でプランを比較
- 02残りデータ量の少ないeSIMを特定
- 03データ通信できないeSIMを調査
- 04購入やチャージをプレビューして確定
MCP 対応
eSIMfly Business APIの操作とプロンプトをMCPクライアントに提供します。ホスト型リモートサーバーまたはローカルのstdioで動作し、書き込みツールは明示的な有効化と確認が必要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.esimfly.net/mcpclaude mcp add --transport http esimfly https://mcp.esimfly.net/mcp{"mcpServers":{"esimfly":{"type":"http","url":"https://mcp.esimfly.net/mcp"}}}Cursor で開く{"servers":{"esimfly":{"type":"http","url":"https://mcp.esimfly.net/mcp"}}}VS Code で開く{"mcpServers":{"esimfly":{"type":"http","url":"https://mcp.esimfly.net/mcp"}}}{"mcpServers":{"esimfly":{"serverUrl":"https://mcp.esimfly.net/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
@esimfly/mcp — eSIMfly MCP サーバー
AI アシスタントから eSIMfly Business API を直接利用できます。この Model Context Protocol サーバーを使うと、Claude、Cursor、ChatGPT などの MCP クライアントで、卸売価格での eSIM プランの検索、残高と利用状況の確認、リアルタイムのネットワークデータに基づく 「データ通信なし」の問題の診断ができます。有効にした場合は、明示的な確認手順を経て注文やトップアップも行えます。
- デフォルトでは読み取り専用です。 オプトインしない限り、残高が消費されることはありません。
- 書き込みは2段階です。 すべての書き込みツールは、
confirm: trueを指定して呼び出すまで、プレビュー(内容、費用、残高)を返します。 - 公式の
@esimfly/sdkを基盤としています — 署名、再試行、エラーコードを処理します。 - 2つのプロンプトを提供します。完全な統合ガイドと、eSIM の診断ワークフローです。
ドキュメント:https://docs.esimfly.net · 認証情報:Business Dashboard → Settings → API Keys。
ホステッドサーバー(インストール不要)
ローカルで何も実行したくない場合は、eSIMfly が同じサーバーを https://mcp.esimfly.net/mcp でホストしています。
Claude.ai、ChatGPT、Claude Code(claude mcp add --transport http esimfly https://mcp.esimfly.net/mcp)、
Cursor、または VS Code にリモート MCP サーバーとして追加し、eSIMfly のビジネスアカウントでサインインしてください。OAuth 2.1 を使用するため、キーを貼り付ける必要はありません。書き込み
ツールは同意画面でオプトインします。詳細:https://docs.esimfly.net/docs/mcp-server
ローカルインストール
サーバーは stdio 経由でローカルに実行され、API キーがマシンの外に出ることはありません。
Claude Desktop
claude_desktop_config.json → mcpServers:
{
"mcpServers": {
"esimfly": {
"command": "npx",
"args": ["-y", "@esimfly/mcp"],
"env": {
"ESIMFLY_ACCESS_CODE": "esf_...",
"ESIMFLY_SECRET_KEY": "sk_..."
}
}
}
}
Claude Code
claude mcp add esimfly -e ESIMFLY_ACCESS_CODE=esf_... -e ESIMFLY_SECRET_KEY=sk_... -- npx -y @esimfly/mcp
Cursor / Windsurf / その他の MCP クライアント
.cursor/mcp.json(またはクライアントに相当する設定ファイル):
{
"mcpServers": {
"esimfly": {
"command": "npx",
"args": ["-y", "@esimfly/mcp"],
"env": { "ESIMFLY_ACCESS_CODE": "esf_...", "ESIMFLY_SECRET_KEY": "sk_..." }
}
}
}
Docker
docker build -t esimfly-mcp .
docker run -i --rm -e ESIMFLY_ACCESS_CODE=esf_... -e ESIMFLY_SECRET_KEY=sk_... esimfly-mcp
書き込みツールを有効にする
env に "ESIMFLY_MCP_ALLOW_WRITES": "true" を追加します。設定しない場合、注文、トップアップ、キャンセル、
一時停止、SMS、Webhook のツールは登録すらされません。
試してみる
- 「トルコで最も安い 5 GB のプランを探して、€9.99 での利益率を教えてください。」
- 「私の eSIM のうち、アクティブで残り 200 MB 未満のものはどれですか?」
- 「ICCID 8948010010036785060 でデータ通信ができません。診断してください。」(
diagnose_esimプロンプトを使用) - 「https://my.app/hooks で、インストール済み/ステータス/データ残量低下のイベント用に Webhook を設定してください。」(書き込みツール。最初にプレビューを表示)
- 「Node.js の統合を作ってください。」(
esimfly_integration_guideプロンプトを使用)
ツール
| ツール | 機能 | モード |
|---|---|---|
search_packages | 仕入れ価格で渡航先/種類別にカタログを検索します | 読み取り |
get_balance | アカウント(または法人アカウント)の残高を取得します | 読み取り |
list_esims | ステータス、残りデータ量、有効期間を含むお使いの eSIM を一覧表示します | 読み取り |
get_esim_usage | 1 枚の eSIM の保存済み使用量を取得します(低コスト) | 読み取り |
get_esim_live_status | ネットワークからリアルタイムのステータスを取得します:インストール状態、直近のネットワーク、デバイス、使用量 | 読み取り(高コスト) |
get_network_events | 過去 7 日間の接続/データセッションイベントと誤ったネットワークのフラグを取得します | 読み取り |
get_usage_report | 国と通信事業者別の日次使用量を取得します(最大 90 日間) | 読み取り |
list_orders / get_order | 注文履歴、および eSIM を含む 1 件の注文を取得します | 読み取り |
get_topup_packages | 1 枚の eSIM で利用できるデータ追加オプションを取得します | 読み取り |
get_webhook_settings | Webhook URL、イベント、最近の配信を取得します | 読み取り |
create_order | eSIM を購入します — プレビュー後、confirm: true と冪等性キーを指定します | 書き込み |
topup_esim | eSIM にデータを追加します — プレビューにパッケージと料金が表示されます | 書き込み |
cancel_esim | 未使用の eSIM をキャンセルし、残高に返金します | 書き込み(破壊的) |
suspend_esim / activate_esim | ネットワークアクセスをブロック/復元します | 書き込み |
send_sms | eSIM を利用しているデバイスにテキストメッセージを送信します | 書き込み |
set_webhook | Webhook URL とイベントを設定します | 書き込み |
プロンプト:esimfly_integration_guide(stack は任意)、diagnose_esim(iccid)。
安全性モデル
ESIMFLY_MCP_ALLOW_WRITES=trueが設定されていない限り、読み取り専用です。- 書き込みツールは 2 段階方式です。
confirmを指定せずに呼び出すとプレビューを返し、変更を伴う API 呼び出しは行いません。create_orderではさらに、独自のプレビューから取得したidempotency_keyが必要となるため、エージェントが同じ注文を 2 回行うことはありません。 - ツールのアノテーションでは、読み取りに
readOnlyHint、キャンセル/停止にdestructiveHintが設定されているため、リスクの高いツールでユーザー承認を求めるホストでは、そのように動作します。 - サーバーは認証情報を記録せず、MCP プロトコル以外の内容を標準出力に書き込みません。
- エージェントには、許容できる範囲で最小のレート制限を設定した専用 API キーを付与してください。不安がある場合は、ダッシュボードからキーをローテーションしてください。
設定
| 変数 | 必須 | 説明 |
|---|---|---|
ESIMFLY_ACCESS_CODE | はい | API アクセスコード(esf_…) |
ESIMFLY_SECRET_KEY | はい | API シークレットキー(sk_…) |
ESIMFLY_MCP_ALLOW_WRITES | いいえ | 書き込みツールを登録するには true を指定します |
ESIMFLY_BASE_URL | いいえ | API ベース URL を上書きします |
埋め込み
import { createEsimflyMcpServer } from '@esimfly/mcp';
const server = createEsimflyMcpServer({ config: { accessCode, secretKey }, allowWrites: false });
// connect it to any MCP transport
リリース(メンテナー向け)
package.json と server.json の version、および src/server.ts の MCP_VERSION を更新し、CHANGELOG エントリを追加してプッシュします。その後、vX.Y.Z タグを付けた GitHub Release を公開します。ワークフローによって Trusted Publishing(OIDC)で npm に公開され、その後 MCP Registry のエントリも自動的に再公開されます(GitHub OIDC を使用し、トークンは不要です)。
サポート
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。