esim-mcp
An MCP server for searching and comparing travel eSIM data plans by country, planning multi-country trips, and optionally checking eSIM usage with an API token.
README
esim-mcp
An MCP server for travel eSIM plans. It lets Claude, Cursor, and any other Model Context Protocol client search travel eSIM data plans by country, compare prices, and work out the cheapest way to stay connected across a multi-country trip.
Ask "what is the cheapest eSIM for two weeks in Japan and South Korea?" and get real plans with real prices, not a guess.
esim-mcp is built and maintained by CheapereSIM, and returns CheapereSIM pricing. It covers 190+ destinations across 8 regions.
What you can ask
Once installed, these all work in plain language:
- "What is the cheapest eSIM for Japan?"
- "I am travelling to Japan, South Korea and Taiwan for three weeks. What should I buy?"
- "Is there a single eSIM that covers all of Southeast Asia?"
- "Which countries does that regional plan actually cover?"
- "Show me unlimited data eSIM plans for Turkey."
- "How much data is left on my eSIM?" (needs a token)
The interesting one is the multi-country case. A regional eSIM that covers your whole trip is sometimes cheaper than buying a local eSIM in each country, and sometimes it is not. plan_trip prices both and tells you which wins.
Setup
Add this to your MCP client configuration:
{
"mcpServers": {
"esim": {
"command": "npx",
"args": ["-y", "esim-mcp"]
}
}
}
No API key, no account, and no configuration are required to search destinations and compare plans. Set CHEAPERESIM_API_TOKEN only if you also want the two account tools.
Example: planning a multi-country trip
Asking plan_trip for three weeks across Japan, South Korea and Taiwan, with at least 10GB:
Option 1 - one plan covering everything, $34.58:
Asia (12 areas) 10GB 30Days: 10 GB for 30 days - $34.58 - covers 12 countries
https://cheaperesim.com/multi-country-esim?package=2488&utm_source=mcp&utm_medium=ai&utm_campaign=esim-mcp
Option 2 - one local plan per country, $17.52 total:
Japan 10GB 30Days: 10 GB for 30 days - $8.76
https://cheaperesim.com/esim/japan?package=339&utm_source=mcp&utm_medium=ai&utm_campaign=esim-mcp
South Korea 10GB 30Days: 10 GB for 30 days - $8.76
https://cheaperesim.com/esim/south-korea?package=345&utm_source=mcp&utm_medium=ai&utm_campaign=esim-mcp
No local plan available for: TW.
Recommended: option 1, since option 2 does not cover: TW.
That is real output against live pricing, not an illustration. It is also the case worth understanding: buying local is half the price, and it is still the wrong answer, because Taiwan is sold only inside regional plans. A price comparison that stopped at the cheaper number would leave you without service for a third of the trip.
The server prints each buy_url exactly as the API returns it, so the links above are the ones you would get.
Tools
| Tool | Description | Requires token |
|---|---|---|
search_destinations |
Find countries CheapereSIM sells eSIM plans for, by full or partial name. | No |
list_plans |
List eSIM plans for one country, cheapest first. | No |
plan_trip |
Work out the cheapest way to stay connected across several countries. | No |
get_plan_coverage |
List every country a regional or global plan covers. | No |
list_popular_destinations |
List the destinations travellers buy eSIMs for most often. | No |
list_my_esims |
List the eSIMs on the configured CheapereSIM account. | Yes |
get_esim_usage |
Show how much data is left on one eSIM. | Yes |
list_my_esims and get_esim_usage are only registered when CHEAPERESIM_API_TOKEN is set. Without a token, the server exposes the first five tools only, so a model never sees a tool it cannot call.
Environment variables
| Variable | Default | Purpose |
|---|---|---|
CHEAPERESIM_API_BASE |
https://cheaperesim.com |
Base URL of the CheapereSIM API |
CHEAPERESIM_API_TOKEN |
unset | API token for the two account tools; omit to run in read-only lookup mode |
CHEAPERESIM_TIMEOUT_MS |
10000 |
Request timeout in milliseconds |
Keep CHEAPERESIM_API_BASE on https. The token is sent as a bearer header, so an http override would put it on the wire in cleartext.
Getting a token
Create a token at cheaperesim.com/dashboard/api-tokens. Tokens are read-only: they can list your eSIMs and their usage, but they cannot buy a plan, change your profile, or delete your account. Treat one like a password and revoke it if it leaks.
FAQ
What is an eSIM? A digital SIM your phone downloads instead of a plastic card you swap in. Most phones sold since about 2018 support one, so you can buy mobile data for a country before you land and skip roaming charges.
Which countries can I search?
190+ destinations across Europe, Asia, North and South America, Africa, Oceania and the Middle East, plus regional and global plans that span many countries at once. Use search_destinations to check a specific one.
Does this cost anything to install? No. The server and the five lookup tools are free and need no account. You only pay if you decide to buy a plan on cheaperesim.com.
Is a regional eSIM cheaper than buying one per country?
It depends on the trip, which is the whole reason plan_trip exists. For two neighbouring countries a pair of local plans often wins; across four or five, a regional plan usually does. The tool prices both and shows the difference.
Does it work with anything other than Claude? Yes. It speaks the Model Context Protocol over stdio, so any MCP client can run it, including Cursor and custom agents built on the MCP SDKs.
Can it buy a plan for me? No, by design. Every tool is read-only. Plans come back with a link, and the purchase happens in your browser on cheaperesim.com.
Development
npm install
npm test
npm run build
npm run typecheck type-checks the tests as well as the source. CI runs the build, the typecheck, and the suite on Node 20 and 22.
License
MIT. See LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.