mobilecoder-mcp 1.0.1 → 1.0.2
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/.security.log +8 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp-handler.js +1 -1
- package/dist/mcp-handler.js.map +1 -1
- package/dist/webrtc.d.ts +6 -0
- package/dist/webrtc.d.ts.map +1 -1
- package/dist/webrtc.js +134 -26
- package/dist/webrtc.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +4 -4
- package/src/mcp-handler.ts +1 -1
- package/src/webrtc.ts +153 -25
package/.security.log
CHANGED
|
@@ -38,3 +38,11 @@
|
|
|
38
38
|
{"timestamp":"2026-01-19T19:05:32.721Z","event":"mcp_server_started","details":{"timestamp":1768849532721},"severity":"low","pid":14120,"user":"unknown"}
|
|
39
39
|
{"timestamp":"2026-01-19T19:55:48.328Z","event":"mcp_server_started","details":{"timestamp":1768852548328},"severity":"low","pid":15312,"user":"unknown"}
|
|
40
40
|
{"timestamp":"2026-01-19T21:18:55.224Z","event":"mcp_server_started","details":{"timestamp":1768857535224},"severity":"low","pid":14444,"user":"unknown"}
|
|
41
|
+
{"timestamp":"2026-01-20T17:05:53.653Z","event":"mcp_server_started","details":{"timestamp":1768928753653},"severity":"low","pid":8684,"user":"unknown"}
|
|
42
|
+
{"timestamp":"2026-01-20T18:50:01.944Z","event":"mcp_server_started","details":{"timestamp":1768935001944},"severity":"low","pid":1328,"user":"unknown"}
|
|
43
|
+
{"timestamp":"2026-01-20T20:32:12.756Z","event":"mcp_server_started","details":{"timestamp":1768941132756},"severity":"low","pid":14400,"user":"unknown"}
|
|
44
|
+
{"timestamp":"2026-01-20T20:43:09.314Z","event":"mcp_server_started","details":{"timestamp":1768941789314},"severity":"low","pid":12936,"user":"unknown"}
|
|
45
|
+
{"timestamp":"2026-01-20T20:47:06.818Z","event":"mcp_server_started","details":{"timestamp":1768942026818},"severity":"low","pid":13580,"user":"unknown"}
|
|
46
|
+
{"timestamp":"2026-01-24T20:19:47.199Z","event":"mcp_server_started","details":{"timestamp":1769285987199},"severity":"low","pid":9716,"user":"unknown"}
|
|
47
|
+
{"timestamp":"2026-01-24T20:24:33.021Z","event":"mobile_device_connected","details":{"timestamp":1769286273021},"severity":"low","pid":9716,"user":"unknown"}
|
|
48
|
+
{"timestamp":"2026-01-24T23:11:46.753Z","event":"mcp_server_started","details":{"timestamp":1769296306753},"severity":"low","pid":17644,"user":"unknown"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ import { UniversalAgent } from './agent.js';
|
|
|
11
11
|
import { WebRTCConnection } from './webrtc.js';
|
|
12
12
|
const program = new Command();
|
|
13
13
|
program
|
|
14
|
-
.name('
|
|
14
|
+
.name('mobilecoder-mcp')
|
|
15
15
|
.description('MCP server for MobileCoderMCP - enables mobile to desktop coding')
|
|
16
16
|
.version('1.0.0');
|
|
17
17
|
program
|
|
@@ -49,7 +49,7 @@ program
|
|
|
49
49
|
.action(async (options) => {
|
|
50
50
|
if (!options.code) {
|
|
51
51
|
console.error('❌ Error: Connection code is required');
|
|
52
|
-
console.log(' Use:
|
|
52
|
+
console.log(' Use: mobilecoder-mcp start --code=YOUR_CODE');
|
|
53
53
|
process.exit(1);
|
|
54
54
|
}
|
|
55
55
|
console.log('🔌 Starting Universal Agent...');
|
|
@@ -117,11 +117,11 @@ async function configureIDE(configPath, ideName, code, signalingUrl) {
|
|
|
117
117
|
if (!config.mcpServers) {
|
|
118
118
|
config.mcpServers = {};
|
|
119
119
|
}
|
|
120
|
-
// We assume the user has
|
|
120
|
+
// We assume the user has mobilecoder-mcp installed globally or via npx
|
|
121
121
|
// In npx context, we use the command name directly
|
|
122
122
|
config.mcpServers['mobile-coder'] = {
|
|
123
123
|
command: 'npx',
|
|
124
|
-
args: ['
|
|
124
|
+
args: ['mobilecoder-mcp', 'start', '--code', code, '--signaling', signalingUrl],
|
|
125
125
|
env: {
|
|
126
126
|
MCP_CONNECTION_CODE: code,
|
|
127
127
|
MCP_SIGNALING_URL: signalingUrl
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-handler.js
CHANGED
package/dist/mcp-handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-handler.js","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,+CAA+C;AAC/C,MAAM,YAAY,GAAa,EAAE,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAwB;IAC3D,oBAAoB;IACpB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp-handler.js","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/webrtc.d.ts
CHANGED
|
@@ -8,16 +8,22 @@ export declare class WebRTCConnection {
|
|
|
8
8
|
private onConnectCallback?;
|
|
9
9
|
private onDisconnectCallback?;
|
|
10
10
|
private debug;
|
|
11
|
+
private hmacSecret;
|
|
12
|
+
private cleanupInterval?;
|
|
13
|
+
private messageNonce;
|
|
11
14
|
constructor(code: string, signalingUrl: string, debug?: boolean);
|
|
15
|
+
private startCleanup;
|
|
12
16
|
private sendAnswerWithRetry;
|
|
13
17
|
connect(): Promise<void>;
|
|
14
18
|
private setupPeerListeners;
|
|
19
|
+
private handleIncomingMessage;
|
|
15
20
|
private startPollingForOffer;
|
|
16
21
|
send(message: any): void;
|
|
17
22
|
onMessage(callback: (message: any) => void): void;
|
|
18
23
|
onConnect(callback: () => void): void;
|
|
19
24
|
onDisconnect(callback: () => void): void;
|
|
20
25
|
disconnect(): void;
|
|
26
|
+
destroy(): void;
|
|
21
27
|
getConnected(): boolean;
|
|
22
28
|
}
|
|
23
29
|
//# sourceMappingURL=webrtc.d.ts.map
|
package/dist/webrtc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../src/webrtc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../src/webrtc.ts"],"names":[],"mappings":"AA0CA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,iBAAiB,CAAC,CAAyB;IACnD,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,oBAAoB,CAAC,CAAa;IAC1C,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,YAAY,CAAqB;gBAE7B,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe;IAwBtE,OAAO,CAAC,YAAY;YAUN,mBAAmB;IAiC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD9B,OAAO,CAAC,kBAAkB;IAiF1B,OAAO,CAAC,qBAAqB;YAsCf,oBAAoB;IAuClC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAYxB,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIjD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIrC,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIxC,UAAU,IAAI,IAAI;IAiBlB,OAAO,IAAI,IAAI;IAOf,YAAY,IAAI,OAAO;CAGxB"}
|
package/dist/webrtc.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import SimplePeer from 'simple-peer';
|
|
2
2
|
import { createRequire } from 'module';
|
|
3
|
+
import { createHash } from 'crypto';
|
|
3
4
|
const require = createRequire(import.meta.url);
|
|
4
5
|
// wrtc modülü Node.js ortamında WebRTC desteği sağlar
|
|
5
6
|
let wrtc;
|
|
@@ -15,6 +16,26 @@ catch (e) {
|
|
|
15
16
|
console.warn('⚠️ wrtc module not available, WebRTC may not work in Node.js environment');
|
|
16
17
|
}
|
|
17
18
|
}
|
|
19
|
+
// Simple HMAC implementation for Node.js
|
|
20
|
+
function generateHMAC(data, secret) {
|
|
21
|
+
return createHash('sha256').update(data + secret).digest('hex');
|
|
22
|
+
}
|
|
23
|
+
// Validate SDP for security
|
|
24
|
+
function validateSDP(sdp) {
|
|
25
|
+
if (!sdp || typeof sdp !== 'string')
|
|
26
|
+
return false;
|
|
27
|
+
// Check for DTLS fingerprint (critical for encryption)
|
|
28
|
+
if (!sdp.includes('a=fingerprint:')) {
|
|
29
|
+
console.error('❌ [MCP] Invalid SDP: missing DTLS fingerprint');
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
// Check for DTLS setup
|
|
33
|
+
if (!sdp.includes('a=setup:')) {
|
|
34
|
+
console.error('❌ [MCP] Invalid SDP: missing DTLS setup');
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
18
39
|
export class WebRTCConnection {
|
|
19
40
|
peer = null;
|
|
20
41
|
code;
|
|
@@ -25,17 +46,47 @@ export class WebRTCConnection {
|
|
|
25
46
|
onConnectCallback;
|
|
26
47
|
onDisconnectCallback;
|
|
27
48
|
debug;
|
|
49
|
+
hmacSecret;
|
|
50
|
+
cleanupInterval;
|
|
51
|
+
messageNonce = new Set();
|
|
28
52
|
constructor(code, signalingUrl, debug = false) {
|
|
29
53
|
this.code = code;
|
|
30
54
|
this.signalingUrl = signalingUrl;
|
|
31
55
|
this.debug = debug;
|
|
56
|
+
// Generate HMAC secret for this session
|
|
57
|
+
this.hmacSecret = createHash('sha256')
|
|
58
|
+
.update(code + Date.now() + Math.random())
|
|
59
|
+
.digest('hex');
|
|
60
|
+
// Start cleanup interval
|
|
61
|
+
this.startCleanup();
|
|
62
|
+
// Validate signaling URL
|
|
63
|
+
try {
|
|
64
|
+
const url = new URL(signalingUrl);
|
|
65
|
+
if (!url.protocol.startsWith('https') && url.hostname !== 'localhost' && url.hostname !== '127.0.0.1') {
|
|
66
|
+
console.warn('⚠️ [MCP] Warning: Signaling URL should use HTTPS in production');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
console.error('❌ [MCP] Invalid signaling URL:', signalingUrl);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
startCleanup() {
|
|
74
|
+
this.cleanupInterval = setInterval(() => {
|
|
75
|
+
// Clean up old nonces (prevent memory leak)
|
|
76
|
+
if (this.messageNonce.size > 1000) {
|
|
77
|
+
this.messageNonce.clear();
|
|
78
|
+
}
|
|
79
|
+
}, 60000); // Every minute
|
|
32
80
|
}
|
|
33
81
|
async sendAnswerWithRetry(signal, attempts = 3) {
|
|
34
82
|
const timestamp = new Date().toLocaleTimeString();
|
|
35
|
-
|
|
83
|
+
const signalType = signal.type || (signal.candidate ? 'candidate' : 'answer');
|
|
84
|
+
// Use trickle endpoint for ICE candidates, standard answer endpoint for SDP answer
|
|
85
|
+
const endpoint = signal.candidate ? '/signaling/answer' : '/signaling/answer';
|
|
86
|
+
console.log(`[${timestamp}] 📤 [Desktop] Sending ${signalType} to server...`);
|
|
36
87
|
for (let i = 0; i < attempts; i++) {
|
|
37
88
|
try {
|
|
38
|
-
const response = await fetch(`${this.signalingUrl}
|
|
89
|
+
const response = await fetch(`${this.signalingUrl}${endpoint}`, {
|
|
39
90
|
method: 'POST',
|
|
40
91
|
headers: { 'Content-Type': 'application/json' },
|
|
41
92
|
body: JSON.stringify({ code: this.code, signal })
|
|
@@ -43,17 +94,17 @@ export class WebRTCConnection {
|
|
|
43
94
|
if (!response.ok) {
|
|
44
95
|
throw new Error(`Server returned ${response.status}`);
|
|
45
96
|
}
|
|
46
|
-
console.log(`[${timestamp}] ✅
|
|
97
|
+
console.log(`[${timestamp}] ✅ [Desktop] ${signalType} sent. Waiting for P2P handshake...`);
|
|
47
98
|
return;
|
|
48
99
|
}
|
|
49
100
|
catch (error) {
|
|
50
|
-
console.error(`[${timestamp}] ❌ Failed to send
|
|
101
|
+
console.error(`[${timestamp}] ❌ [Desktop] Failed to send ${signalType} (Attempt ${i + 1}/${attempts}):`, error);
|
|
51
102
|
if (i < attempts - 1) {
|
|
52
103
|
await new Promise(r => setTimeout(r, 1000)); // Wait 1s
|
|
53
104
|
}
|
|
54
105
|
}
|
|
55
106
|
}
|
|
56
|
-
console.error(`[${timestamp}] ❌ Failed to send
|
|
107
|
+
console.error(`[${timestamp}] ❌ [Desktop] Failed to send ${signalType} after all attempts.`);
|
|
57
108
|
}
|
|
58
109
|
async connect() {
|
|
59
110
|
const timestamp = new Date().toLocaleTimeString();
|
|
@@ -114,6 +165,13 @@ export class WebRTCConnection {
|
|
|
114
165
|
if (state === 'connected' || state === 'completed') {
|
|
115
166
|
const pc = this.peer._pc;
|
|
116
167
|
if (pc) {
|
|
168
|
+
// Validate SDP for security
|
|
169
|
+
const remoteDescription = pc.remoteDescription;
|
|
170
|
+
if (remoteDescription && !validateSDP(remoteDescription.sdp)) {
|
|
171
|
+
console.error('❌ [MCP] Remote SDP validation failed');
|
|
172
|
+
this.disconnect();
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
117
175
|
pc.getStats().then((stats) => {
|
|
118
176
|
let usingRelay = false;
|
|
119
177
|
stats.forEach((report) => {
|
|
@@ -136,6 +194,15 @@ export class WebRTCConnection {
|
|
|
136
194
|
}
|
|
137
195
|
});
|
|
138
196
|
this.peer.on('signal', async (signal) => {
|
|
197
|
+
const timestamp = new Date().toLocaleTimeString();
|
|
198
|
+
const signalType = signal.type || (signal.candidate ? 'candidate' : 'unknown');
|
|
199
|
+
console.log(`[${timestamp}] 📡 [Desktop] Signal generated: ${signalType}`);
|
|
200
|
+
// Validate SDP before sending
|
|
201
|
+
if (signal.sdp && !validateSDP(signal.sdp)) {
|
|
202
|
+
console.error('❌ [MCP] Local SDP validation failed, not sending signal');
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
// Send answer and trickle ICE candidates
|
|
139
206
|
await this.sendAnswerWithRetry(signal);
|
|
140
207
|
});
|
|
141
208
|
this.peer.on('connect', () => {
|
|
@@ -149,10 +216,11 @@ export class WebRTCConnection {
|
|
|
149
216
|
this.peer.on('data', (data) => {
|
|
150
217
|
try {
|
|
151
218
|
const message = JSON.parse(data.toString());
|
|
152
|
-
|
|
153
|
-
|
|
219
|
+
this.handleIncomingMessage(message);
|
|
220
|
+
}
|
|
221
|
+
catch (e) {
|
|
222
|
+
// Silent fail for invalid JSON
|
|
154
223
|
}
|
|
155
|
-
catch (e) { }
|
|
156
224
|
});
|
|
157
225
|
this.peer.on('error', (err) => {
|
|
158
226
|
console.error('❌ WebRTC error:', err);
|
|
@@ -163,35 +231,63 @@ export class WebRTCConnection {
|
|
|
163
231
|
this.isConnected = false;
|
|
164
232
|
});
|
|
165
233
|
}
|
|
234
|
+
handleIncomingMessage(message) {
|
|
235
|
+
// Validate message structure
|
|
236
|
+
if (!message || typeof message !== 'object') {
|
|
237
|
+
console.warn('⚠️ [MCP] Invalid message structure');
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
// Check for nonce to prevent replay attacks
|
|
241
|
+
if (message.nonce) {
|
|
242
|
+
if (this.messageNonce.has(message.nonce)) {
|
|
243
|
+
console.warn('⚠️ [MCP] Duplicate message detected (replay attack)');
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
this.messageNonce.add(message.nonce);
|
|
247
|
+
}
|
|
248
|
+
// Verify HMAC if present
|
|
249
|
+
if (message.hmac) {
|
|
250
|
+
const data = JSON.stringify({
|
|
251
|
+
type: message.type,
|
|
252
|
+
text: message.text,
|
|
253
|
+
command: message.command,
|
|
254
|
+
timestamp: message.timestamp,
|
|
255
|
+
nonce: message.nonce
|
|
256
|
+
});
|
|
257
|
+
const expectedHMAC = generateHMAC(data, this.hmacSecret);
|
|
258
|
+
if (message.hmac !== expectedHMAC) {
|
|
259
|
+
console.error('❌ [MCP] HMAC verification failed');
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (this.onMessageCallback) {
|
|
264
|
+
this.onMessageCallback(message);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
166
267
|
async startPollingForOffer() {
|
|
167
268
|
let pollCount = 0;
|
|
168
269
|
const poll = async () => {
|
|
169
270
|
try {
|
|
271
|
+
// Stop if peer is connected or destroyed
|
|
272
|
+
if (this.peer && this.peer.connected) {
|
|
273
|
+
if (this.pollingInterval) {
|
|
274
|
+
clearInterval(this.pollingInterval);
|
|
275
|
+
this.pollingInterval = undefined;
|
|
276
|
+
}
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
170
279
|
pollCount++;
|
|
171
280
|
const response = await fetch(`${this.signalingUrl}/signaling/poll?code=${this.code}`);
|
|
172
281
|
const timestamp = new Date().toLocaleTimeString();
|
|
173
282
|
if (response.ok) {
|
|
174
283
|
const data = await response.json();
|
|
175
284
|
if (data.signal && this.peer) {
|
|
176
|
-
console.log(`[${timestamp}] 📥 Received
|
|
177
|
-
if (this.debug)
|
|
178
|
-
console.log(`[${timestamp}] 🔍 Signal data:`, JSON.stringify(data.signal).slice(0, 100) + '...');
|
|
179
|
-
// Handle case where signal might be processed but peer not ready? No, peer is ready.
|
|
285
|
+
console.log(`[${timestamp}] 📥 Received signal from mobile device, applying...`);
|
|
180
286
|
this.peer.signal(data.signal);
|
|
181
|
-
|
|
182
|
-
clearInterval(this.pollingInterval);
|
|
183
|
-
this.pollingInterval = undefined;
|
|
184
|
-
}
|
|
287
|
+
// Don't clear interval, keep polling for trickle candidates
|
|
185
288
|
}
|
|
186
|
-
else if (this.debug) {
|
|
187
|
-
console.log(`[${timestamp}] ⌛ Still waiting for
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
const errorText = await response.text().catch(() => 'No detail');
|
|
192
|
-
// Only warn periodically to avoid spamming console
|
|
193
|
-
if (pollCount % 10 === 0) {
|
|
194
|
-
console.warn(`[${timestamp}] ⚠️ Signaling poll failed (HTTP ${response.status}):`, errorText);
|
|
289
|
+
else if (this.debug && pollCount % 10 === 0) {
|
|
290
|
+
console.log(`[${timestamp}] ⌛ Still waiting for signals (Poll #${pollCount})...`);
|
|
195
291
|
}
|
|
196
292
|
}
|
|
197
293
|
}
|
|
@@ -201,7 +297,7 @@ export class WebRTCConnection {
|
|
|
201
297
|
}
|
|
202
298
|
}
|
|
203
299
|
};
|
|
204
|
-
// Poll every 1.5 seconds
|
|
300
|
+
// Poll every 1.5 seconds
|
|
205
301
|
this.pollingInterval = setInterval(poll, 1500);
|
|
206
302
|
poll();
|
|
207
303
|
}
|
|
@@ -231,11 +327,23 @@ export class WebRTCConnection {
|
|
|
231
327
|
if (this.pollingInterval) {
|
|
232
328
|
clearInterval(this.pollingInterval);
|
|
233
329
|
}
|
|
330
|
+
if (this.cleanupInterval) {
|
|
331
|
+
clearInterval(this.cleanupInterval);
|
|
332
|
+
}
|
|
234
333
|
if (this.peer) {
|
|
334
|
+
this.peer.removeAllListeners();
|
|
235
335
|
this.peer.destroy();
|
|
236
336
|
this.peer = null;
|
|
237
337
|
}
|
|
238
338
|
this.isConnected = false;
|
|
339
|
+
this.messageNonce.clear();
|
|
340
|
+
}
|
|
341
|
+
// Cleanup method for proper resource disposal
|
|
342
|
+
destroy() {
|
|
343
|
+
this.disconnect();
|
|
344
|
+
this.onMessageCallback = undefined;
|
|
345
|
+
this.onConnectCallback = undefined;
|
|
346
|
+
this.onDisconnectCallback = undefined;
|
|
239
347
|
}
|
|
240
348
|
getConnected() {
|
|
241
349
|
return this.isConnected;
|
package/dist/webrtc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc.js","sourceRoot":"","sources":["../src/webrtc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webrtc.js","sourceRoot":"","sources":["../src/webrtc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobilecoder-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MCP server for MobileCoderMCP - enables mobile to desktop coding",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"
|
|
8
|
+
"mobilecoder-mcp": "dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
@@ -34,4 +34,4 @@
|
|
|
34
34
|
"@types/simple-peer": "^9.11.8",
|
|
35
35
|
"typescript": "^5.5.0"
|
|
36
36
|
}
|
|
37
|
-
}
|
|
37
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { WebRTCConnection } from './webrtc.js';
|
|
|
14
14
|
const program = new Command();
|
|
15
15
|
|
|
16
16
|
program
|
|
17
|
-
.name('
|
|
17
|
+
.name('mobilecoder-mcp')
|
|
18
18
|
.description('MCP server for MobileCoderMCP - enables mobile to desktop coding')
|
|
19
19
|
.version('1.0.0');
|
|
20
20
|
|
|
@@ -59,7 +59,7 @@ program
|
|
|
59
59
|
.action(async (options: { code?: string; signaling: string; debug: boolean }) => {
|
|
60
60
|
if (!options.code) {
|
|
61
61
|
console.error('❌ Error: Connection code is required');
|
|
62
|
-
console.log(' Use:
|
|
62
|
+
console.log(' Use: mobilecoder-mcp start --code=YOUR_CODE');
|
|
63
63
|
process.exit(1);
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -139,11 +139,11 @@ async function configureIDE(configPath: string, ideName: string, code: string, s
|
|
|
139
139
|
config.mcpServers = {};
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
// We assume the user has
|
|
142
|
+
// We assume the user has mobilecoder-mcp installed globally or via npx
|
|
143
143
|
// In npx context, we use the command name directly
|
|
144
144
|
config.mcpServers['mobile-coder'] = {
|
|
145
145
|
command: 'npx',
|
|
146
|
-
args: ['
|
|
146
|
+
args: ['mobilecoder-mcp', 'start', '--code', code, '--signaling', signalingUrl],
|
|
147
147
|
env: {
|
|
148
148
|
MCP_CONNECTION_CODE: code,
|
|
149
149
|
MCP_SIGNALING_URL: signalingUrl
|
package/src/mcp-handler.ts
CHANGED
package/src/webrtc.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import SimplePeer from 'simple-peer';
|
|
2
2
|
import { createRequire } from 'module';
|
|
3
|
+
import { createHash } from 'crypto';
|
|
3
4
|
const require = createRequire(import.meta.url);
|
|
4
5
|
|
|
5
6
|
// wrtc modülü Node.js ortamında WebRTC desteği sağlar
|
|
@@ -15,6 +16,30 @@ try {
|
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
|
|
19
|
+
// Simple HMAC implementation for Node.js
|
|
20
|
+
function generateHMAC(data: string, secret: string): string {
|
|
21
|
+
return createHash('sha256').update(data + secret).digest('hex');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Validate SDP for security
|
|
25
|
+
function validateSDP(sdp: string): boolean {
|
|
26
|
+
if (!sdp || typeof sdp !== 'string') return false;
|
|
27
|
+
|
|
28
|
+
// Check for DTLS fingerprint (critical for encryption)
|
|
29
|
+
if (!sdp.includes('a=fingerprint:')) {
|
|
30
|
+
console.error('❌ [MCP] Invalid SDP: missing DTLS fingerprint');
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Check for DTLS setup
|
|
35
|
+
if (!sdp.includes('a=setup:')) {
|
|
36
|
+
console.error('❌ [MCP] Invalid SDP: missing DTLS setup');
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
18
43
|
export class WebRTCConnection {
|
|
19
44
|
private peer: SimplePeer.Instance | null = null;
|
|
20
45
|
private code: string;
|
|
@@ -25,21 +50,56 @@ export class WebRTCConnection {
|
|
|
25
50
|
private onConnectCallback?: () => void;
|
|
26
51
|
private onDisconnectCallback?: () => void;
|
|
27
52
|
private debug: boolean;
|
|
53
|
+
private hmacSecret: string;
|
|
54
|
+
private cleanupInterval?: NodeJS.Timeout;
|
|
55
|
+
private messageNonce = new Set<string>();
|
|
28
56
|
|
|
29
57
|
constructor(code: string, signalingUrl: string, debug: boolean = false) {
|
|
30
58
|
this.code = code;
|
|
31
59
|
this.signalingUrl = signalingUrl;
|
|
32
60
|
this.debug = debug;
|
|
61
|
+
|
|
62
|
+
// Generate HMAC secret for this session
|
|
63
|
+
this.hmacSecret = createHash('sha256')
|
|
64
|
+
.update(code + Date.now() + Math.random())
|
|
65
|
+
.digest('hex');
|
|
66
|
+
|
|
67
|
+
// Start cleanup interval
|
|
68
|
+
this.startCleanup();
|
|
69
|
+
|
|
70
|
+
// Validate signaling URL
|
|
71
|
+
try {
|
|
72
|
+
const url = new URL(signalingUrl);
|
|
73
|
+
if (!url.protocol.startsWith('https') && url.hostname !== 'localhost' && url.hostname !== '127.0.0.1') {
|
|
74
|
+
console.warn('⚠️ [MCP] Warning: Signaling URL should use HTTPS in production');
|
|
75
|
+
}
|
|
76
|
+
} catch (e) {
|
|
77
|
+
console.error('❌ [MCP] Invalid signaling URL:', signalingUrl);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private startCleanup(): void {
|
|
82
|
+
this.cleanupInterval = setInterval(() => {
|
|
83
|
+
// Clean up old nonces (prevent memory leak)
|
|
84
|
+
if (this.messageNonce.size > 1000) {
|
|
85
|
+
this.messageNonce.clear();
|
|
86
|
+
}
|
|
87
|
+
}, 60000); // Every minute
|
|
33
88
|
}
|
|
34
89
|
|
|
35
90
|
|
|
36
91
|
private async sendAnswerWithRetry(signal: any, attempts = 3): Promise<void> {
|
|
37
92
|
const timestamp = new Date().toLocaleTimeString();
|
|
38
|
-
|
|
93
|
+
const signalType = signal.type || (signal.candidate ? 'candidate' : 'answer');
|
|
94
|
+
|
|
95
|
+
// Use trickle endpoint for ICE candidates, standard answer endpoint for SDP answer
|
|
96
|
+
const endpoint = signal.candidate ? '/signaling/answer' : '/signaling/answer';
|
|
97
|
+
|
|
98
|
+
console.log(`[${timestamp}] 📤 [Desktop] Sending ${signalType} to server...`);
|
|
39
99
|
|
|
40
100
|
for (let i = 0; i < attempts; i++) {
|
|
41
101
|
try {
|
|
42
|
-
const response = await fetch(`${this.signalingUrl}
|
|
102
|
+
const response = await fetch(`${this.signalingUrl}${endpoint}`, {
|
|
43
103
|
method: 'POST',
|
|
44
104
|
headers: { 'Content-Type': 'application/json' },
|
|
45
105
|
body: JSON.stringify({ code: this.code, signal })
|
|
@@ -49,16 +109,16 @@ export class WebRTCConnection {
|
|
|
49
109
|
throw new Error(`Server returned ${response.status}`);
|
|
50
110
|
}
|
|
51
111
|
|
|
52
|
-
console.log(`[${timestamp}] ✅
|
|
112
|
+
console.log(`[${timestamp}] ✅ [Desktop] ${signalType} sent. Waiting for P2P handshake...`);
|
|
53
113
|
return;
|
|
54
114
|
} catch (error) {
|
|
55
|
-
console.error(`[${timestamp}] ❌ Failed to send
|
|
115
|
+
console.error(`[${timestamp}] ❌ [Desktop] Failed to send ${signalType} (Attempt ${i + 1}/${attempts}):`, error);
|
|
56
116
|
if (i < attempts - 1) {
|
|
57
117
|
await new Promise(r => setTimeout(r, 1000)); // Wait 1s
|
|
58
118
|
}
|
|
59
119
|
}
|
|
60
120
|
}
|
|
61
|
-
console.error(`[${timestamp}] ❌ Failed to send
|
|
121
|
+
console.error(`[${timestamp}] ❌ [Desktop] Failed to send ${signalType} after all attempts.`);
|
|
62
122
|
}
|
|
63
123
|
|
|
64
124
|
async connect(): Promise<void> {
|
|
@@ -126,6 +186,14 @@ export class WebRTCConnection {
|
|
|
126
186
|
if (state === 'connected' || state === 'completed') {
|
|
127
187
|
const pc = (this.peer as any)._pc;
|
|
128
188
|
if (pc) {
|
|
189
|
+
// Validate SDP for security
|
|
190
|
+
const remoteDescription = pc.remoteDescription;
|
|
191
|
+
if (remoteDescription && !validateSDP(remoteDescription.sdp)) {
|
|
192
|
+
console.error('❌ [MCP] Remote SDP validation failed');
|
|
193
|
+
this.disconnect();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
|
|
129
197
|
pc.getStats().then((stats: any) => {
|
|
130
198
|
let usingRelay = false;
|
|
131
199
|
stats.forEach((report: any) => {
|
|
@@ -145,6 +213,17 @@ export class WebRTCConnection {
|
|
|
145
213
|
});
|
|
146
214
|
|
|
147
215
|
this.peer.on('signal', async (signal: any) => {
|
|
216
|
+
const timestamp = new Date().toLocaleTimeString();
|
|
217
|
+
const signalType = signal.type || (signal.candidate ? 'candidate' : 'unknown');
|
|
218
|
+
console.log(`[${timestamp}] 📡 [Desktop] Signal generated: ${signalType}`);
|
|
219
|
+
|
|
220
|
+
// Validate SDP before sending
|
|
221
|
+
if (signal.sdp && !validateSDP(signal.sdp)) {
|
|
222
|
+
console.error('❌ [MCP] Local SDP validation failed, not sending signal');
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Send answer and trickle ICE candidates
|
|
148
227
|
await this.sendAnswerWithRetry(signal);
|
|
149
228
|
});
|
|
150
229
|
|
|
@@ -159,8 +238,10 @@ export class WebRTCConnection {
|
|
|
159
238
|
this.peer.on('data', (data: any) => {
|
|
160
239
|
try {
|
|
161
240
|
const message = JSON.parse(data.toString());
|
|
162
|
-
|
|
163
|
-
} catch (e) {
|
|
241
|
+
this.handleIncomingMessage(message);
|
|
242
|
+
} catch (e) {
|
|
243
|
+
// Silent fail for invalid JSON
|
|
244
|
+
}
|
|
164
245
|
});
|
|
165
246
|
|
|
166
247
|
this.peer.on('error', (err: any) => {
|
|
@@ -174,10 +255,57 @@ export class WebRTCConnection {
|
|
|
174
255
|
});
|
|
175
256
|
}
|
|
176
257
|
|
|
258
|
+
private handleIncomingMessage(message: any): void {
|
|
259
|
+
// Validate message structure
|
|
260
|
+
if (!message || typeof message !== 'object') {
|
|
261
|
+
console.warn('⚠️ [MCP] Invalid message structure');
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Check for nonce to prevent replay attacks
|
|
266
|
+
if (message.nonce) {
|
|
267
|
+
if (this.messageNonce.has(message.nonce)) {
|
|
268
|
+
console.warn('⚠️ [MCP] Duplicate message detected (replay attack)');
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
this.messageNonce.add(message.nonce);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Verify HMAC if present
|
|
275
|
+
if (message.hmac) {
|
|
276
|
+
const data = JSON.stringify({
|
|
277
|
+
type: message.type,
|
|
278
|
+
text: message.text,
|
|
279
|
+
command: message.command,
|
|
280
|
+
timestamp: message.timestamp,
|
|
281
|
+
nonce: message.nonce
|
|
282
|
+
});
|
|
283
|
+
const expectedHMAC = generateHMAC(data, this.hmacSecret);
|
|
284
|
+
|
|
285
|
+
if (message.hmac !== expectedHMAC) {
|
|
286
|
+
console.error('❌ [MCP] HMAC verification failed');
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (this.onMessageCallback) {
|
|
292
|
+
this.onMessageCallback(message);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
177
296
|
private async startPollingForOffer(): Promise<void> {
|
|
178
297
|
let pollCount = 0;
|
|
179
298
|
const poll = async () => {
|
|
180
299
|
try {
|
|
300
|
+
// Stop if peer is connected or destroyed
|
|
301
|
+
if (this.peer && (this.peer as any).connected) {
|
|
302
|
+
if (this.pollingInterval) {
|
|
303
|
+
clearInterval(this.pollingInterval);
|
|
304
|
+
this.pollingInterval = undefined;
|
|
305
|
+
}
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
|
|
181
309
|
pollCount++;
|
|
182
310
|
const response = await fetch(`${this.signalingUrl}/signaling/poll?code=${this.code}`);
|
|
183
311
|
const timestamp = new Date().toLocaleTimeString();
|
|
@@ -185,24 +313,11 @@ export class WebRTCConnection {
|
|
|
185
313
|
if (response.ok) {
|
|
186
314
|
const data = await response.json() as { signal?: any };
|
|
187
315
|
if (data.signal && this.peer) {
|
|
188
|
-
console.log(`[${timestamp}] 📥 Received
|
|
189
|
-
if (this.debug) console.log(`[${timestamp}] 🔍 Signal data:`, JSON.stringify(data.signal).slice(0, 100) + '...');
|
|
190
|
-
|
|
191
|
-
// Handle case where signal might be processed but peer not ready? No, peer is ready.
|
|
316
|
+
console.log(`[${timestamp}] 📥 Received signal from mobile device, applying...`);
|
|
192
317
|
this.peer.signal(data.signal);
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
this.pollingInterval = undefined;
|
|
197
|
-
}
|
|
198
|
-
} else if (this.debug) {
|
|
199
|
-
console.log(`[${timestamp}] ⌛ Still waiting for offer (Poll #${pollCount})...`);
|
|
200
|
-
}
|
|
201
|
-
} else {
|
|
202
|
-
const errorText = await response.text().catch(() => 'No detail');
|
|
203
|
-
// Only warn periodically to avoid spamming console
|
|
204
|
-
if (pollCount % 10 === 0) {
|
|
205
|
-
console.warn(`[${timestamp}] ⚠️ Signaling poll failed (HTTP ${response.status}):`, errorText);
|
|
318
|
+
// Don't clear interval, keep polling for trickle candidates
|
|
319
|
+
} else if (this.debug && pollCount % 10 === 0) {
|
|
320
|
+
console.log(`[${timestamp}] ⌛ Still waiting for signals (Poll #${pollCount})...`);
|
|
206
321
|
}
|
|
207
322
|
}
|
|
208
323
|
} catch (error) {
|
|
@@ -212,7 +327,7 @@ export class WebRTCConnection {
|
|
|
212
327
|
}
|
|
213
328
|
};
|
|
214
329
|
|
|
215
|
-
// Poll every 1.5 seconds
|
|
330
|
+
// Poll every 1.5 seconds
|
|
216
331
|
this.pollingInterval = setInterval(poll, 1500);
|
|
217
332
|
poll();
|
|
218
333
|
}
|
|
@@ -245,11 +360,24 @@ export class WebRTCConnection {
|
|
|
245
360
|
if (this.pollingInterval) {
|
|
246
361
|
clearInterval(this.pollingInterval);
|
|
247
362
|
}
|
|
363
|
+
if (this.cleanupInterval) {
|
|
364
|
+
clearInterval(this.cleanupInterval);
|
|
365
|
+
}
|
|
248
366
|
if (this.peer) {
|
|
367
|
+
this.peer.removeAllListeners();
|
|
249
368
|
this.peer.destroy();
|
|
250
369
|
this.peer = null;
|
|
251
370
|
}
|
|
252
371
|
this.isConnected = false;
|
|
372
|
+
this.messageNonce.clear();
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// Cleanup method for proper resource disposal
|
|
376
|
+
destroy(): void {
|
|
377
|
+
this.disconnect();
|
|
378
|
+
this.onMessageCallback = undefined;
|
|
379
|
+
this.onConnectCallback = undefined;
|
|
380
|
+
this.onDisconnectCallback = undefined;
|
|
253
381
|
}
|
|
254
382
|
|
|
255
383
|
getConnected(): boolean {
|