mobridge-mcp 0.0.9 → 0.1.0
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.
|
@@ -1,95 +1,240 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "Operation-level platform capability manifest. SINGLE SOURCE OF TRUTH for iOS tool registration, per-call operation validation, the device.connect envelope (supportedTools/unsupportedCapabilities), docs and tests. Android is intentionally NOT enumerated: on Android the platform filter is a no-op and the existing profile system is authoritative, so nothing here can make the Android surface drift. A tool with no iOS entry (in `common` or the active mode) is level NONE => NOT registered on iOS. Entries are version-qualified (minIosVersion/minXcodeVersion) because support varies by toolchain; connect resolves the effective set against the detected environment.",
|
|
3
|
-
"version":
|
|
4
|
-
"platforms": [
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
"version": 2,
|
|
4
|
+
"platforms": [
|
|
5
|
+
"ANDROID",
|
|
6
|
+
"IOS"
|
|
7
|
+
],
|
|
8
|
+
"iosModes": [
|
|
9
|
+
"physical",
|
|
10
|
+
"simulator"
|
|
11
|
+
],
|
|
7
12
|
"unsupportedCapabilities": {
|
|
8
|
-
"physical": [
|
|
9
|
-
|
|
13
|
+
"physical": [
|
|
14
|
+
"APP_CLEAR_DATA",
|
|
15
|
+
"APP_PERMISSION_GRANT",
|
|
16
|
+
"BATTERYSTATS"
|
|
17
|
+
],
|
|
18
|
+
"simulator": [
|
|
19
|
+
"BATTERYSTATS"
|
|
20
|
+
]
|
|
10
21
|
},
|
|
11
|
-
|
|
12
22
|
"ios": {
|
|
13
23
|
"common": {
|
|
14
|
-
"mobile.device.connect": {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"mobile.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"mobile.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"mobile.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"mobile.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"mobile.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
24
|
+
"mobile.device.connect": {
|
|
25
|
+
"level": "FULL"
|
|
26
|
+
},
|
|
27
|
+
"mobile.app.open": {
|
|
28
|
+
"level": "FULL",
|
|
29
|
+
"allowedOperations": [
|
|
30
|
+
"APP_OPEN",
|
|
31
|
+
"APP_DEEP_LINK",
|
|
32
|
+
"APP_BRING_TO_FRONT",
|
|
33
|
+
"APP_CLOSE_UI"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"mobile.screen.get": {
|
|
37
|
+
"level": "FULL"
|
|
38
|
+
},
|
|
39
|
+
"mobile.screen.find": {
|
|
40
|
+
"level": "FULL"
|
|
41
|
+
},
|
|
42
|
+
"mobile.screen.act": {
|
|
43
|
+
"level": "FULL"
|
|
44
|
+
},
|
|
45
|
+
"mobile.screen.wait": {
|
|
46
|
+
"level": "FULL"
|
|
47
|
+
},
|
|
48
|
+
"mobile.screen.diff": {
|
|
49
|
+
"level": "FULL"
|
|
50
|
+
},
|
|
51
|
+
"mobile.system.action": {
|
|
52
|
+
"level": "PARTIAL",
|
|
53
|
+
"allowedOperations": [
|
|
54
|
+
"HOME"
|
|
55
|
+
],
|
|
56
|
+
"reasonCode": "NO_GLOBAL_BACK_OR_RECENTS",
|
|
57
|
+
"note": "iOS has no global BACK/RECENTS/NOTIFICATION_SHADE; BACK is a semantic UI action (find nav button + act)."
|
|
58
|
+
},
|
|
59
|
+
"mobile.capability.invoke": {
|
|
60
|
+
"level": "PARTIAL",
|
|
61
|
+
"allowedOperations": [
|
|
62
|
+
"APP",
|
|
63
|
+
"CLIPBOARD"
|
|
64
|
+
],
|
|
65
|
+
"reasonCode": "NO_NOTIFICATION_LISTENER",
|
|
66
|
+
"note": "APP ok; CLIPBOARD limited; no general notification listener."
|
|
67
|
+
},
|
|
68
|
+
"mobile.batch": {
|
|
69
|
+
"level": "FULL"
|
|
70
|
+
},
|
|
71
|
+
"mobile.gesture.perform": {
|
|
72
|
+
"level": "FULL"
|
|
73
|
+
},
|
|
74
|
+
"mobile.screen.scrollTo": {
|
|
75
|
+
"level": "FULL"
|
|
76
|
+
},
|
|
77
|
+
"mobile.screen.capture": {
|
|
78
|
+
"level": "FULL"
|
|
79
|
+
},
|
|
80
|
+
"mobile.input.text": {
|
|
81
|
+
"level": "FULL"
|
|
82
|
+
},
|
|
83
|
+
"mobile.workflow.run": {
|
|
84
|
+
"level": "FULL"
|
|
85
|
+
},
|
|
86
|
+
"ios.app.terminate": {
|
|
87
|
+
"level": "FULL",
|
|
88
|
+
"note": "Terminate the test-session app only; NOT an OS force-stop."
|
|
89
|
+
},
|
|
90
|
+
"ios.diag.logs": {
|
|
91
|
+
"level": "PARTIAL",
|
|
92
|
+
"reasonCode": "PROCESS_SCOPED",
|
|
93
|
+
"replacesAndroidTool": "mobile.diag.logcat"
|
|
94
|
+
},
|
|
95
|
+
"ios.diag.energyProfile": {
|
|
96
|
+
"level": "PARTIAL",
|
|
97
|
+
"reasonCode": "OWN_CONTRACT",
|
|
98
|
+
"replacesAndroidTool": "mobile.diag.batterystats"
|
|
99
|
+
},
|
|
100
|
+
"runtime.setup": {
|
|
101
|
+
"level": "PARTIAL",
|
|
102
|
+
"reasonCode": "OPEN_AND_VERIFY_ARE_ADVISORY_ON_IOS",
|
|
103
|
+
"allowedOperations": [
|
|
104
|
+
"STATUS",
|
|
105
|
+
"OPEN",
|
|
106
|
+
"VERIFY"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"mobile.app.control": {
|
|
110
|
+
"level": "FULL"
|
|
111
|
+
}
|
|
49
112
|
},
|
|
50
|
-
|
|
51
113
|
"physical": {
|
|
52
|
-
"mobile.device.state": {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"mobile.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"mobile.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"mobile.app.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
114
|
+
"mobile.device.state": {
|
|
115
|
+
"level": "PARTIAL",
|
|
116
|
+
"reasonCode": "ORIENTATION_AND_APPSTATE_ONLY"
|
|
117
|
+
},
|
|
118
|
+
"mobile.app.list": {
|
|
119
|
+
"level": "PARTIAL",
|
|
120
|
+
"reasonCode": "DEVICECTL_OR_MDM"
|
|
121
|
+
},
|
|
122
|
+
"mobile.app.forceStop": {
|
|
123
|
+
"level": "NONE",
|
|
124
|
+
"replacementTool": "ios.app.terminate",
|
|
125
|
+
"reasonCode": "NO_OS_FORCE_STOP"
|
|
126
|
+
},
|
|
127
|
+
"mobile.app.clearData": {
|
|
128
|
+
"level": "NONE",
|
|
129
|
+
"reasonCode": "NO_PUBLIC_API"
|
|
130
|
+
},
|
|
131
|
+
"mobile.app.uninstall": {
|
|
132
|
+
"level": "PARTIAL",
|
|
133
|
+
"reasonCode": "SIGNED_DEVICECTL_OR_MDM"
|
|
134
|
+
},
|
|
135
|
+
"mobile.app.install": {
|
|
136
|
+
"level": "PARTIAL",
|
|
137
|
+
"reasonCode": "SIGNED_IPA_OR_MDM"
|
|
138
|
+
},
|
|
139
|
+
"mobile.app.permission.grant": {
|
|
140
|
+
"level": "NONE",
|
|
141
|
+
"reasonCode": "NO_PUBLIC_API"
|
|
142
|
+
},
|
|
143
|
+
"mobile.app.permission.revoke": {
|
|
144
|
+
"level": "PARTIAL",
|
|
145
|
+
"replacementTool": "ios.permission.reset",
|
|
146
|
+
"reasonCode": "XCUI_RESET_ONLY"
|
|
147
|
+
},
|
|
148
|
+
"ios.permission.reset": {
|
|
149
|
+
"level": "PARTIAL",
|
|
150
|
+
"reasonCode": "XCUI_RESET_AUTHORIZATION"
|
|
151
|
+
},
|
|
152
|
+
"mobile.diag": {
|
|
153
|
+
"level": "PARTIAL",
|
|
154
|
+
"reasonCode": "SUBSET_OF_KINDS_ON_IOS",
|
|
155
|
+
"allowedOperations": [
|
|
156
|
+
"CRASH",
|
|
157
|
+
"PERF",
|
|
158
|
+
"APP_INFO",
|
|
159
|
+
"STARTUP",
|
|
160
|
+
"BATTERY",
|
|
161
|
+
"NETSTATS",
|
|
162
|
+
"STORAGE"
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
"mobile.screen.inspect": {
|
|
166
|
+
"level": "PARTIAL",
|
|
167
|
+
"reasonCode": "DELTA_ONLY_ON_IOS",
|
|
168
|
+
"allowedOperations": [
|
|
169
|
+
"DELTA"
|
|
170
|
+
]
|
|
171
|
+
}
|
|
70
172
|
},
|
|
71
|
-
|
|
72
173
|
"simulator": {
|
|
73
|
-
"mobile.device.state": {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"mobile.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"mobile.app.clearData": {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
"
|
|
174
|
+
"mobile.device.state": {
|
|
175
|
+
"level": "FULL"
|
|
176
|
+
},
|
|
177
|
+
"mobile.app.list": {
|
|
178
|
+
"level": "FULL"
|
|
179
|
+
},
|
|
180
|
+
"mobile.app.forceStop": {
|
|
181
|
+
"level": "NONE",
|
|
182
|
+
"replacementTool": "ios.app.terminate",
|
|
183
|
+
"reasonCode": "NO_OS_FORCE_STOP"
|
|
184
|
+
},
|
|
185
|
+
"mobile.app.clearData": {
|
|
186
|
+
"level": "NONE",
|
|
187
|
+
"replacementTool": "ios.simulator.resetAppData",
|
|
188
|
+
"reasonCode": "USE_REINSTALL_NOT_ERASE"
|
|
189
|
+
},
|
|
190
|
+
"mobile.app.uninstall": {
|
|
191
|
+
"level": "FULL"
|
|
192
|
+
},
|
|
193
|
+
"mobile.app.install": {
|
|
194
|
+
"level": "FULL"
|
|
195
|
+
},
|
|
196
|
+
"mobile.app.permission.grant": {
|
|
197
|
+
"level": "PARTIAL",
|
|
198
|
+
"reasonCode": "SIMCTL_PRIVACY"
|
|
199
|
+
},
|
|
200
|
+
"mobile.app.permission.revoke": {
|
|
201
|
+
"level": "PARTIAL",
|
|
202
|
+
"reasonCode": "SIMCTL_PRIVACY"
|
|
203
|
+
},
|
|
204
|
+
"ios.permission.reset": {
|
|
205
|
+
"level": "FULL",
|
|
206
|
+
"reasonCode": "SIMCTL_PRIVACY"
|
|
207
|
+
},
|
|
208
|
+
"ios.simulator.resetAppData": {
|
|
209
|
+
"level": "FULL",
|
|
210
|
+
"note": "uninstall + reinstall the pinned artifact; NOT a device erase."
|
|
211
|
+
},
|
|
212
|
+
"ios.simulator.eraseDevice": {
|
|
213
|
+
"level": "FULL",
|
|
214
|
+
"destructive": true,
|
|
215
|
+
"defaultOff": true,
|
|
216
|
+
"reasonCode": "FULL_SIMULATOR_WIPE"
|
|
217
|
+
},
|
|
218
|
+
"mobile.diag": {
|
|
219
|
+
"level": "PARTIAL",
|
|
220
|
+
"reasonCode": "SUBSET_OF_KINDS_ON_IOS",
|
|
221
|
+
"allowedOperations": [
|
|
222
|
+
"CRASH",
|
|
223
|
+
"PERF",
|
|
224
|
+
"APP_INFO",
|
|
225
|
+
"STARTUP",
|
|
226
|
+
"BATTERY",
|
|
227
|
+
"NETSTATS",
|
|
228
|
+
"STORAGE"
|
|
229
|
+
]
|
|
230
|
+
},
|
|
231
|
+
"mobile.screen.inspect": {
|
|
232
|
+
"level": "PARTIAL",
|
|
233
|
+
"reasonCode": "DELTA_ONLY_ON_IOS",
|
|
234
|
+
"allowedOperations": [
|
|
235
|
+
"DELTA"
|
|
236
|
+
]
|
|
237
|
+
}
|
|
93
238
|
}
|
|
94
239
|
}
|
|
95
240
|
}
|
package/integrity.json
CHANGED
package/loader.cjs
CHANGED
|
@@ -14,7 +14,7 @@ const os = require("node:os");
|
|
|
14
14
|
const path = require("node:path");
|
|
15
15
|
const crypto = require("node:crypto");
|
|
16
16
|
|
|
17
|
-
const BUILD_ID = "
|
|
17
|
+
const BUILD_ID = "38d941d-20260804170901"; // pack-npx stamps the real build id
|
|
18
18
|
const ROOT = __dirname; // package root (loader.cjs sits here)
|
|
19
19
|
const DIST = path.join(ROOT, "dist");
|
|
20
20
|
const BUNDLE = path.join(DIST, "main.obf.cjs");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobridge-mcp",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "MoBridge MCP — a stdio MCP server exposing on-device Android/iOS UIs as fast semantic read / observe / find / act / verify tools plus screenshots. Ships an installer that wires it into Claude Code, Claude Desktop, Cursor and Codex.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
Binary file
|
|
Binary file
|