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.
- package/README.md +70 -56
- 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)
|
|
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
|
-
|
|
95
|
+
</details>
|
|
96
|
+
|
|
97
|
+
## 🏁 Getting Started
|
|
98
|
+
|
|
99
|
+
After installing, run the setup wizard:
|
|
88
100
|
|
|
89
101
|
```bash
|
|
90
|
-
|
|
102
|
+
npx native-devtools-mcp setup
|
|
91
103
|
```
|
|
92
|
-
</details>
|
|
93
104
|
|
|
94
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
124
|
+
#### macOS — Claude Desktop
|
|
101
125
|
|
|
102
|
-
|
|
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
|
-
|
|
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
|
-
|
|
140
|
+
Config file: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
125
141
|
|
|
126
|
-
|
|
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
|
-
|
|
155
|
+
Requires Node.js 18+.
|
|
140
156
|
|
|
141
|
-
|
|
157
|
+
</details>
|
|
142
158
|
|
|
143
|
-
|
|
159
|
+
## 🔐 Security & Trust
|
|
144
160
|
|
|
145
|
-
|
|
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
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
|
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 --
|
|
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
|
-
##
|
|
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.
|
|
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.
|
|
57
|
-
"@sh3ll3x3c/native-devtools-mcp-win32-x64": "0.4.
|
|
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"
|