# esimfly-mcp

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/eSimfly-Official/esimfly-mcp  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/esimfly-mcp

## Description
eSIMfly Business API: search eSIM plans, check usage, diagnose eSIMs, optionally order (confirmed)

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "esimfly-mcp": {
    "command": "npx",
    "args": ["-y","esimfly-mcp"]
  }
}
```

## Documentation & README

# @esimfly/mcp — eSIMfly MCP server

[![eSimfly-Official/esimfly-mcp MCP server](https://glama.ai/mcp/servers/eSimfly-Official/esimfly-mcp/badges/score.svg)](https://glama.ai/mcp/servers/eSimfly-Official/esimfly-mcp) [![npm](https://img.shields.io/npm/v/%40esimfly%2Fmcp)](https://www.npmjs.com/package/@esimfly/mcp) [![CI](https://github.com/eSimfly-Official/esimfly-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/eSimfly-Official/esimfly-mcp/actions/workflows/ci.yml) [![smithery badge](https://smithery.ai/badge/akam19901205/esimfly)](https://smithery.ai/servers/akam19901205/esimfly) [![M8ven Score](https://m8ven.ai/badge/mcp/esimfly-official-esimfly-mcp-g0wt3p)](https://m8ven.ai/mcp/esimfly-official-esimfly-mcp-g0wt3p)

Give your AI assistant hands on the eSIMfly Business API. With this
[Model Context Protocol](https://modelcontextprotocol.io) 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`](https://www.npmjs.com/package/@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

## Local install

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

### Claude Desktop

`claude_desktop_config.json` → `mcpServers`:

```json
{
  "mcpServers": {
    "esimfly": {
      "command": "npx",
      "args": ["-y", "@esimfly/mcp"],
      "env": {
        "ESIMFLY_ACCESS_CODE": "esf_...",
        "ESIMFLY_SECRET_KEY": "sk_..."
      }
    }
  }
}
```

### Claude Code

```bash
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):

```json
{
  "mcpServers": {
    "esimfly": {
      "command": "npx",
      "args": ["-y", "@esimfly/mcp"],
      "env": { "ESIMFLY_ACCESS_CODE": "esf_...", "ESIMFLY_SECRET_KEY": "sk_..." }
    }
  }
}
```

### Docker

```bash
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

```ts
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

