mobilecoder-mcp 1.0.5 β†’ 2.0.1

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 CHANGED
@@ -48,3 +48,6 @@
48
48
  {"timestamp":"2026-01-24T23:11:46.753Z","event":"mcp_server_started","details":{"timestamp":1769296306753},"severity":"low","pid":17644,"user":"unknown"}
49
49
  {"timestamp":"2026-01-25T06:14:25.194Z","event":"mcp_server_started","details":{"timestamp":1769321665193},"severity":"low","pid":1464,"user":"unknown"}
50
50
  {"timestamp":"2026-01-25T06:49:16.008Z","event":"mcp_server_started","details":{"timestamp":1769323756008},"severity":"low","pid":19532,"user":"unknown"}
51
+ {"timestamp":"2026-02-02T22:30:02.241Z","event":"mcp_server_started","details":{"timestamp":1770071402240},"severity":"low","pid":12948,"user":"unknown"}
52
+ {"timestamp":"2026-02-02T22:33:52.400Z","event":"mcp_server_started","details":{"timestamp":1770071632399},"severity":"low","pid":7800,"user":"unknown"}
53
+ {"timestamp":"2026-02-03T19:10:22.296Z","event":"mcp_server_started","details":{"timestamp":1770145822295},"severity":"low","pid":7864,"user":"unknown"}
package/dist/agent.d.ts CHANGED
@@ -1,10 +1,18 @@
1
- import { WebRTCConnection } from './webrtc.js';
2
- export declare class UniversalAgent {
3
- private webrtc;
4
- private cliAdapter;
5
- private activeTool;
6
- constructor(webrtc: WebRTCConnection);
7
- start(): Promise<void>;
8
- private handleMessage;
1
+ export declare class ZKRelayAgent {
2
+ private socket;
3
+ private ptyProcess;
4
+ private secretCode;
5
+ private roomId;
6
+ private encryptionKey;
7
+ private spinner;
8
+ constructor();
9
+ private setupSecurity;
10
+ private initPTY;
11
+ private connectToRelay;
12
+ private handleIncomingMessage;
13
+ private handleToolCall;
14
+ private sendSecurePayload;
15
+ private sendEnvInfo;
16
+ private printBanner;
9
17
  }
10
18
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/C,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAwB;gBAE9B,MAAM,EAAE,gBAAgB;IAK9B,KAAK;IAkCX,OAAO,CAAC,aAAa;CAwCxB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAaA,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAwC;;IASvD,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,OAAO;IAkBf,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,qBAAqB;YAwDf,cAAc;IAyC5B,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;CAYtB"}
package/dist/agent.js CHANGED
@@ -1,75 +1,224 @@
1
- import { setupMCPServer } from './mcp-handler.js';
2
- import { CLIAdapter } from './adapters/cli-adapter.js';
3
- export class UniversalAgent {
4
- webrtc;
5
- cliAdapter;
6
- activeTool = 'mcp';
7
- constructor(webrtc) {
8
- this.webrtc = webrtc;
9
- this.cliAdapter = new CLIAdapter();
1
+ import { io } from 'socket.io-client';
2
+ import * as os from 'os';
3
+ import * as pty from 'node-pty';
4
+ import CryptoJS from 'crypto-js';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ // 🚨 BURAYI KENDİ DOMAIN ADRESİNLE DEĞİŞTİR!
10
+ const RELAY_SERVER_URL = 'https://api.mobilecoder.xyz';
11
+ export class ZKRelayAgent {
12
+ socket;
13
+ ptyProcess;
14
+ secretCode;
15
+ roomId;
16
+ encryptionKey;
17
+ spinner = ora('Initializing Secure Tunnel...');
18
+ constructor() {
19
+ this.setupSecurity();
20
+ this.initPTY();
21
+ this.connectToRelay();
10
22
  }
11
- async start() {
12
- console.log('πŸš€ Universal Agent starting...');
13
- // Initialize MCP Server (Cursor integration)
14
- // We run this in parallel because it sets up its own listeners
15
- // Note: In the future, we might want to wrap this better
16
- setupMCPServer(this.webrtc).catch(err => {
17
- console.error('Failed to start MCP server:', err);
23
+ // 1. Güvenlik Katmanı: Kod Üret ve Anahtar Türet
24
+ setupSecurity() {
25
+ // 6 Haneli rastgele kod (Kullanıcının gâreceği)
26
+ const randomNum = Math.floor(100000 + Math.random() * 900000);
27
+ this.secretCode = randomNum.toString();
28
+ // Oda ID'si: Kodun Hash'i (Sunucu sadece bunu gΓΆrΓΌr, kodu gΓΆremez)
29
+ this.roomId = CryptoJS.SHA256(this.secretCode).toString();
30
+ // Şifreleme Anahtarı: Kodun kendisi (AES-256 için kullanılacak)
31
+ this.encryptionKey = this.secretCode;
32
+ }
33
+ // 2. Terminal (PTY) Başlatma
34
+ initPTY() {
35
+ const shell = os.platform() === 'win32' ? 'powershell.exe' : (process.env.SHELL || 'bash');
36
+ this.ptyProcess = pty.spawn(shell, [], {
37
+ name: 'xterm-256color',
38
+ cols: 80,
39
+ rows: 24,
40
+ cwd: process.cwd(),
41
+ env: process.env
18
42
  });
19
- // Initialize CLI Adapter listeners
20
- this.cliAdapter.onOutput((data) => {
21
- this.webrtc.send({
22
- type: 'cli_output',
23
- data: data,
24
- timestamp: Date.now()
25
- });
43
+ // Terminalden çıkan veriyi şifrele ve yolla
44
+ this.ptyProcess.onData((data) => {
45
+ this.sendSecurePayload('term_data', data);
46
+ });
47
+ }
48
+ // 3. Relay Sunucusuna Bağlanma
49
+ connectToRelay() {
50
+ this.spinner.start('Connecting to MobileCoder Relay Network...');
51
+ this.socket = io(RELAY_SERVER_URL, {
52
+ transports: ['websocket'], // HΔ±z iΓ§in sadece websocket
53
+ reconnection: true,
54
+ reconnectionAttempts: Infinity
55
+ });
56
+ this.socket.on('connect', () => {
57
+ this.spinner.succeed(chalk.green('Connected to Relay Node!'));
58
+ // Odaya KatΔ±l (Sadece Hash ID gΓΆnderilir)
59
+ this.socket.emit('join_room', { code: this.roomId, type: 'agent' });
60
+ this.printBanner();
61
+ });
62
+ this.socket.on('disconnect', () => {
63
+ this.spinner.warn(chalk.yellow('Connection lost. Reconnecting...'));
64
+ });
65
+ // Mobilden biri bağlandığında
66
+ this.socket.on('peer_joined', () => {
67
+ console.log(chalk.green('\nπŸ“± Mobile Client Connected via Encrypted Tunnel!'));
68
+ this.sendEnvInfo();
69
+ });
70
+ // Mobilden şifreli veri geldiğinde
71
+ this.socket.on('relay_data', (message) => {
72
+ this.handleIncomingMessage(message);
26
73
  });
27
- // Override the WebRTC message handler to route commands
28
- // We need to be careful not to conflict with mcp-handler's listeners
29
- // Currently mcp-handler adds its own listener. SimplePeer supports multiple listeners.
30
- this.webrtc.onMessage((message) => {
31
- this.handleMessage(message);
74
+ // Also listen for connect_error
75
+ this.socket.on('connect_error', (err) => {
76
+ // console.error(err);
32
77
  });
78
+ }
79
+ // Gelen veriyi çâz ve işle
80
+ handleIncomingMessage(encryptedPayload) {
33
81
  try {
34
- await this.webrtc.connect();
82
+ // Payload might be wrapped { e: ... } or string
83
+ let ciphertext = encryptedPayload;
84
+ if (typeof encryptedPayload === 'object' && encryptedPayload.e) {
85
+ ciphertext = encryptedPayload.e;
86
+ }
87
+ const bytes = CryptoJS.AES.decrypt(ciphertext, this.encryptionKey);
88
+ const originalText = bytes.toString(CryptoJS.enc.Utf8);
89
+ if (!originalText)
90
+ return;
91
+ // Veri JSON mu? (Resize komutu vs olabilir)
92
+ try {
93
+ const cmd = JSON.parse(originalText);
94
+ // 1. Terminal Input (Keystrokes)
95
+ if (cmd.type === 'input') {
96
+ this.ptyProcess.write(cmd.data);
97
+ return;
98
+ }
99
+ // 2. Terminal Resize
100
+ if (cmd.type === 'resize') {
101
+ this.ptyProcess.resize(cmd.cols, cmd.rows);
102
+ return;
103
+ }
104
+ // 3. Chat Commands (e.g. "ls -la")
105
+ if (cmd.type === 'command') {
106
+ this.ptyProcess.write(cmd.text + '\r');
107
+ return;
108
+ }
109
+ // 4. CLI Tool/Button Commands (e.g. "git status")
110
+ if (cmd.type === 'cli_command') {
111
+ this.ptyProcess.write(cmd.command + '\r');
112
+ return;
113
+ }
114
+ // 5. Tool Calls (File System Access)
115
+ if (cmd.type === 'tool_call') {
116
+ this.handleToolCall(cmd.tool, cmd.data, cmd.id);
117
+ return;
118
+ }
119
+ }
120
+ catch (e) {
121
+ // JSON değilse saf terminal girdisidir
122
+ this.ptyProcess.write(originalText);
123
+ }
35
124
  }
36
125
  catch (error) {
37
- console.error('Failed to connect WebRTC:', error);
126
+ // Şifre çâzülemezse (Yanlış anahtar vb.) sessizce yut
38
127
  }
39
128
  }
40
- handleMessage(message) {
41
- // console.log('Universal Agent received:', message);
42
- if (message.type === 'switch_tool') {
43
- this.activeTool = message.tool;
44
- console.log(`πŸ”„ Switched active tool to: ${this.activeTool}`);
45
- this.webrtc.send({
46
- type: 'system',
47
- message: `Switched to ${this.activeTool}`
129
+ async handleToolCall(tool, args, id) {
130
+ try {
131
+ let result = null;
132
+ if (tool === 'list_directory') {
133
+ const dirPath = args.path ? path.resolve(args.path) : process.cwd();
134
+ const entries = await fs.promises.readdir(dirPath, { withFileTypes: true });
135
+ const files = entries.map(entry => ({
136
+ name: entry.name,
137
+ type: entry.isDirectory() ? 'directory' : 'file',
138
+ size: 0 // Simplification for speed
139
+ }));
140
+ result = { files };
141
+ }
142
+ else if (tool === 'read_file') {
143
+ const filePath = path.resolve(args.path);
144
+ const content = await fs.promises.readFile(filePath, 'utf-8');
145
+ result = { content };
146
+ }
147
+ else {
148
+ throw new Error(`Unknown tool: ${tool}`);
149
+ }
150
+ this.sendSecurePayload('tool_result', {
151
+ id,
152
+ result
48
153
  });
49
- return;
50
154
  }
51
- if (message.type === 'switch_ide') {
52
- console.log(`πŸ–₯️ Target IDE switched to: ${message.ide}`);
53
- this.webrtc.send({
54
- type: 'system',
55
- message: `Target IDE: ${message.ide}`
155
+ catch (error) {
156
+ this.sendSecurePayload('tool_result', {
157
+ id,
158
+ error: error.message,
159
+ type: 'error'
56
160
  });
57
- return;
58
161
  }
59
- if (message.type === 'switch_model') {
60
- console.log(`πŸ€– AI Model preference: ${message.model}`);
61
- this.webrtc.send({
62
- type: 'system',
63
- message: `Model: ${message.model}`
64
- });
65
- return;
162
+ }
163
+ // Veriyi şifrele ve gânder
164
+ sendSecurePayload(type, data) {
165
+ let payloadStr = '';
166
+ if (type === 'meta' || type === 'tool_result') {
167
+ // Standardize format
168
+ // For tool_result, data already contains id/result/error
169
+ // We wrap it in the top level object structure expected by client
170
+ // Client expects: { type: 'result', id: ..., result: ... } OR { type: 'error', id: ..., error: ... }
171
+ if (type === 'tool_result') {
172
+ // data is { id, result } or { id, error, type: 'error' }
173
+ if (data.type === 'error') {
174
+ payloadStr = JSON.stringify({ ...data });
175
+ }
176
+ else {
177
+ payloadStr = JSON.stringify({ type: 'result', ...data });
178
+ }
179
+ }
180
+ else {
181
+ payloadStr = JSON.stringify(data);
182
+ }
66
183
  }
67
- if (message.type === 'cli_command') {
68
- const command = message.command;
69
- console.log(`πŸ’» Received CLI command: ${command}`);
70
- this.cliAdapter.execute(command);
184
+ else if (type === 'term_data') {
185
+ // Wrap output in { type: 'output', data: ... }
186
+ if (typeof data === 'string') {
187
+ payloadStr = JSON.stringify({ type: 'output', data: data });
188
+ }
189
+ else {
190
+ payloadStr = JSON.stringify(data);
191
+ }
71
192
  }
72
- // MCP commands are handled by mcp-handler.ts directly via its own listener
193
+ // Fallback if empty (shouldn't happen with above logic)
194
+ if (!payloadStr)
195
+ payloadStr = JSON.stringify(data);
196
+ const encrypted = CryptoJS.AES.encrypt(payloadStr, this.encryptionKey).toString();
197
+ this.socket.emit('relay_data', {
198
+ room: this.roomId,
199
+ payload: { e: encrypted }
200
+ });
201
+ }
202
+ sendEnvInfo() {
203
+ const info = {
204
+ type: 'host_info',
205
+ username: os.userInfo().username,
206
+ hostname: os.hostname(),
207
+ platform: os.platform(),
208
+ cwd: process.cwd()
209
+ };
210
+ this.sendSecurePayload('meta', info);
211
+ }
212
+ printBanner() {
213
+ console.log('\n' + chalk.bgBlue.bold(' MOBILECODER ZK-RELAY v2.0.1 '));
214
+ console.log(chalk.gray('Secure, End-to-End Encrypted Terminal Bridge\n'));
215
+ console.log(chalk.yellow('β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”'));
216
+ console.log(chalk.yellow('β”‚ πŸ”‘ CONNECTION CODE (ENTER ON APP) β”‚'));
217
+ console.log(chalk.yellow('β”‚ β”‚'));
218
+ console.log(chalk.yellow(`β”‚ ${chalk.white.bold.bgBlack(` ${this.secretCode.slice(0, 3)} - ${this.secretCode.slice(3)} `)} β”‚`));
219
+ console.log(chalk.yellow('β”‚ β”‚'));
220
+ console.log(chalk.yellow('β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜'));
221
+ console.log(chalk.cyan('\nWaiting for mobile connection...'));
73
222
  }
74
223
  }
75
224
  //# sourceMappingURL=agent.js.map
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { ZKRelayAgent } from './agent.js';
4
+ import chalk from 'chalk';
5
+ const program = new Command();
6
+ program
7
+ .name('mobilecoder-mcp')
8
+ .description('MobileCoder Desktop Agent - ZK-Relay Edition')
9
+ .version('2.0.0');
10
+ program
11
+ .command('init')
12
+ .description('Start the secure relay agent')
13
+ .action(() => {
14
+ try {
15
+ new ZKRelayAgent();
16
+ }
17
+ catch (error) {
18
+ console.error(chalk.red('Fatal Error:'), error);
19
+ process.exit(1);
20
+ }
21
+ });
22
+ // Varsayılan komut (argüman girilmezse init çalışsın)
23
+ if (!process.argv.slice(2).length) {
24
+ try {
25
+ new ZKRelayAgent();
26
+ }
27
+ catch (error) {
28
+ console.error(chalk.red('Fatal Error:'), error);
29
+ process.exit(1);
30
+ }
31
+ }
32
+ else {
33
+ program.parse(process.argv);
34
+ }
35
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,GAAG,EAAE;IACT,IAAI,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,sDAAsD;AACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,IAAI,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;KAAM,CAAC;IACJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
package/dist/index.js CHANGED
@@ -3,10 +3,6 @@ import { Command } from 'commander';
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
5
  import * as os from 'os';
6
- import * as crypto from 'crypto';
7
- import { createRequire } from 'module';
8
- const require = createRequire(import.meta.url);
9
- const qrcode = require('qrcode-terminal');
10
6
  import { UniversalAgent } from './agent.js';
11
7
  import { WebRTCConnection } from './webrtc.js';
12
8
  const program = new Command();
@@ -16,7 +12,7 @@ program
16
12
  .version('1.0.0');
17
13
  program
18
14
  .command('init')
19
- .description('Initialize connection, generate QR code and start the agent')
15
+ .description('Initialize connection and start the agent')
20
16
  .option('-s, --signaling <url>', 'Signaling server URL', process.env.MCP_SIGNALING_URL || 'https://api.mobilecoder.xyz/api')
21
17
  .option('--debug', 'Enable debug logging', false)
22
18
  .action(async (options) => {
@@ -24,18 +20,24 @@ program
24
20
  if (options.debug) {
25
21
  console.log('πŸ” Debug mode enabled');
26
22
  }
27
- console.log('\nπŸ“± MobileCoder MCP - Quick Setup');
28
- console.log('================================');
29
- console.log(`\nπŸ”‘ Your Pairing Code: ${code}`);
30
- console.log('Scan the QR code below with your mobile device to connect:\n');
31
- // Generate QR code in terminal
32
- // Use environment variable or default to the deployed URL
33
- const webAppUrl = process.env.MOBILE_CODER_WEB_URL || 'https://mobilecoder.xyz';
34
- const pairingUrl = `${webAppUrl}/connect?code=${code}`;
35
- qrcode.generate(pairingUrl, { small: true });
36
- console.log('\nπŸš€ Configuring IDEs...');
23
+ console.log('\n╔════════════════════════════════════════════════════════════╗');
24
+ console.log('β•‘ β•‘');
25
+ console.log('β•‘ πŸ“± MobileCoderMCP β•‘');
26
+ console.log('β•‘ β•‘');
27
+ console.log('╠════════════════════════════════════════════════════════════╣');
28
+ console.log(`β•‘ β•‘`);
29
+ console.log(`β•‘ πŸ”‘ YOUR CONNECTION CODE: ${code} β•‘`);
30
+ console.log(`β•‘ β•‘`);
31
+ console.log('╠════════════════════════════════════════════════════════════╣');
32
+ console.log('β•‘ β•‘');
33
+ console.log('β•‘ πŸ“² From your phone or another device: β•‘');
34
+ console.log('β•‘ β•‘');
35
+ console.log('β•‘ 1. Go to https://mobilecoder.xyz β•‘');
36
+ console.log('β•‘ 2. Sign in with Google β•‘');
37
+ console.log('β•‘ 3. Enter the code above β•‘');
38
+ console.log('β•‘ β•‘');
39
+ console.log('β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•');
37
40
  await autoConfigureIDEs(code, options.signaling);
38
- console.log('\nπŸ”Œ Starting Universal Agent...');
39
41
  const webrtc = new WebRTCConnection(code, options.signaling, options.debug);
40
42
  const agent = new UniversalAgent(webrtc);
41
43
  await agent.start();
@@ -52,9 +54,6 @@ program
52
54
  console.log(' Use: mobilecoder-mcp start --code=YOUR_CODE');
53
55
  process.exit(1);
54
56
  }
55
- console.log('πŸ”Œ Starting Universal Agent...');
56
- console.log(` Connection code: ${options.code}`);
57
- console.log(` Signaling server: ${options.signaling}\n`);
58
57
  const webrtc = new WebRTCConnection(options.code, options.signaling, options.debug);
59
58
  const agent = new UniversalAgent(webrtc);
60
59
  await agent.start();
@@ -83,7 +82,12 @@ program
83
82
  });
84
83
  program.parse();
85
84
  function generateConnectionCode() {
86
- return crypto.randomBytes(3).toString('hex').toUpperCase();
85
+ const chars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
86
+ let result = '';
87
+ for (let i = 0; i < 6; i++) {
88
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
89
+ }
90
+ return result;
87
91
  }
88
92
  async function autoConfigureIDEs(code, signalingUrl) {
89
93
  const configs = {
@@ -128,7 +132,6 @@ async function configureIDE(configPath, ideName, code, signalingUrl) {
128
132
  }
129
133
  };
130
134
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
131
- console.log(` βœ… ${ideName.charAt(0).toUpperCase() + ideName.slice(1)} linked.`);
132
135
  }
133
136
  async function removeFromConfig(configPath, serverName) {
134
137
  if (!fs.existsSync(configPath)) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-handler.d.ts","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAmB/C,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4N5E"}
1
+ {"version":3,"file":"mcp-handler.d.ts","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAwC/C,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiP5E"}
@@ -6,6 +6,24 @@ import * as fs from 'fs';
6
6
  import * as path from 'path';
7
7
  // Queue to store commands received from mobile
8
8
  const commandQueue = [];
9
+ const ALLOWED_METHODS = {
10
+ 'initialize': true,
11
+ 'initialized': true,
12
+ 'tools/list': true,
13
+ 'tools/call': true,
14
+ 'prompts/list': true,
15
+ 'prompts/get': true,
16
+ 'resources/list': true,
17
+ 'resources/read': true,
18
+ 'resources/subscribe': true,
19
+ 'resources/unsubscribe': true,
20
+ 'sampling/createMessage': true,
21
+ 'logging/setLevel': true,
22
+ 'completion/complete': true
23
+ };
24
+ function isMethodAllowed(method) {
25
+ return ALLOWED_METHODS[method] === true;
26
+ }
9
27
  export async function setupMCPServer(webrtc) {
10
28
  // Create MCP server
11
29
  const server = new Server({
@@ -136,10 +154,37 @@ export async function setupMCPServer(webrtc) {
136
154
  });
137
155
  // Connect WebRTC listeners
138
156
  webrtc.onConnect(() => {
139
- console.log('πŸ“± [MCP] Mobile device connected');
140
157
  securityLogger.log('mobile_device_connected', { timestamp: Date.now() }, 'low');
141
158
  });
142
159
  webrtc.onMessage(async (message) => {
160
+ // Detailed logging for debugging
161
+ if (message.type !== 'pong') {
162
+ console.log('═══════════════════════════════════════');
163
+ console.log(`πŸ“₯ [MCP] Incoming: ${message.type || message.method || 'unknown'}`);
164
+ if (message.id)
165
+ console.log(`ID: ${message.id}`);
166
+ if (webrtc.getDebug()) {
167
+ console.log('Full:', JSON.stringify(message, null, 2));
168
+ }
169
+ console.log('═══════════════════════════════════════');
170
+ }
171
+ // Handle MCP method calls (JSON-RPC)
172
+ if (message.method) {
173
+ if (!isMethodAllowed(message.method)) {
174
+ console.warn(`⚠️ [Security] Blocked method: ${message.method}`);
175
+ webrtc.send({
176
+ jsonrpc: "2.0",
177
+ id: message.id,
178
+ error: {
179
+ code: -32001,
180
+ message: "Command blocked for security reasons",
181
+ data: { blocked: message.method }
182
+ }
183
+ });
184
+ return;
185
+ }
186
+ console.log(`βœ… [Security] Allowed method: ${message.method}`);
187
+ }
143
188
  // Handle command queueing
144
189
  if (message.type === 'command' && message.text) {
145
190
  const sanitizedCommand = sanitizeInput(message.text);
@@ -164,13 +209,11 @@ export async function setupMCPServer(webrtc) {
164
209
  });
165
210
  return;
166
211
  }
167
- console.log(` [MCP] Queuing command: ${sanitizedCommand}`);
168
212
  commandQueue.push(sanitizedCommand);
169
213
  }
170
214
  // Handle direct tool calls from mobile (for File Explorer)
171
215
  if (message.type === 'tool_call') {
172
216
  const { tool, data, id } = message;
173
- console.log(`πŸ› οΈ [MCP] Tool call received: ${tool}`, data);
174
217
  try {
175
218
  let result;
176
219
  if (tool === 'list_directory') {
@@ -191,7 +234,6 @@ export async function setupMCPServer(webrtc) {
191
234
  });
192
235
  }
193
236
  catch (error) {
194
- console.error(`❌ [MCP] Tool execution failed: ${error.message}`);
195
237
  securityLogger.log('tool_execution_failed', { tool, error: error.message }, 'medium');
196
238
  webrtc.send({
197
239
  type: 'tool_result',
@@ -206,8 +248,6 @@ export async function setupMCPServer(webrtc) {
206
248
  // Start MCP server with stdio transport
207
249
  const transport = new StdioServerTransport();
208
250
  await server.connect(transport);
209
- console.log('βœ… MCP Server initialized (stdio transport)');
210
- securityLogger.log('mcp_server_started', { timestamp: Date.now() }, 'low');
211
251
  }
212
252
  // Helper functions for file system operations
213
253
  async function handleListDirectory(cwd, args, requestId) {