Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MCP Appium - Mobile Development and Automation Server

NPM · @SNIFFSKI/SQUIRE

MCP server for Appium mobile automation on iOS and Android devices with test creation tools.

Available components

71 Trust /100

Last scanned (6 hours ago)

Scores higher than 40% of npm servers

Category Testing and QA

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security85
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects sharp 0.32.6, reached via @xenova/transformers > sharp. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • Dependency health was assessed across the 400 of 678 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency71
  • Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
  • Cryptographically verified build provenance (signed, bound to ihubanov/squire). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability82
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 7755 tokens (~121/item across 64 items; 63 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 98% of tool parameters carry a description.Partial
Tool Safety81
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 1 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "appium_drag_and_drop" implies "drop" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Partial
  • An AI judge read all 65 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +21
    • CVE-2026-114112 affects this package: high ▼ security
    • CVE-2026-118764 affects this package: high ▼ security
    • CVE-2026-114113 affects this package: high ▼ security
    • CVE-2026-114111 affects this package: high ▼ security
    • CVE-2026-118773 affects this package: high ▼ security
    • Known CVEs: unverified → fail ▼ security
    • Malware scan: unverified → pass ▲ security
    • Dependency health: unverified → partial ▲ functional
  • 3 Nov 26 50

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@sniffski/squire@1.31.6

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo ihubanov/squire
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/ihubanov/squire/.github/workflows/publish.yml@refs/tags/v1.31.6
Rekor log index 3673944119
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:24c370ec3ee9777e80c85a6b030960562f090aa73cf9f6dfcf7df77812bb48d0702a3439883d85e0f2dc2222c878ac48f14dfd72fa0b4f2e9ee642cde

Background: How many MCP packages publish verified provenance →

Vulnerabilities 5 findings
ID CVE Severity Vector Fix available
GHSA-3g3m-2fjr-6pw4 CVE-2026-118773 medium yes
GHSA-g3hv-75wg-m249 CVE-2026-118764 medium yes
GHSA-f88m-g3jw-g9cj CVE-2026-114113 high yes
GHSA-rgj7-g3m4-5g8c CVE-2026-114112 high yes
GHSA-wq5f-xc86-pv6w CVE-2026-114111 high yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 400 packages
Packages resolved 400
Deprecated 3
Stale 106
No linked repository 1
Tree resolution Partial

The dependency tree was only partially resolved, so these counts may be incomplete.

Background: SBOMs and build attestations, explained →

MCP tools · 63 exposed · ~7,585 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
appium_activate_app ~25

Activate app by id

NameTypeReqDescription
idstringyesThe app id

No output schema declared.

No examples provided.

appium_click ~91

Click an element. In a Playwright web session this clicks like a human cursor — full mouse-down/up, JS click handlers fire, navigation/form submission happens normally. Use it on links, buttons, search-result entries, login submit buttons, etc. Element is identified by UUID from appium_find_element.

NameTypeReqDescription
elementUUIDstringyesThe uuid of the element returned by appium_find_element to click

No output schema declared.

No examples provided.

appium_deep_link ~106

Open a deep link URL with the default or specified app. Supported on Android and iOS.

NameTypeReqDescription
appIdstring–App identifier: bundleId (iOS) or package (Android)
urlstringyesDeep link URL to open (e.g. https://example.com, myapp://path)
waitForLaunchboolean–Android only. If false, ADB does not wait for the activity to return control. Defaults to true.

No output schema declared.

No examples provided.

appium_documentation_query ~67

Query Appium documentation using RAG (Retrieval-Augmented Generation). This tool searches through indexed Appium documentation to answer questions about Appium features, setup, configuration, drivers, and usage.

NameTypeReqDescription
querystringyesThe question or query about Appium documentation

No output schema declared.

No examples provided.

appium_double_tap ~39

Perform double tap on an element

NameTypeReqDescription
elementUUIDstringyesThe uuid of the element returned by appium_find_element to click

No output schema declared.

No examples provided.

appium_drag_and_drop ~352

Perform a drag and drop gesture from a source location to a target location. The gesture includes: 1. Long press (default 600ms, configurable) on the source to initiate drag mode 2. While holding, drag to the target location 3. Release at the target to complete the drop Supports four modes: 1. Element to Element: Drag from one element to another element 2. Element to Coordinates: Drag from an element to specific coordinates 3. Coordinates to Element: Drag from coordinates to an element 4. Coordinates to Coordinates: Drag from coordinates to coordinates This is useful for reordering lists, moving items, drag-to-delete, and other drag interactions.

NameTypeReqDescription
durationinteger–Duration of the drag movement in milliseconds. Default is 1200ms.
longPressDurationinteger–Duration of the long press before dragging in milliseconds. Default is 600ms.
sourceElementUUIDstring–UUID of the source element to drag from. Either sourceElementUUID or sourceX/sourceY must be provided.
sourceXinteger–Starting X coordinate. Required if sourceElementUUID is not provided.
sourceYinteger–Starting Y coordinate. Required if sourceElementUUID is not provided.
targetElementUUIDstring–UUID of the target element to drop on. Either targetElementUUID or targetX/targetY must be provided.
targetXinteger–Ending X coordinate. Required if targetElementUUID is not provided.
targetYinteger–Ending Y coordinate. Required if targetElementUUID is not provided.

No output schema declared.

No examples provided.

appium_element_screenshot ~82

Take a screenshot of the given element uuid and return as PNG image

NameTypeReqDescription
elementUUIDstringyesThe uuid of the element returned by appium_find_element to click
maxWidthnumber–Optional maximum width in pixels to resize the screenshot. The aspect ratio is preserved. Useful for reducing token usage when sending screenshots to LLMs.

No output schema declared.

No examples provided.

appium_find_element ~96

Find a specific element by strategy and selector which will return a uuid that can be used for interactions. [PRIORITY 2: Use this to search for a target element by xpath, id, accessibility id, css selector, text, data-testid, etc.] Works with both Appium mobile sessions and Playwright web sessions.

NameTypeReqDescription
selectorstringyesThe selector to find the element
strategystringyes–

No output schema declared.

No examples provided.

appium_generate_tests ~30

Generate tests for a given mobile app

NameTypeReqDescription
stepsarrayyesThe steps of the test

No output schema declared.

No examples provided.

appium_get_active_element ~48

Get the currently active/focused element and return its UUID for follow-up interactions. [PRIORITY 1: Use this first when you need to find what element currently has focus]

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_get_contexts ~53

Get all available contexts in the current Appium session. Returns a list of context names including NATIVE_APP and any webview contexts (e.g., WEBVIEW_<id> or WEBVIEW_<package>).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_get_geolocation ~32

Get the current geolocation (GPS coordinates) of the device. Returns latitude, longitude, and altitude.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_get_orientation ~27

Get the current device/screen orientation. Returns LANDSCAPE or PORTRAIT.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_get_page_source ~57

Get the page source of the current screen (XML for native apps, HTML for web/Playwright sessions). The full source is saved to a file and a capped preview is returned inline; read the file for the complete source.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_get_text ~37

Get text from an element

NameTypeReqDescription
elementUUIDstringyesThe uuid of the element returned by appium_find_element to click

No output schema declared.

No examples provided.

appium_handle_alert ~308

Handle system alerts or dialogs that do not belong to the app. Use this to dismiss or accept alerts programmatically instead of using autoDismissAlerts capability. Supports permission dialogs with buttons like: - Android: "While using the app", "Only this time", "Don't allow" - iOS: "Always", "Allow Once", "Don't allow" For iOS: Uses mobile: alert execute command. For Android: Uses mobile: acceptAlert/dismissAlert or searches the current page source for an element whose text or content-desc matches the label, then uses generated locators to find and click it (no hardcoded resource IDs or XPaths). If no alert is present, the error is caught and returned gracefully. To discover button labels and screen structure first, use appium_get_page_source (XML hierarchy) or generate_locators (interactable elements with text/content-desc).

NameTypeReqDescription
actionstringyesAction to perform on the alert: accept or dismiss
buttonLabelstring–Optional label of the button to click. Common permission dialog buttons: Android: "While using the app", "Only this time", "Don't allow" iOS: "Always" or "Allow Always", "Once" or "Allow Once", "Don'…

No output schema declared.

No examples provided.

appium_install_app ~35

Install an app on the device from a file path.

NameTypeReqDescription
pathstringyesPath to the app file to install

No output schema declared.

No examples provided.

appium_is_app_installed ~50

Check whether an app is installed. Package name for Android, bundle ID for iOS.

NameTypeReqDescription
idstringyesApp identifier (package name for Android, bundle ID for iOS)

No output schema declared.

No examples provided.

appium_list_apps ~43

List all installed apps on the device. On Android, only package IDs are returned (no display names); on iOS, bundle IDs and display names are returned.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_long_press ~66

Perform a long press (press and hold) gesture on an element

NameTypeReqDescription
durationinteger–Duration of the long press in milliseconds. Default is 2000ms.
elementUUIDstringyesThe uuid of the element returned by appium_find_element to click

No output schema declared.

No examples provided.

appium_mobile_lock ~124

Lock the device. Optionally lock for a given number of seconds (both Android and iOS support automatic unlock after the timeout). If no timeout is provided, the device stays locked until appium_mobile_unlock is called. Supported on Android (UiAutomator2) and iOS (XCUITest).

NameTypeReqDescription
secondsinteger–How long to lock the screen in seconds before it is automatically unlocked. Supported on both Android (UiAutomator2) and iOS (XCUITest). If omitted, the device stays locked until appium_mobile_unlock…

No output schema declared.

No examples provided.

appium_mobile_open_notifications ~33

Open the Android notifications panel using the mobile: openNotifications extension. Does nothing if the panel is already open.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_mobile_press_key ~141

Press navigation keys (BACK, HOME, APP_SWITCH) on Android or physical buttons (HOME, volume, etc.) on iOS/tvOS.

NameTypeReqDescription
isLongPressboolean–Android only. Whether to perform a long press. Defaults to false.
keystring–Logical key/button to press. On Android: BACK, HOME, APP_SWITCH. On iOS/tvOS: HOME, VOLUME_UP, VOLUME_DOWN, UP, DOWN, LEFT, RIGHT, MENU, PLAY_PAUSE, SELECT.
keyCodeinteger–Android keycode to press. If provided, takes precedence over key for Android.

No output schema declared.

No examples provided.

appium_mobile_unlock ~41

Unlock the device if it is locked. No-op if already unlocked. Supported on Android (UiAutomator2) and iOS (XCUITest).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_pinch ~211

Perform a pinch gesture to zoom in or zoom out. Use scale < 1 to zoom out (pinch close) and scale > 1 to zoom in (pinch open). Works on both iOS and Android. Optionally target a specific element, otherwise the gesture applies to the whole screen.

NameTypeReqDescription
elementUUIDstring–Optional UUID of the element to pinch on. If not provided, the pinch gesture is applied to the whole screen.
scalenumberyesPinch scale. Use a value between 0 and 1 to zoom out (pinch close), and a value greater than 1 to zoom in (pinch open). Example: 0.5 = zoom out 50%, 2.0 = zoom in 2x.
velocitynumber–The velocity of the pinch in scale factor per second. Used natively by iOS for zoom in, and controls gesture speed for zoom out on both platforms. Default is 2.2.

No output schema declared.

No examples provided.

appium_reset_geolocation ~86

Reset the geolocation to the default/system value. On iOS, resets the simulated location. On Android real devices, resets the mocked geolocation provider (note: GPS cache behavior varies by device — the mocked location may persist until the cache refreshes). On Android emulators, reset is not supported — use appium_set_geolocation to manually set the desired coordinates instead.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

appium_screenshot ~59

Take a screenshot of the current screen and return as PNG image

NameTypeReqDescription
maxWidthnumber–Optional maximum width in pixels to resize the screenshot. The aspect ratio is preserved. Useful for reducing token usage when sending screenshots to LLMs.

No output schema declared.

No examples provided.

appium_scroll ~27

Scrolls the current screen up or down

NameTypeReqDescription
directionstring–Scroll direction

No output schema declared.

No examples provided.

appium_scroll_to_element ~58

Scrolls the current screen till a certain element is visible

NameTypeReqDescription
directionstring–Direction to scroll when searching for the element
selectorstringyesThe selector to find the element
strategystringyes–

No output schema declared.

No examples provided.

appium_set_geolocation ~119

Set the geolocation (GPS coordinates) of the device. Works on both iOS (simulators and real devices) and Android (emulators and real devices with mock location enabled).

NameTypeReqDescription
altitudenumber–Altitude value in meters. Android only. Defaults to 0.
latitudenumberyesLatitude value (-90 to 90). Measurement of distance north or south of the Equator.
longitudenumberyesLongitude value (-180 to 180). Measurement of distance east or west of the prime meridian.

No output schema declared.

No examples provided.

appium_set_orientation ~51

Set the device/screen orientation to LANDSCAPE or PORTRAIT. Works for both Android and iOS sessions.

NameTypeReqDescription
orientationstringyesTarget orientation: LANDSCAPE or PORTRAIT

No output schema declared.

No examples provided.

appium_set_value ~48

Enter text into an element

NameTypeReqDescription
elementUUIDstringyesThe uuid of the element returned by appium_find_element to click
textstringyesThe text to enter

No output schema declared.

No examples provided.

appium_swipe ~261

Swipe on the current screen in a specified direction or between custom coordinates. Supports four directions: left, right, up, down. Can also perform custom coordinate-based swipes for precise control. This is useful for navigating carousels, switching tabs, dismissing elements, or navigating between screens.

NameTypeReqDescription
directionstring–Direction to swipe. If provided, coordinates will be calculated automatically based on screen size or, when elementUUID is set, relative to that element. Either direction OR custom coordinates must b…
durationinteger–Duration of the swipe gesture in milliseconds. Default is 600ms. Higher values create slower swipes.
elementUUIDstring–Optional element to base the swipe on. When provided with direction, the swipe is calculated relative to this element instead of the whole screen.
endXinteger–Ending X coordinate for custom swipe. Required if direction is not provided.
endYinteger–Ending Y coordinate for custom swipe. Required if direction is not provided.
startXinteger–Starting X coordinate for custom swipe. Required if direction is not provided.
startYinteger–Starting Y coordinate for custom swipe. Required if direction is not provided.

No output schema declared.

No examples provided.

appium_switch_context ~108

Switch to a specific context in the Appium session. Use this to switch between native app context (NATIVE_APP) and webview contexts (WEBVIEW_<id> or WEBVIEW_<package>). Use appium_get_contexts to see available contexts first.

NameTypeReqDescription
contextstringyesThe name of the context to switch to. Common values: "NATIVE_APP" for native context, or "WEBVIEW_<id>" / "WEBVIEW_<package>" for webview contexts.

No output schema declared.

No examples provided.

appium_terminate_app ~39

Terminate an app on the device.

NameTypeReqDescription
idstringyesApp identifier (package name for Android, bundle ID for iOS)

No output schema declared.

No examples provided.

appium_uninstall_app ~39

Uninstall an app from the device.

NameTypeReqDescription
idstringyesApp identifier (package name for Android, bundle ID for iOS)

No output schema declared.

No examples provided.

boot_simulator ~70

Boot an iOS simulator and wait for it to be ready. This speeds up subsequent session creation by ensuring the simulator is already running.

NameTypeReqDescription
udidstringyesThe UDID of the iOS simulator to boot. Use select_platform and select_device tools first to get the UDID.

No output schema declared.

No examples provided.

create_session ~849

Create a new session with Android, iOS, Web (Playwright), or any device/driver Appium supports. WORKFLOW FOR LOCAL SERVERS (no remoteServerUrl): - Use select_platform tool FIRST to ask the user which platform they want - Then optionally use select_device tool if multiple devices are available - Finally call create_session with the selected platform and device - DO NOT assume or default to any platform WORKFLOW FOR WEB (Playwright): - Use select_platform with platform='web' first - Then call create_session with platform='web' - Optionally specify browser (chromium, firefox, webkit) and headless mode - When AI_COLLEAGUE_CDP_ENDPOINT / APPIUM_MCP_CDP_ENDPOINT is set, this attaches to the user's already-running Chromium window (the one they can see); focus/protected-tab guards apply there. Otherwise Playwright launches a fresh browser fully detached from any Chrome/Chromium the user already has open (own process/profile/window class, own CDP debug port chosen to be free — APPIUM_MCP_CDP_PORT sets the preferred port, 0/none disables); no focus guards apply to a detached browser. Either way it's a real browser — full JavaScript, cookies, redirects, captchas all behave like for a human user. WORKFLOW FOR REMOTE SERVERS (remoteServerUrl provided): - SKIP select_platform tool entirely - Infer the platform from the user's request (e.g., 'ios', 'android', or 'general') - If platform is 'general', treat the provided capabilities as a pass-through W3C/Appium capability set (useful for non-Android/iOS drivers like Windows, macOS, or custom drivers) - Infer device type from context when possible (e.g., 'simulator', 'real device') - Call create_session directly with platform, remoteServerUrl, and any other capabilities from the user's request - Example: User says 'start session with http://localhost:4723 for ios with iphone 17' → infer platform='ios' and call create_session with r…

NameTypeReqDescription
browserstring–For web platform only: Browser engine to use. Default is 'chromium'. Options: 'chromium', 'firefox', 'webkit' (Safari engine).
capabilitiesobject–Optional custom W3C format capabilities for the session. These are applied on top of defaults for ios/android or used as-is for platform="general". For web sessions, use browser, headless, and url pa…
headlessboolean–For web platform only: Whether to run the browser in headless mode. Default is true. Pass false when a person should watch, as for playwright_present.
platformstringyesREQUIRED: Platform to use. - For local servers, this must match the platform the user explicitly selected via the select_platform tool ('ios', 'android', or 'web'). - Use 'web' fo…
remoteServerUrlstring–Remote Appium server URL (e.g., http://localhost:4723 or http://192.168.1.100:4723). If not provided, uses local Appium server. Not used for web/Playwright sessions.
urlstring–For web platform only: Initial URL to navigate to after launching the browser.
viewportobject–For web platform only: Browser viewport size. Default is 1280x720.

No output schema declared.

No examples provided.

delete_session ~48

Delete a mobile session and clean up resources. If sessionId is omitted, deletes the active session.

NameTypeReqDescription
sessionIdstring–Optional session ID to delete. If omitted, deletes active session.

No output schema declared.

No examples provided.

generate_locators ~46

Generate locators for all interactable elements on the current page. [PRIORITY 3: Use this for debugging/inspection or when you need comprehensive element info with locator suggestions]

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

install_wda ~140

Install and launch the WebDriverAgent (WDA) app on a booted iOS simulator using the app path from setup_wda. This tool requires WDA to be already set up using setup_wda and at least one simulator to be booted.

NameTypeReqDescription
appPathstring–The path to the WDA app bundle (.app file) that be generated by setup_wda tool. If not provided, will try to find the latest cached WDA app.
simulatorUdidstring–The UDID of the simulator to install WDA on. If not provided, will use the first booted simulator found.

No output schema declared.

No examples provided.

list_sessions ~27

List all active Appium sessions managed by this MCP server, including active flag and current context.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

playwright_close_tab ~92

Close a tab in the user's browser window by index, or the AI-active tab if no index is given. Use this to clean up after you're done with a research tab and don't need it anymore. Refused on the qwen-web TUI tab and on a tab the user is currently looking at.

NameTypeReqDescription
indexinteger–Zero-based index of the tab to close. Defaults to the current active tab.

No output schema declared.

No examples provided.

playwright_evaluate ~137

Run a JavaScript expression in the AI's active tab and get the result back. Use this to scrape structured data from a page (`document.querySelectorAll(...).map(e => e.textContent)`), call a page's own JS API, fetch a JSON endpoint via `fetch(...)` from the page's origin (useful for SearXNG's /search?format=json), or check page state. The page is real and live — DOM, cookies, network are all what a human would see.

NameTypeReqDescription
scriptstringyesJavaScript code to evaluate in the browser page context. The result will be serialized and returned.

No output schema declared.

No examples provided.

playwright_get_url ~40

Get the URL and title of the AI's currently active tab in the real browser. Useful after a navigation or a click that may have triggered a redirect.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

playwright_go_back ~27

Go back to the previous page in browser history. Only works with Playwright web sessions.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

playwright_go_forward ~27

Go forward to the next page in browser history. Only works with Playwright web sessions.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

playwright_hover ~65

Hover the mouse over an element on the active tab, just like a human cursor would. Use this to reveal hover-only menus, tooltips, or dropdown previews before clicking through.

NameTypeReqDescription
elementUUIDstringyesThe uuid of the element returned by appium_find_element to click

No output schema declared.

No examples provided.

playwright_list_tabs ~63

List every tab currently open in the real browser window with index, URL, title, and which is the AI-active tab. Use mcp__tabs__tabs_state instead when you can — it also reports user-focus and content previews, and doesn't require a session bootstrap.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

playwright_navigate ~172

Navigate the AI's currently active tab to a URL in the real Chromium browser the user is sitting in front of. The page loads, JavaScript runs, cookies/redirects/captchas behave exactly as they would for a human. Use this to follow a link from a previous result, change the URL of a tab you already opened, or move through a multi-page flow. Prefer playwright_new_tab when starting a fresh task so you don't clobber an existing tab. Refused if the target tab is the qwen-web TUI or the user is currently focused on it.

NameTypeReqDescription
urlstringyesThe URL to navigate to
waitUntilstring–When to consider navigation complete. Default is 'load'. Use 'networkidle' to wait until no network requests for 500ms.

No output schema declared.

No examples provided.

Install

How do I install the MCP Appium - Mobile Development and Automation Server server?

MCP Appium - Mobile Development and Automation Server runs locally as an npm package, launched with npx -y @sniffski/squire. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @sniffski/squire

# add to Claude Code
claude mcp add ihubanov-squire -- npx -y @sniffski/squire
Common questions

What is the MCP Appium - Mobile Development and Automation Server server?

MCP Appium - Mobile Development and Automation Server is listed in the public MCP registry as io.github.ihubanov/squire. MCP server for Appium mobile automation on iOS and Android devices with test creation tools. This page covers its npm package (@sniffski/squire).

Is the MCP Appium - Mobile Development and Automation Server server safe to use?

MCP Appium - Mobile Development and Automation Server scores 71 out of 100 on VerifyMCP. We recorded 5 known advisories against it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MCP Appium - Mobile Development and Automation Server server expose?

MCP Appium - Mobile Development and Automation Server exposes 63 tools: select_platform, select_device, create_session, list_sessions, select_session, and 58 more. Their descriptions and schemas cost roughly 7,585 tokens of context every time the server is loaded.

Is the MCP Appium - Mobile Development and Automation Server server still maintained?

MCP Appium - Mobile Development and Automation Server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the MCP Appium - Mobile Development and Automation Server server under?

MCP Appium - Mobile Development and Automation Server declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.