native-devtools-mcp 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +70 -56
  2. package/package.json +3 -3
package/README.md CHANGED
@@ -15,7 +15,7 @@ A Model Context Protocol (MCP) server that provides **Computer Use** capabilitie
15
15
 
16
16
  [//]: # "Search keywords: MCP, MCP server, Model Context Protocol, computer use, desktop automation, UI automation, native app testing, test automation, e2e testing, RPA, screenshots, OCR, template matching, accessibility, mouse, keyboard, screen reading, macOS, Windows, Android, ADB, mobile testing, Claude, Claude Code, Cursor, AI agent, native-devtools-mcp"
17
17
 
18
- [Features](#-features) • [Installation](#-installation) • [For AI Agents](#-for-ai-agents-llms) • [Android](#-android-support) • [Permissions](#-required-permissions-macos)
18
+ [Features](#-features) • [Installation](#-installation) • [Getting Started](#-getting-started) • [Security & Trust](#-security--trust) • [For AI Agents](#-for-ai-agents-llms) • [Android](#-android-support)
19
19
 
20
20
  <table>
21
21
  <tr>
@@ -77,6 +77,14 @@ npm install -g native-devtools-mcp
77
77
  <details>
78
78
  <summary>Click to expand build instructions</summary>
79
79
 
80
+ **Using the build script** (clones, builds, and runs setup):
81
+
82
+ ```bash
83
+ curl -fsSL https://raw.githubusercontent.com/sh3ll3x3c/native-devtools-mcp/master/scripts/build-from-source.sh | bash
84
+ ```
85
+
86
+ **Or manually:**
87
+
80
88
  ```bash
81
89
  git clone https://github.com/sh3ll3x3c/native-devtools-mcp
82
90
  cd native-devtools-mcp
@@ -84,24 +92,38 @@ cargo build --release
84
92
  # Binary: ./target/release/native-devtools-mcp
85
93
  ```
86
94
 
87
- To include Android device support, enable the `android` feature flag:
95
+ </details>
96
+
97
+ ## 🏁 Getting Started
98
+
99
+ After installing, run the setup wizard:
88
100
 
89
101
  ```bash
90
- cargo build --release --features android
102
+ npx native-devtools-mcp setup
91
103
  ```
92
- </details>
93
104
 
94
- ## ⚙️ Configuration
105
+ This will:
106
+ 1. **Check permissions** (macOS) — verifies Accessibility and Screen Recording, opens System Settings if needed
107
+ 2. **Detect your MCP clients** — finds Claude Desktop, Claude Code, Cursor
108
+ 3. **Write the configuration** — generates the correct JSON config and offers to write it for you
109
+
110
+ Then restart your MCP client and you're ready to go.
111
+
112
+ > **Claude Desktop on macOS** requires the signed app bundle (Gatekeeper blocks npx). Download `NativeDevtools-X.X.X.dmg` from [GitHub Releases](https://github.com/sh3ll3x3c/native-devtools-mcp/releases), drag to `/Applications`, then run setup — it will detect the app and configure Claude Desktop to use it.
95
113
 
96
- ### macOS Configuration
114
+ > **VS Code, Windsurf, and other clients:** `setup` doesn't auto-detect these yet. Run `setup` for the permission checks, then see the manual configuration below for the JSON config snippet.
97
115
 
98
- **Claude Desktop config file:** `~/Library/Application Support/Claude/claude_desktop_config.json`
116
+ > **Claude Code tip:** To avoid approving every tool call (clicks, screenshots), add this to `.claude/settings.local.json`:
117
+ > ```json
118
+ > { "permissions": { "allow": ["mcp__native-devtools__*"] } }
119
+ > ```
120
+
121
+ <details>
122
+ <summary><strong>Manual configuration (without setup)</strong></summary>
99
123
 
100
- **Claude Desktop requires the signed app bundle** (npx/npm will not work due to Gatekeeper):
124
+ #### macOS Claude Desktop
101
125
 
102
- 1. Download `NativeDevtools-X.X.X.dmg` from [GitHub Releases](https://github.com/sh3ll3x3c/native-devtools-mcp/releases)
103
- 2. Open the DMG and drag `NativeDevtools.app` to `/Applications`
104
- 3. Configure Claude Desktop:
126
+ Config file: `~/Library/Application Support/Claude/claude_desktop_config.json`
105
127
 
106
128
  ```json
107
129
  {
@@ -113,17 +135,11 @@ cargo build --release --features android
113
135
  }
114
136
  ```
115
137
 
116
- 4. Restart Claude Desktop - it will prompt for Screen Recording and Accessibility permissions for NativeDevtools
117
-
118
- > **Note:** Claude Code (CLI) can use either the signed app or npx - both work.
119
-
120
- ### Windows Configuration
121
-
122
- **Claude Desktop config file:** `%APPDATA%\Claude\claude_desktop_config.json`
138
+ #### Windows Claude Desktop
123
139
 
124
- ### Configuration JSON (Windows and macOS CLI)
140
+ Config file: `%APPDATA%\Claude\claude_desktop_config.json`
125
141
 
126
- For Windows (or macOS with Claude Code CLI):
142
+ #### Claude Code, Cursor, and other MCP clients
127
143
 
128
144
  ```json
129
145
  {
@@ -136,22 +152,43 @@ For Windows (or macOS with Claude Code CLI):
136
152
  }
137
153
  ```
138
154
 
139
- > **Note:** Requires Node.js 18+ installed.
155
+ Requires Node.js 18+.
140
156
 
141
- ### For Claude Code (CLI) Users
157
+ </details>
142
158
 
143
- To avoid approving every single tool call (clicks, screenshots), you can add this wildcard permission to your project's settings or global config:
159
+ ## 🔐 Security & Trust
144
160
 
145
- **File:** `.claude/settings.local.json` (or similar)
161
+ This tool requires Accessibility and Screen Recording permissions — that's a lot of trust. Here's how to verify it deserves it.
146
162
 
147
- ```json
148
- {
149
- "permissions": {
150
- "allow": ["mcp__native-devtools__*"]
151
- }
152
- }
163
+ ### Verify your binary
164
+
165
+ ```bash
166
+ native-devtools-mcp verify
153
167
  ```
154
168
 
169
+ Computes the SHA-256 hash of the running binary and checks it against the official checksums published on the [GitHub Releases](https://github.com/sh3ll3x3c/native-devtools-mcp/releases) page. If the hash matches, you're running an unmodified official build.
170
+
171
+ ### Build from source
172
+
173
+ Don't trust pre-built binaries? Build it yourself:
174
+
175
+ ```bash
176
+ curl -fsSL https://raw.githubusercontent.com/sh3ll3x3c/native-devtools-mcp/master/scripts/build-from-source.sh | bash
177
+ ```
178
+
179
+ The script clones the repo, optionally opens it for review before building, compiles the release binary, and runs setup. See [`scripts/build-from-source.sh`](scripts/build-from-source.sh).
180
+
181
+ ### Audit the code
182
+
183
+ [`SECURITY_AUDIT.md`](SECURITY_AUDIT.md) documents exactly which permissions are used, where in the source code, and includes an LLM audit prompt you can paste into any AI model to perform an independent security review.
184
+
185
+ ### What this server does NOT do
186
+
187
+ - **No unsolicited network access** — the server never phones home. Network is only used when the MCP client explicitly invokes `app_connect` (WebSocket to a local debug server) or when you run the `verify` subcommand (fetches checksums from GitHub)
188
+ - **No file scanning** — does not read or index your files. The only file reads are `load_image` (reads a path the MCP client explicitly provides) and short-lived temp files for screenshots (deleted immediately after capture)
189
+ - **No background persistence** — exits when the MCP client disconnects
190
+ - **No data exfiltration** — screenshots are returned to the MCP client via stdout, never stored or transmitted elsewhere
191
+
155
192
  ## 🔍 Two Approaches to Interaction
156
193
 
157
194
  We provide two ways for agents to interact, allowing them to choose the best tool for the job.
@@ -186,7 +223,7 @@ Optional inputs like `mask_id`, `search_region`, `scales`, and `rotations` can i
186
223
 
187
224
  ## 📱 Android Support
188
225
 
189
- Android support is available as an optional feature flag. It lets the MCP server communicate with Android devices over ADB (USB or Wi-Fi), providing screenshots, input simulation, UI element search, and app management.
226
+ Android support is built-in. The MCP server communicates with Android devices over ADB (USB or Wi-Fi), providing screenshots, input simulation, UI element search, and app management.
190
227
 
191
228
  ### Prerequisites
192
229
 
@@ -194,12 +231,6 @@ Android support is available as an optional feature flag. It lets the MCP server
194
231
  2. **USB debugging enabled** on the Android device (Settings > Developer options > USB debugging)
195
232
  3. **ADB server running** — starts automatically when you run `adb devices`
196
233
 
197
- ### Building with Android support
198
-
199
- ```bash
200
- cargo build --release --features android
201
- ```
202
-
203
234
  ### Android tools
204
235
 
205
236
  All Android tools are prefixed with `android_` and appear dynamically after connecting to a device:
@@ -250,7 +281,7 @@ android_click(x=..., y=...) → tap it
250
281
  Smoke tests verify all Android tools against a real connected device. They are `#[ignore]`d by default and must be run explicitly:
251
282
 
252
283
  ```bash
253
- cargo test --features android --test android_smoke_tests -- --ignored --test-threads=1
284
+ cargo test --test android_smoke_tests -- --ignored --test-threads=1
254
285
  ```
255
286
 
256
287
  Tests must run sequentially (`--test-threads=1`) since they share a single physical device. The device must be unlocked and awake.
@@ -317,29 +348,12 @@ screen_y = screenshot_origin_y + (pixel_y / screenshot_scale)
317
348
 
318
349
  </details>
319
350
 
320
- ## 🛡️ Privacy, Safety & Best Practices
351
+ ## ⚠️ Operational Safety
321
352
 
322
- ### 🔒 Privacy First
323
- * **100% Local:** All processing (screenshots, OCR, logic) happens on your device.
324
- * **No Cloud:** Images are never uploaded to any third-party server by this tool.
325
- * **Open Source:** You can inspect the code to verify exactly what it does.
326
-
327
- ### ⚠️ Operational Safety
328
353
  * **Hands Off:** When the agent is "driving" (clicking/typing), **do not move your mouse or type**.
329
354
  * *Why?* Real hardware inputs can conflict with the simulated ones, causing clicks to land in the wrong place.
330
355
  * **Focus Matters:** Ensure the window you want the agent to use is visible. If a popup steals focus, the agent might type into the wrong window unless it checks first.
331
356
 
332
- ## 🔐 Required Permissions (macOS)
333
-
334
- On macOS, you must grant permissions to the **host application** (e.g., Terminal, VS Code, Claude Desktop) to allow screen recording and input control.
335
-
336
- 1. **Screen Recording:** Required for `take_screenshot`.
337
- * *System Settings > Privacy & Security > Screen Recording*
338
- 2. **Accessibility:** Required for `click`, `type_text`, `scroll`.
339
- * *System Settings > Privacy & Security > Accessibility*
340
-
341
- > **Restart Required:** After granting permissions, you must fully quit and restart the host application.
342
-
343
357
  ## 🪟 Windows Notes
344
358
 
345
359
  Works out of the box on **Windows 10/11**.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "native-devtools-mcp",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "mcpName": "io.github.sh3ll3x3c/native-devtools",
5
5
  "description": "MCP server for native app testing — screenshot, OCR, click, type, find_text, template matching. macOS, Windows & Android.",
6
6
  "license": "MIT",
@@ -53,8 +53,8 @@
53
53
  "bin"
54
54
  ],
55
55
  "optionalDependencies": {
56
- "@sh3ll3x3c/native-devtools-mcp-darwin-arm64": "0.4.1",
57
- "@sh3ll3x3c/native-devtools-mcp-win32-x64": "0.4.1"
56
+ "@sh3ll3x3c/native-devtools-mcp-darwin-arm64": "0.4.3",
57
+ "@sh3ll3x3c/native-devtools-mcp-win32-x64": "0.4.3"
58
58
  },
59
59
  "engines": {
60
60
  "node": ">=18"