Skip to main content
Glama

@esimfly/mcp — eSIMfly MCP server

eSimfly-Official/esimfly-mcp MCP server npm CI M8ven Score

Give your AI assistant hands on the eSIMfly Business API. With this Model Context Protocol server, Claude, Cursor, ChatGPT and other MCP clients can search eSIM plans with your wholesale prices, check balances and usage, diagnose "no data" problems from live network data — and, if you enable it, place orders and top-ups with an explicit confirmation step.

  • Read-only by default. Nothing can spend your balance unless you opt in.

  • Two-step writes. Every write tool returns a preview (what, cost, balance) until called with confirm: true.

  • Built on the official @esimfly/sdk — signing, retries and error codes handled.

  • Ships two prompts: the complete integration guide and an eSIM diagnosis workflow.

Docs: https://docs.esimfly.net · Credentials: Business Dashboard → Settings → API Keys.

Hosted server (no install)

Prefer not to run anything locally? eSIMfly hosts this same server at https://mcp.esimfly.net/mcp. Add it as a remote MCP server in Claude.ai, ChatGPT, Claude Code (claude mcp add --transport http esimfly https://mcp.esimfly.net/mcp), Cursor or VS Code and sign in with your eSIMfly business account — OAuth 2.1, no keys to paste, write tools opt-in on the consent screen. Details: https://docs.esimfly.net/docs/mcp-server

Related MCP server: mcp-esim

Local install

The server runs locally over stdio; your API key never leaves your machine.

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 / other MCP clients

.cursor/mcp.json (or the client's equivalent):

{
  "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

Enable write tools

Add "ESIMFLY_MCP_ALLOW_WRITES": "true" to env. Without it the ordering, top-up, cancel, suspend, SMS and webhook tools are not even registered.

Try it

  • "Find the cheapest 5 GB plan for Turkey and tell me my margin at €9.99."

  • "Which of my eSIMs are active and below 200 MB?"

  • "ICCID 8948010010036785060 says no data — diagnose it." (uses the diagnose_esim prompt)

  • "Set up webhooks for installed / status / low-data events at https://my.app/hooks." (write tool, previews first)

  • "Build me a Node.js integration." (uses the esimfly_integration_guide prompt)

Tools

Tool

What it does

Mode

search_packages

Catalogue search by destination / type with your cost price

read

get_balance

Account (or enterprise) balance

read

list_esims

Your eSIMs with status, data left, validity

read

get_esim_usage

Stored usage for one eSIM (cheap)

read

get_esim_live_status

Live status from the network: install state, last network, device, usage

read (expensive)

get_network_events

Last 7 days of attach / data-session events, wrong-network flag

read

get_usage_report

Daily usage by country and operator (up to 90 days)

read

list_orders / get_order

Order history and one order with its eSIM

read

get_topup_packages

Top-up options for one eSIM

read

get_webhook_settings

Webhook URL, events, recent deliveries

read

create_order

Buy eSIMs — preview → confirm: true + idempotency key

write

topup_esim

Add data to an eSIM — preview shows package and cost

write

cancel_esim

Cancel an unused eSIM and refund to balance

write (destructive)

suspend_esim / activate_esim

Block / restore network access

write

send_sms

Text the device holding the eSIM

write

set_webhook

Configure webhook URL and events

write

Prompts: esimfly_integration_guide (optional stack), diagnose_esim (iccid).

Safety model

  • Read-only unless ESIMFLY_MCP_ALLOW_WRITES=true.

  • Write tools are two-step: a call without confirm returns a preview and makes no mutable API call; create_order additionally requires the idempotency_key from its own preview, so an agent cannot place the same order twice.

  • Tool annotations mark reads as readOnlyHint and cancel/suspend as destructiveHint, so hosts that ask for user approval on risky tools do so.

  • The server never logs credentials and never writes to stdout except the MCP protocol.

  • Give the agent a dedicated API key with the smallest rate limits you are comfortable with, and rotate it from the dashboard if in doubt.

Configuration

Variable

Required

Description

ESIMFLY_ACCESS_CODE

yes

API access code (esf_…)

ESIMFLY_SECRET_KEY

yes

API secret key (sk_…)

ESIMFLY_MCP_ALLOW_WRITES

no

true to register write tools

ESIMFLY_BASE_URL

no

Override the API base URL

Embedding

import { createEsimflyMcpServer } from '@esimfly/mcp';
const server = createEsimflyMcpServer({ config: { accessCode, secretKey }, allowWrites: false });
// connect it to any MCP transport

Releasing (maintainers)

Bump version in package.json, server.json and MCP_VERSION in src/server.ts, add a CHANGELOG entry, push, then publish a GitHub Release tagged vX.Y.Z — the workflow publishes to npm with Trusted Publishing (OIDC), and the MCP Registry entry is republished automatically afterwards (GitHub OIDC, no tokens).

Support

support@esimfly.net · https://docs.esimfly.net

Available Tools

11 tools
get_balanceGet account balanceA
Read-onlyIdempotent
Inspect

Current prepaid balance (or enterprise balance) and currency.

Inputs: no named parameters.

get_esim_live_statusGet live eSIM status (network query)A
Read-onlyIdempotent
Inspect

LIVE status straight from the mobile network: lifecycle status, profile install state, last network (operator, country, MCC/MNC, 4G/5G), device model and IMEI, activation and last-usage dates, data used. Expensive — use for diagnosis ("no data", "is it installed?"), not routinely.

Inputs: iccid (required).

get_esim_usageGet eSIM usageA
Read-onlyIdempotent
Inspect

Stored data usage and validity for one eSIM (cheap; fresh as of the last sync). Identify by ICCID or order reference.

Inputs: iccid, order_reference.

get_network_eventsGet network events (last 7 days)A
Read-onlyIdempotent
Inspect

Attach and data-session events for one eSIM, newest first, each flagged is_allowed. wrong_network_count > 0 means the device latched onto a network outside the plan — the usual cause of "connected but no data" (fix: airplane-mode toggle or manual network selection).

Inputs: iccid (required).

get_orderGet orderA
Read-onlyIdempotent
Inspect

One order by reference, including its eSIM (ICCID, install links, pending state).

Inputs: order_reference (required).

get_topup_packagesGet top-up packages for an eSIMB
Read-onlyIdempotent
Inspect

Top-up options for ONE eSIM (they depend on its provider and location), with your price. Returns ESIM_NOT_TOPPABLE when the eSIM state does not allow top-ups.

Inputs: iccid (required), limit.

get_usage_reportGet daily usage reportA
Read-onlyIdempotent
Inspect

Daily data usage for one eSIM over the last N days (default 7, max 90) with per-country and per-operator breakdown.

Inputs: iccid (required), days.

get_webhook_settingsGet webhook settingsB
Read-onlyIdempotent
Inspect

Configured webhook URL, subscribed events, available events and the last deliveries.

Inputs: no named parameters.

list_esimsList eSIMsB
Read-onlyIdempotent
Inspect

eSIMs on the account with status, data left and validity. Search by ICCID, package name or code; filter by status.

Inputs: page, limit, search, status.

list_ordersList ordersB
Read-onlyIdempotent
Inspect

Order history with filters (status, date range ISO 8601, search by reference / package) and a revenue summary.

Inputs: page, limit, search, status, +2 more.

search_packagesSearch eSIM packagesA
Read-onlyIdempotent
Inspect

Find eSIM data packages you can sell, with your wholesale price. Filter by destination name (search), type (local / regional / global) and page. Returns compact rows; use limit up to 100.

Inputs: page, type, limit, search.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 11 tools

    Disambiguation4/5

    Tools are mostly distinct by resource and action. The main potential confusion is among usage-related tools (get_esim_usage, get_esim_live_status, get_usage_report), but their descriptions clearly differentiate stored summary, live network diagnosis, and daily reporting.

    Naming Consistency5/5

    All tools use consistent snake_case with predictable verb_noun patterns: get_*, list_*, search_*. The convention is uniform throughout the set.

    Tool Count5/5

    11 tools is well-scoped for an eSIM reseller management server. Each tool maps to a useful query or monitoring operation without excessive redundancy.

    Completeness3/5

    The server covers read/monitoring well: packages, top-ups, eSIMs, usage, orders, balance, and webhook settings. However, it lacks any write/mutation operations such as creating orders, purchasing top-ups, configuring webhooks, or activating eSIMs, which are notable gaps for the domain.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Search and buy travel eSIMs for 200+ countries, with specialized China plans that deliver uncensored internet without a VPN. Exposes five read-only tools to search plans, check device eSIM compatibility, get plan details, get help, and generate a secure on-site checkout link.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to search, quote, and buy prepaid travel eSIM data plans within a human-set spending mandate and prepaid wallet, returning activation codes and verifiable signed receipts. Agents can also check machine-readable policies, manage post-sale actions like refunds and status, and operate without ever accessing card details or exceeding their limits.
      MIT