@techery/appspector-mcp 1.0.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.
@@ -0,0 +1,258 @@
1
+ import { decode } from '@msgpack/msgpack';
2
+ const MAX_SEQUENCE_ID = 30 * 24 * 3600;
3
+ const getDispatcherHistoryHost = (dispatcherAddress) => {
4
+ try {
5
+ const dispatcherWSURL = new URL(dispatcherAddress);
6
+ const host = dispatcherWSURL.hostname;
7
+ const protocol = dispatcherWSURL.protocol === 'ws:' ? 'http:' : 'https:';
8
+ return `${protocol}//${host}`;
9
+ }
10
+ catch {
11
+ return `https://${dispatcherAddress.replace(/^wss?:\/\//, '')}`;
12
+ }
13
+ };
14
+ const extractEvents = (packet) => {
15
+ const events = [];
16
+ if (packet.type !== 50) {
17
+ // Not EVENT_SEQUENCE
18
+ return events;
19
+ }
20
+ const payload = packet.payload;
21
+ if (!Array.isArray(payload)) {
22
+ return events;
23
+ }
24
+ for (const batch of payload) {
25
+ if (!Array.isArray(batch))
26
+ continue;
27
+ for (const event of batch) {
28
+ if (!event || typeof event !== 'object')
29
+ continue;
30
+ const eventData = event;
31
+ events.push({
32
+ id: eventData['id'] ?? '',
33
+ timestamp: eventData['timestamp'] ?? 0,
34
+ payload: eventData['payload'],
35
+ });
36
+ }
37
+ }
38
+ return events;
39
+ };
40
+ export const loadSessionHistory = async ({ session, userToken, }) => {
41
+ const dispatcherHost = getDispatcherHistoryHost(session.dispatcherAddress);
42
+ const historyURL = `${dispatcherHost}/history?ticket=${session.connectionTicket}&ssi=0&esi=${MAX_SEQUENCE_ID}&start_seq_id=0&end_seq_id=${MAX_SEQUENCE_ID}&connection_token=${session.connectionToken}&connectionToken=${session.connectionToken}`;
43
+ const response = await fetch(historyURL, {
44
+ headers: {
45
+ Authorization: `Bearer ${userToken}`,
46
+ },
47
+ });
48
+ if (!response.ok) {
49
+ throw new Error(`Failed to fetch history: ${response.status} ${response.statusText}`);
50
+ }
51
+ const buffer = await response.arrayBuffer();
52
+ return decodeSessionData(buffer);
53
+ };
54
+ const decodeSessionData = (buffer) => {
55
+ const httpRequests = new Map();
56
+ const consoleLogs = [];
57
+ try {
58
+ // The history data is MessagePack encoded
59
+ // It can be a single packet or multiple packets concatenated
60
+ let offset = 0;
61
+ const data = new Uint8Array(buffer);
62
+ while (offset < data.length) {
63
+ try {
64
+ // Try to decode from current offset
65
+ const decoded = decode(data.subarray(offset));
66
+ // Find the actual bytes consumed
67
+ // This is a simplification - in production you'd use ExtensionCodec or similar
68
+ const packet = decodePacketFromDecoded(decoded);
69
+ const events = extractEvents(packet);
70
+ for (const event of events) {
71
+ processEvent(event, httpRequests, consoleLogs);
72
+ }
73
+ // Move to the next packet - this is an approximation
74
+ // MessagePack doesn't have a built-in way to know the encoded size
75
+ // So we need to try decoding from different positions
76
+ offset = data.length; // For now, assume single packet
77
+ }
78
+ catch {
79
+ // If decoding fails, try next byte
80
+ offset++;
81
+ }
82
+ }
83
+ }
84
+ catch (e) {
85
+ // Try as a single packet
86
+ try {
87
+ const decoded = decode(new Uint8Array(buffer));
88
+ const packet = decodePacketFromDecoded(decoded);
89
+ const events = extractEvents(packet);
90
+ for (const event of events) {
91
+ processEvent(event, httpRequests, consoleLogs);
92
+ }
93
+ }
94
+ catch {
95
+ // Try as array of packets
96
+ try {
97
+ const decoded = decode(new Uint8Array(buffer));
98
+ if (Array.isArray(decoded)) {
99
+ for (const item of decoded) {
100
+ const packet = decodePacketFromDecoded(item);
101
+ const events = extractEvents(packet);
102
+ for (const event of events) {
103
+ processEvent(event, httpRequests, consoleLogs);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ catch {
109
+ console.error('Failed to decode session data');
110
+ }
111
+ }
112
+ }
113
+ return {
114
+ httpLogs: Array.from(httpRequests.values()),
115
+ consoleLogs,
116
+ };
117
+ };
118
+ const decodePacketFromDecoded = (decoded) => {
119
+ if (Array.isArray(decoded) && decoded.length >= 3) {
120
+ return {
121
+ type: decoded[0] ?? 0,
122
+ meta: decoded[1] ?? [],
123
+ payload: decoded[2],
124
+ };
125
+ }
126
+ // Try as object format
127
+ if (decoded && typeof decoded === 'object') {
128
+ const obj = decoded;
129
+ return {
130
+ type: obj['type'] ?? 50,
131
+ meta: obj['meta'] ?? [],
132
+ payload: obj['payload'] ?? decoded,
133
+ };
134
+ }
135
+ // Treat the whole thing as payload
136
+ return {
137
+ type: 50,
138
+ meta: [],
139
+ payload: decoded,
140
+ };
141
+ };
142
+ const processEvent = (event, httpRequests, consoleLogs) => {
143
+ const { id, timestamp, payload } = event;
144
+ if (id === 'http.http-request') {
145
+ const httpPayload = payload;
146
+ const request = httpPayload.request;
147
+ try {
148
+ const url = new URL(request.url);
149
+ const protocol = url.protocol.slice(0, -1); // Remove trailing ':'
150
+ httpRequests.set(request.uid, {
151
+ uid: request.uid,
152
+ timestamp,
153
+ request: {
154
+ url: request.url,
155
+ body: request.body ? new Uint8Array(request.body) : null,
156
+ protocol,
157
+ host: url.hostname,
158
+ pathname: url.search ? url.pathname + url.search : url.pathname,
159
+ method: request.method,
160
+ headers: request.headers ?? {},
161
+ isLargeBody: httpPayload.large_body,
162
+ },
163
+ });
164
+ }
165
+ catch {
166
+ // Invalid URL, skip
167
+ }
168
+ }
169
+ else if (id === 'http.http-response') {
170
+ const httpPayload = payload;
171
+ const response = httpPayload.response;
172
+ const existingLog = httpRequests.get(response.requestUid);
173
+ if (existingLog) {
174
+ existingLog.response = {
175
+ statusCode: response.code,
176
+ headers: response.headers ?? {},
177
+ body: response.body ? new Uint8Array(response.body) : null,
178
+ isLargeBody: httpPayload.large_body,
179
+ duration: response.tookMs,
180
+ error: response.error ?? undefined,
181
+ timings: response.timings,
182
+ };
183
+ }
184
+ }
185
+ else if (id === 'logs.log') {
186
+ const logPayload = payload;
187
+ consoleLogs.push({
188
+ timestamp,
189
+ message: logPayload.message,
190
+ tag: logPayload.tag,
191
+ level: logPayload.level ?? 'verbose',
192
+ });
193
+ }
194
+ };
195
+ export const createCurlString = (log) => {
196
+ const request = log.request;
197
+ try {
198
+ const url = new URL(request.pathname, request.url);
199
+ const headers = { ...request.headers };
200
+ // Remove headers that curl generates automatically
201
+ const avoidCurlHeaders = ['Host', 'Content-Length', 'Accept-Encoding', 'Connection'];
202
+ for (const header of avoidCurlHeaders) {
203
+ delete headers[header];
204
+ delete headers[header.toLowerCase()];
205
+ }
206
+ const contentType = Object.entries(headers).find(([k]) => k.toLowerCase() === 'content-type')?.at(1);
207
+ // Build curl command
208
+ let curlString = `curl --verbose -X ${request.method}`;
209
+ // Add URL
210
+ curlString += ` '${url.toString()}'`;
211
+ // Add headers
212
+ for (const [key, value] of Object.entries(headers)) {
213
+ curlString += ` -H '${key}: ${value}'`;
214
+ }
215
+ // Add body
216
+ if (request.body?.length) {
217
+ if (contentType?.toLowerCase() === 'application/json') {
218
+ const decoder = new TextDecoder('utf-8');
219
+ const bodyStr = decoder.decode(request.body).replace(/'/g, "'\\''");
220
+ curlString += ` -d '${bodyStr}'`;
221
+ }
222
+ else {
223
+ // For binary data, encode as hex
224
+ const hexStrings = [];
225
+ request.body.forEach((value) => {
226
+ hexStrings.push(`\\x${value.toString(16).padStart(2, '0')}`);
227
+ });
228
+ curlString = `echo -e '${hexStrings.join('')}' | ${curlString} --data-binary @-`;
229
+ }
230
+ }
231
+ return curlString;
232
+ }
233
+ catch (e) {
234
+ console.error('Failed to create curl string:', e);
235
+ return undefined;
236
+ }
237
+ };
238
+ export const executeCurl = async (curlCommand) => {
239
+ const { exec } = await import('child_process');
240
+ const { promisify } = await import('util');
241
+ const execAsync = promisify(exec);
242
+ try {
243
+ const { stdout, stderr } = await execAsync(curlCommand, {
244
+ maxBuffer: 10 * 1024 * 1024, // 10MB
245
+ timeout: 30000, // 30 seconds
246
+ });
247
+ return { stdout, stderr, exitCode: 0 };
248
+ }
249
+ catch (error) {
250
+ const execError = error;
251
+ return {
252
+ stdout: execError.stdout ?? '',
253
+ stderr: execError.stderr ?? String(error),
254
+ exitCode: execError.code ?? 1,
255
+ };
256
+ }
257
+ };
258
+ //# sourceMappingURL=session-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-loader.js","sourceRoot":"","sources":["../src/session-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ export declare enum SessionState {
2
+ ONLINE = "online",
3
+ OFFLINE = "offline",
4
+ BUFFERED = "buffered",
5
+ ARCHIVED = "archived"
6
+ }
7
+ export type Platform = 'android' | 'ios' | 'appletv' | 'macOS';
8
+ export interface Device {
9
+ readonly OSName: string;
10
+ readonly OSVersion: string;
11
+ readonly deviceName: string;
12
+ readonly deviceKey: string;
13
+ readonly modelName: string;
14
+ readonly modelNumber: string;
15
+ readonly platform: Platform;
16
+ readonly isRealDevice: boolean;
17
+ readonly type: string;
18
+ }
19
+ export interface Monitor {
20
+ readonly id: string;
21
+ readonly enable: boolean;
22
+ }
23
+ export interface Session {
24
+ readonly id: string;
25
+ readonly appId: number;
26
+ readonly accountId: number;
27
+ readonly protocolVersion: number;
28
+ readonly appVersion: string;
29
+ readonly appName: string;
30
+ readonly sdkVersion: string;
31
+ readonly buildNumber?: string;
32
+ readonly latestSdkVersion: string;
33
+ readonly bundleId: string;
34
+ readonly device: Device;
35
+ readonly createdAt: number;
36
+ readonly lastActiveAt: number;
37
+ readonly state: SessionState;
38
+ readonly dispatcherAddress: string;
39
+ readonly monitors: Monitor[];
40
+ readonly connectionToken: string;
41
+ readonly connectionTicket: string;
42
+ readonly city: string;
43
+ readonly countryName: string;
44
+ readonly ip: string;
45
+ readonly compressionDictHash?: string;
46
+ readonly metadata: Record<string, unknown>;
47
+ readonly archiveURL: string;
48
+ readonly sdkPublicKey: string;
49
+ }
50
+ export interface App {
51
+ readonly id: number;
52
+ readonly name: string;
53
+ readonly accountId: number;
54
+ readonly bundleId: string;
55
+ readonly platform: Platform;
56
+ readonly sdkKey: string;
57
+ readonly iconUrl?: string;
58
+ readonly encryptionEnabled: boolean;
59
+ readonly clientId?: string;
60
+ readonly isFavorite: boolean;
61
+ readonly isLocked: boolean;
62
+ readonly createdAt: number;
63
+ }
64
+ export interface User {
65
+ readonly id: number;
66
+ readonly email: string;
67
+ readonly name: string;
68
+ readonly role?: string;
69
+ readonly avatarUrl?: string;
70
+ }
71
+ export interface UserSession {
72
+ readonly id: number;
73
+ readonly email: string;
74
+ readonly name: string;
75
+ readonly accountId: number;
76
+ readonly token: string;
77
+ readonly account: Account;
78
+ readonly agreementAccepted: boolean;
79
+ readonly authMode: string;
80
+ }
81
+ export interface Account {
82
+ readonly accountId: number;
83
+ readonly accountType: string;
84
+ readonly accessType: string;
85
+ readonly active: boolean;
86
+ readonly planId: string;
87
+ }
88
+ export type HTTPHeaders = Record<string, string>;
89
+ export type HTTPBody = Uint8Array | null;
90
+ export interface HTTPRequest {
91
+ readonly large_body: boolean;
92
+ readonly request: {
93
+ readonly body: HTTPBody;
94
+ readonly headers: HTTPHeaders | null;
95
+ readonly method: string;
96
+ readonly uid: string;
97
+ readonly url: string;
98
+ };
99
+ }
100
+ export interface Timings {
101
+ readonly domainLookupDuration: number;
102
+ readonly requestDuration: number;
103
+ readonly secureHandshakeDuration: number;
104
+ readonly connectDuration: number;
105
+ readonly responseDuration: number;
106
+ }
107
+ export interface Sizes {
108
+ readonly statusLine?: number;
109
+ readonly headers: number;
110
+ readonly body: number;
111
+ }
112
+ export interface HTTPResponse {
113
+ readonly large_body: boolean;
114
+ readonly response: {
115
+ readonly body: HTTPBody;
116
+ readonly headers: HTTPHeaders | null;
117
+ readonly requestUid: string;
118
+ readonly tookMs: number;
119
+ readonly code: number;
120
+ readonly error: string | null;
121
+ readonly timings?: Timings | null;
122
+ readonly requestSizes?: Sizes | null;
123
+ readonly responseSizes?: Sizes | null;
124
+ };
125
+ }
126
+ export interface HTTPSummaryLog {
127
+ readonly uid: string;
128
+ readonly timestamp: number;
129
+ readonly request: HTTPRequestLog;
130
+ readonly response?: HTTPResponseLog;
131
+ }
132
+ export interface HTTPRequestLog {
133
+ readonly url: string;
134
+ readonly body: HTTPBody;
135
+ readonly protocol: string;
136
+ readonly host: string;
137
+ readonly pathname: string;
138
+ queryParams?: Record<string, unknown>;
139
+ readonly method: string;
140
+ readonly headers: HTTPHeaders;
141
+ readonly isLargeBody: boolean;
142
+ }
143
+ export interface HTTPResponseLog {
144
+ readonly statusCode: number;
145
+ readonly headers: HTTPHeaders;
146
+ readonly body: HTTPBody;
147
+ readonly isLargeBody: boolean;
148
+ readonly duration: number;
149
+ readonly error?: string;
150
+ readonly timings?: Timings | null;
151
+ readonly totalSize?: number;
152
+ }
153
+ export interface LogRecord {
154
+ readonly timestamp: number;
155
+ readonly message: string;
156
+ readonly tag?: string;
157
+ readonly level?: string;
158
+ }
159
+ export declare enum PacketType {
160
+ REQUEST = 20,
161
+ SYSTEM_REQUEST = 21,
162
+ RESPONSE = 30,
163
+ SYSTEM_RESPONSE = 31,
164
+ SYSTEM = 40,
165
+ EVENT_SEQUENCE = 50
166
+ }
167
+ export interface Packet {
168
+ type: PacketType;
169
+ meta: readonly number[];
170
+ payload: unknown;
171
+ }
172
+ export interface SessionEvent {
173
+ id: string;
174
+ timestamp: number;
175
+ payload: unknown;
176
+ }
177
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,19 @@
1
+ // Session types
2
+ export var SessionState;
3
+ (function (SessionState) {
4
+ SessionState["ONLINE"] = "online";
5
+ SessionState["OFFLINE"] = "offline";
6
+ SessionState["BUFFERED"] = "buffered";
7
+ SessionState["ARCHIVED"] = "archived";
8
+ })(SessionState || (SessionState = {}));
9
+ // Packet types
10
+ export var PacketType;
11
+ (function (PacketType) {
12
+ PacketType[PacketType["REQUEST"] = 20] = "REQUEST";
13
+ PacketType[PacketType["SYSTEM_REQUEST"] = 21] = "SYSTEM_REQUEST";
14
+ PacketType[PacketType["RESPONSE"] = 30] = "RESPONSE";
15
+ PacketType[PacketType["SYSTEM_RESPONSE"] = 31] = "SYSTEM_RESPONSE";
16
+ PacketType[PacketType["SYSTEM"] = 40] = "SYSTEM";
17
+ PacketType[PacketType["EVENT_SEQUENCE"] = 50] = "EVENT_SEQUENCE";
18
+ })(PacketType || (PacketType = {}));
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AA+KD,eAAe;AACf,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,kDAAY,CAAA;IACZ,gEAAmB,CAAA;IACnB,oDAAa,CAAA;IACb,kEAAoB,CAAA;IACpB,gDAAW,CAAA;IACX,gEAAmB,CAAA;AACrB,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB"}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@techery/appspector-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for AppSpector - load console/network logs from mobile devices, execute curl from captured HTTP requests",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "appspector-mcp": "./dist/index.js",
9
+ "appspector-mcp-http": "./dist/http-server.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "start": "node dist/index.js",
19
+ "start:http": "node dist/http-server.js",
20
+ "dev": "tsx src/index.ts",
21
+ "dev:http": "tsx src/http-server.ts",
22
+ "docker:build": "npm run build && docker build -t appspector-mcp .",
23
+ "docker:run": "docker run -p 3000:3000 appspector-mcp",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest",
26
+ "typecheck": "tsc --noEmit",
27
+ "lint": "eslint src --ext .ts",
28
+ "prepublishOnly": "npm run build"
29
+ },
30
+ "keywords": [
31
+ "mcp",
32
+ "model-context-protocol",
33
+ "appspector",
34
+ "mobile",
35
+ "debugging",
36
+ "logs",
37
+ "network",
38
+ "curl",
39
+ "claude",
40
+ "ai"
41
+ ],
42
+ "author": "Techery",
43
+ "license": "MIT",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/techery/appspector-mcp.git"
47
+ },
48
+ "homepage": "https://github.com/techery/appspector-mcp#readme",
49
+ "bugs": {
50
+ "url": "https://github.com/techery/appspector-mcp/issues"
51
+ },
52
+ "engines": {
53
+ "node": ">=18.0.0"
54
+ },
55
+ "publishConfig": {
56
+ "access": "public"
57
+ },
58
+ "dependencies": {
59
+ "@modelcontextprotocol/sdk": "^1.0.0",
60
+ "@msgpack/msgpack": "^3.0.0-beta2",
61
+ "ws": "^8.16.0",
62
+ "zod": "^3.22.0"
63
+ },
64
+ "devDependencies": {
65
+ "@types/node": "^20.10.0",
66
+ "@types/ws": "^8.5.10",
67
+ "@typescript-eslint/eslint-plugin": "^6.13.0",
68
+ "@typescript-eslint/parser": "^6.13.0",
69
+ "eslint": "^8.55.0",
70
+ "tsx": "^4.7.0",
71
+ "typescript": "^5.3.0",
72
+ "vitest": "^4.0.17"
73
+ }
74
+ }