Debug-only in-app MCP server for iOS/macOS/Android/Flutter/ReactNative. Gives LLM agents Playwright-like control over native apps — UI, state, navigation, and diagnostics over the local network.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"appreveal": {
"args": [
"-y",
"react-native-appreveal"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
unlikeotherai.github.io/AppReveal
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y 'react-native-appreveal' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked react-native-appreveal against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in developer-tools / browser
A Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
Workspace template + MCP server for Claude Code, Codex CLI, Cursor & Windsurf. Multi-agent knowledge engine (ag-refresh / ag-ask) that turns any codebase into a queryable AI assistant.
MCP server for accessing Figma plugin console logs and screenshots via Cloudflare Workers or local mode
MCP server for using the GitLab API
MCP Security Weekly
Get CVE alerts and security updates for AppReveal and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
unlikeotherai.github.io/AppReveal
Debug-only in-app MCP server for iOS, macOS, Android, Flutter, and React Native. Lets LLM agents discover, inspect, and control native apps over the local network -- like Playwright for native, but with direct access to app state, navigation, network traffic, DOM, and diagnostics.
Your App (debug build) External Agent
+-- AppReveal framework +-- mDNS browse for _appreveal._tcp
+-- MCP Server (Streamable HTTP) <---+-- MCP client (curl, SDK, Claude, etc.)
+-- mDNS advertisement +-- LLM orchestration
+-- Screen/element/state bridges
+-- WebView DOM bridge
AppReveal.start() in a debug build_appreveal._tcp on the LANAppReveal shares the same core MCP surface across platforms. macOS adds desktop-specific window and menu tools on top of the shared native and web view tools.
// Package.swift
.package(url: "https://github.com/UnlikeOtherAI/AppReveal.git", from: "0.8.0")
#if DEBUG
AppReveal.start()
#endif
See iOS guide for full setup.
// Package.swift
.package(url: "https://github.com/UnlikeOtherAI/AppReveal.git", from: "0.8.0")
#if DEBUG
AppReveal.start()
#endif
See macOS guide for full setup.
// build.gradle.kts
debugImplementation("com.appreveal:appreveal")
releaseImplementation("com.appreveal:appreveal-noop")
if (BuildConfig.DEBUG) {
AppReveal.start(this)
}
See Android guide for full setup.
// pubspec.yaml
dependencies:
appreveal:
path: Flutter/appreveal
void main() {
WidgetsFlutterBinding.ensureInitialized();
AppReveal.start(); // no-ops in release builds
runApp(AppReveal.wrap(const MyApp()));
}
// In MaterialApp:
MaterialApp(
navigatorObservers: [AppReveal.navigatorObserver],
...
)
See Flutter guide for full setup.
npm install react-native-appreveal
cd ios && pod install
import { AppReveal, AppRevealFetchInterceptor } from 'react-native-appreveal';
if (__DEV__) {
AppReveal.start();
AppRevealFetchInterceptor.install();
}
See React Native guide for full setup.
| Tool | Description |
|---|---|
list_windows | List visible app windows and their IDs |
get_screen | Current screen identity, controller/activity chain, confidence score |
get_elements | All visible interactive elements with id, type, frame, safe-area data, actions |
get_view_tree | Full view hierarchy with class, frame, safe-area data, properties, accessibility info |
tap_element | Tap by element identifier (buttons, cells, controls) |
tap_text | Tap by visible text content (finds text, walks to tappable ancestor) |
tap_point | Tap at screen coordinates |
type_text | Type text into a field (by element ID or current responder) |
clear_text | Clear a text field |
scroll | Scroll a container (up/down/left/right) |
scroll_to_element | Scroll until an element is visible |
screenshot | Capture screen or element as base64 PNG/JPEG |
select_tab | Switch tab bar tabs by index |
navigate_back | Pop the navigation stack |
dismiss_modal | Dismiss the topmost modal |
open_deeplink | Open a URL in the app |
All native UI tools and all web view tools accept an optional window_id parameter from list_windows. If omitted, AppReveal targets the current key window.
| Tool | Description | |--