Shipvo

io.github.shipvo由 GitHub 账号 shipvo 发布v0.0.6更新于 Nov 1, 2026

Open a React Native app in a simulated phone: read the screen, tap, type, set device state.

已验证Streamable HTTP可网页运行浏览器自动化开发者工具商业与电商

概览

AI 生成的概览

让助手在模拟手机中操作 React Native 应用:读取屏幕、点击、输入、滚动,并设置设备状态。

可以做什么
  • 列出并打开应用,在全新的手机尺寸会话中运行,并可在重连后恢复已打开的会话。
  • 以无障碍树读取当前屏幕、截取 PNG 截图,并执行点击、输入、滚动和返回。
  • 模拟设备条件:位置、摄像头前的条码、权限状态、指纹是否匹配、支付是否通过、网络开关。
  • 发送推送通知、读取通知栏、打开通知,并查看权限弹窗、扫码、支付、分享等设备日志。
  • 重置模拟手机,结束会话并获取步骤报告与应用发给后端的订单。
  • 列出并执行所有者命令(内容、价格、优惠、订单、发布),作用于线上应用。
适用场景
适合需要助手在没有真机或模拟器的情况下端到端走查 React Native 应用:跑通流程、检查界面、测试原生弹窗,或核对应用发给后端的数据。也适合应用所有者让助手修改内容、价格或优惠并发布。
运行要求
可使用托管端点 sim.shipvo.dev,或在本地通过 stdio 运行 npm 包 @shipvo/mcp,并先在应用中启动模拟器(shipvo sim)。必须提供 Authorization 头中的 bearer API 密钥,通过 npx @shipvo/cli login 获取;所有者命令还需 PN_OWNER_TOKEN。自建 HTTP 模式使用 PN_API_KEYS,并应置于 HTTPS 之后。
安装前请注意
Authorization 中的 bearer 密钥属于凭据,无有效密钥的请求会被拒绝。所有者命令会修改线上应用的内容、价格和优惠,publish 会在数秒内让改动在所有手机上生效;改动会被审计。会话会作用于真实应用后端,订单等写入会真正提交。托管服务计划按账户发放带 test、owner、read 范围的密钥。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Shipvo,将其添加到工作区。
  2. 连接 Authorization token 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.shipvo%2Fshipvo/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "shipvo": {
      "type": "http",
      "url": "https://sim.shipvo.dev/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

@shipvo/mcp

Lets AI agents (Claude, Cursor, Claude Code, PiPilot…) use a Shipvo app without a phone: open it, read the screen as an accessibility tree, tap, type, scroll, go back, take screenshots, and read what the app sent to its backend. Plus the owner API: change content, prices and offers, and publish to every phone.

json
{ "mcpServers": { "shipvo": {  "command": "npx", "args": ["-y", "@shipvo/mcp"],  "env": { "PN_SIM": "http://localhost:4545", "PN_OWNER_TOKEN": "…optional…" } } } }

Start the simulator first (shipvo sim in the app). The hosted version needs no local setup: { "url": "https://<host>/mcp/<key>" }.

Tools: list_apps, open_app, screen, tap, type, scroll, back, screenshot, set_device, push_notification, notifications, open_notification, device_log, end_session, owner_describe, owner_command.

Native features work with no phone: the simulated device (see @shipvo/device) shows permission dialogs, the camera, the fingerprint prompt, payment prompts, notification banners and the share sheet as real dialogs in the tree; set_device decides what the phone has (location, a barcode in view, whether the fingerprint matches, whether a payment is approved, network off).

The simulator shows only what a phone would: a horizontal rail lists the visible items, so agents swipe it (scroll right with the rail's ref) exactly as on a device. Measured against a real Android emulator and iPhone simulator, see docs/parity-results.md.

Remote (Streamable HTTP)

Run the server where the simulator runs and put it behind HTTPS (a Cloudflare Tunnel is enough):

PN_API_KEYS="key-for-claude,key-for-pipilot" shipvo-mcp --http 8787

Clients connect with a URL instead of a command:

json
{ "mcpServers": { "shipvo": { "url": "https://sim.shipvo.dev/mcp", "headers": { "Authorization": "Bearer key-for-claude" } } } }

Each client connection gets its own MCP session; each open_app gets its own phone. Requests without a valid key are refused. The hosted version at sim.shipvo.dev will issue keys per account with scopes (test, owner, read).

来源:packages/mcp/README.md,提交 04866d2

工具

18

list_apps

Apps this server can open, with what each one does. Optional query filters by name, description or category (e.g. 'shop', 'douala').

输入参数query

open_app

Open an app in a fresh phone-sized session and return its first screen.

输入参数app必填darksessionseed_cart

list_sessions

Open simulator sessions (phones) on this server: id, app, release and when each started. Use to resume after a reconnect.

无需输入参数。

screen

The current screen as an accessibility tree with refs.

输入参数session必填

tap

Tap a button, link or choice by ref. Returns the new screen.

输入参数ref必填session必填

type

Type into a text field by ref (replaces its content). Returns the new screen.

输入参数ref必填text必填entersession必填

scroll

Scroll the page (down/up) or a horizontal rail (right/left, give the rail's ref). Returns the new screen.

输入参数refsession必填direction必填

back

Go back one screen.

输入参数session必填

screenshot

A PNG of the phone screen (for checking layout, colours, images). The tree from `screen` is usually enough to act.

输入参数session必填

set_device

Change what the simulated phone has: location, a barcode in front of the camera, permission states, whether the fingerprint will match, whether a payment will be approved, network on/off. Takes effect for the next action.

输入参数cameraonlinepaymentsession必填locationbiometricspermissions

push_notification

Deliver a push notification to the simulated phone; it appears as a banner the agent can tap.

输入参数body必填datatitle必填session必填

notifications

The notification shade: notifications delivered to the simulated phone in this session (their banners vanish after 5 s, like a heads-up on a real phone).

输入参数session必填

open_notification

Tap a notification from the shade (newest if no id is given): the app handles it exactly as if its banner was tapped.

输入参数idsession必填

device_log

What the app did with the device in this session: permission prompts and answers, location reads, scans, fingerprint checks, payments, notifications, shares.

输入参数session必填

device_reset

Put the simulated phone back to a known state (permissions undetermined, default location, nothing in front of the camera, log cleared), optionally with a new profile.

输入参数apisession必填platform

end_session

Close the session and get a report: steps taken, and the orders the app sent to its backend during the session.

输入参数session必填

owner_describe

List the owner commands of an app (content, prices, offers, orders, publish). Needs PN_OWNER_TOKEN.

输入参数app必填

owner_command

Run an owner command against the live app (changes are audited; `publish` makes them live on every phone within seconds).

输入参数app必填argscommand必填

版本历史

1
  1. v0.0.6最新Nov 1, 2026

评分

已满足适用检查项的 100%

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

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分