Simscout

io.github.CloudCorpRecords由 GitHub 账号 CloudCorpRecords 发布v0.1.0更新于 Nov 7, 2026

Compare travel eSIM plans by country, trip length and data, with live catalog prices.

概览

AI 生成的概览

连接 esimoa 旅行 eSIM 目录的本地桥接服务,让助手按目的地、行程天数和流量搜索、比较并查看 eSIM 套餐。

可以做什么
  • 按国家、行程天数、流量、无限或每日流量、本地号码、网络类型、热点、5G、价格和供应商搜索 eSIM 套餐,并支持排序与结果数量限制
  • 按 id 获取单个套餐的完整详情,包括套餐页面链接
  • 将 2 至 5 个套餐并排比较,并指出在价格、流量、有效期和每 GB 价格上更优的方案
  • 列出可购买 eSIM 的国家/地区,含套餐数量与最低价格(韩元)
  • 以 ChatGPT 深度研究所用的 search/fetch 格式进行自由文本搜索,并将单个套餐作为文档获取
适用场景
适合在规划出行时,让助手针对目的地、行程天数和流量需求筛选或比较旅行 eSIM 方案,并查看当前目录价格。它只读取目录,购买需在供应商网站上完成。
运行要求
以本地进程运行,可通过 npx(需 Node.js)或提供的 Docker 镜像启动;需要能访问上游 esimoa MCP 端点的网络。可选设置 ESIMOA_MCP_URL 覆盖端点,设置 ESIMOA_API_KEY 以发送 X-API-Key 请求头(合作方密钥会在购买链接中加入推广码)。无需账号。
安装前请注意
所有工具调用都会转发到第三方端点,查询内容会离开本机。工具本身只读,但套餐链接指向外部网站,购买会在那里发生;使用合作方 API 密钥会使购买链接带上推广码。上游错误以错误结果返回,而非抛出异常。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Simscout,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

simscout

simscout is a small local bridge to esimoa's hosted MCP server, which catalogues travel eSIM plans: pick a destination, say how long the trip is and how much data you need, and the catalog answers with matching plans, their prices in KRW, and a link to each plan's page on esimoa.com where a purchase would happen.

The bridge keeps no catalog of its own. It serves the upstream server's tool list locally, exactly as captured from the live endpoint, and forwards each tool call upstream, returning the result untouched. The whole captured surface only reads — searching, fetching one plan, comparing a shortlist and listing destinations — and there is no checkout or payment tool in it.

Tools

  • search_esims — search the catalog for a destination. All filters are optional: country (ISO code or name in any language, e.g. JP or Japan), days (trip length), data_gb / max_data_gb, unlimited, countries (multi-country trips, up to 8), data_type (daily or total), local_number, network (local or roaming), multi_country, min_price_krw / max_price_krw, provider, hotspot, five_g, sort (recommended, price, data, price_per_gb or validity), limit (1-10, default 5) and lang. Each result carries an id and a plan page url.
  • get_esim — the full details of one plan. Required: id (from search_esims). Optional: lang.
  • compare_esims — two to five plans side by side: price, data, validity, price per GB, coverage, network, hotspot and local phone number, plus which plan wins each of lowest price, most data, longest validity and lowest price per GB. Required: ids. Optional: lang.
  • list_countries — every destination where plans are sold, with the plan count and the lowest price per country. Optional: query (name or ISO filter) and lang.
  • search — free-text search in the search/fetch format used by ChatGPT deep research, e.g. "Japan 7 days unlimited". Required: query. Returns ids for fetch. When you can fill filters, prefer search_esims.
  • fetch — one plan as a document, by an id returned from search. Required: id. For plans found with search_esims, use get_esim instead.

Configuration

  • ESIMOA_MCP_URL (optional) — override the upstream endpoint. Defaults to https://api.esimoa.com/mcp. (The override hook is this rebuild's own labelled reconstruction.)
  • ESIMOA_API_KEY (optional) — when set, every upstream request carries an X-API-Key: <key> header (a partner key adds the partner's affiliate code to buy links). When it is not set, no key header is sent and the upstream returns plain links. No Authorization header is ever sent. (This forwarding is also a labelled reconstruction; the original surface was captured keyless.)

Forwarding mechanics

On the first tool call the client opens a streamable HTTP session with the upstream: a JSON-RPC initialize request (protocolVersion 2025-03-26, clientInfo name simscout), then a notifications/initialized notification, then the tools/call request carrying the caller's arguments unchanged. When the upstream answers initialize with an Mcp-Session-Id header, that value rides on every later request of the session, which is reused for the life of the process. Replies may arrive as plain JSON or as server-sent events; both are read.

Successful upstream results pass through verbatim, including any isError flag the upstream sets. Failures — a JSON-RPC error, a non-2xx status, an unreadable response, or a request that cannot be completed — come back as an isError result whose text starts with simscout error: (this rendering is this rebuild's own labelled reconstruction).

CLI

Each tool is also a subcommand taking one JSON argument string (omit it for tools that take none):

bash
npx @reneturcios/simscout search_esims '{"country":"JP","days":7,"sort":"price"}'npx @reneturcios/simscout get_esim '{"id":"plan-9"}'npx @reneturcios/simscout compare_esims '{"ids":["plan-9","plan-11"]}'npx @reneturcios/simscout list_countries '{"query":"Japan"}'npx @reneturcios/simscout --version

Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

bash
npx -y @reneturcios/simscout mcp

MCP client config:

json
{  "mcpServers": {    "simscout": {      "command": "npx",      "args": ["-y", "@reneturcios/simscout", "mcp"]    }  }}

Docker

bash
docker run -i ghcr.io/cloudcorprecords/simscoutdocker run --rm ghcr.io/cloudcorprecords/simscout --version

The container's default command is mcp, so the first form is a stdio MCP server; any other arguments reach the CLI normally.

Development

bash
npm installnpm run buildnpm testnpm run dev

The test suite runs entirely against a stubbed JSON-RPC upstream — no live network calls.

License

MIT — see LICENSE.

来源:README.md,提交 92a09b2

工具

6

search_esims

Search & compare travel eSIMs

Search the travel eSIM catalog of esimoa (이심모아) and compare plans for a destination. Filter by trip length, data, unlimited or daily data, local phone number, local or roaming network, multi-country coverage, price, provider, hotspot and 5G. Sort by "recommended" (esimoa’s default order), "price" (lowest first), "data" (most data first), "price_per_gb" or "validity" (longest first). Each result includes its `id` (for get_esim and compare_esims) and a `url` to the plan page on esimoa.com. Prices are in KRW.

输入参数dayslangsortlimitfive_gcountrydata_gbhotspotnetworkprovidercountriesdata_type另有 6 个

get_esim

Get eSIM plan details

Get the details of one esimoa (이심모아) eSIM plan by id (from search_esims), including its plan page `url`.

输入参数id必填lang

compare_esims

Compare eSIM plans side by side

Compare 2 to 5 esimoa (이심모아) eSIM plans side by side by id (ids come from search_esims): price, data, validity, price per GB, coverage, network, hotspot and local phone number. Returns which plan has the lowest price, most data, longest validity and lowest price per GB, and each plan page `url` on esimoa.com. Prices are in KRW.

输入参数ids必填lang

list_countries

List eSIM destinations

List countries where esimoa (이심모아) sells eSIMs, with the number of plans and the lowest price (KRW). Optionally filter by name.

输入参数langquery

fetch

Fetch an esimoa eSIM

Fetch one esimoa (이심모아) eSIM plan as a document by id returned from search (ChatGPT deep research format). For plans found with search_esims, use get_esim.

输入参数id必填

版本历史

1
  1. v0.1.0最新Nov 4, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分