cryptoiz-mcp 4.15.9 → 4.15.11

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.
Files changed (3) hide show
  1. package/index.js +1 -1
  2. package/package.json +1 -1
  3. package/setup.js +56 -37
package/index.js CHANGED
@@ -9,7 +9,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprot
9
9
  import { Connection, Keypair, PublicKey, Transaction, SystemProgram, VersionedTransaction, TransactionMessage } from '@solana/web3.js';
10
10
  import bs58 from 'bs58';
11
11
 
12
- var VERSION = 'v4.15.9';
12
+ var VERSION = 'v4.15.11';
13
13
  var GATEWAY = 'https://rehqwsypjnjirhuiapqh.supabase.co/functions/v1/mcp-x402-gateway';
14
14
  // Per-tool endpoints for Dexter settlement naming
15
15
  var TOOL_ENDPOINTS = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cryptoiz-mcp",
3
- "version": "4.15.9",
3
+ "version": "4.15.11",
4
4
  "description": "CryptoIZ MCP Server - Solana DEX trading signals via Claude Desktop with x402 USDC micropayments (V2 Dexter facilitator)",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/setup.js CHANGED
@@ -2,10 +2,9 @@
2
2
  import fs from 'fs';
3
3
  import path from 'path';
4
4
  import os from 'os';
5
- import readline from 'readline';
6
5
  import { execSync } from 'child_process';
7
6
 
8
- var VERSION = 'v4.15.9';
7
+ var VERSION = 'v4.15.11';
9
8
  function print(msg) { process.stdout.write(msg + '\n'); }
10
9
 
11
10
  function findConfigPath() {
@@ -13,8 +12,7 @@ function findConfigPath() {
13
12
  if (p === 'darwin') {
14
13
  candidates.push(path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'));
15
14
  } else if (p === 'win32') {
16
- var appdata = process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming');
17
- candidates.push(path.join(appdata, 'Claude', 'claude_desktop_config.json'));
15
+ // MSIX path FIRST (priority) most Windows Claude Desktop installs are MSIX
18
16
  var localAppData = process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local');
19
17
  try {
20
18
  var packagesDir = path.join(localAppData, 'Packages');
@@ -27,6 +25,9 @@ function findConfigPath() {
27
25
  }
28
26
  }
29
27
  } catch(e) {}
28
+ // Standard path as fallback
29
+ var appdata = process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming');
30
+ candidates.push(path.join(appdata, 'Claude', 'claude_desktop_config.json'));
30
31
  } else {
31
32
  candidates.push(path.join(os.homedir(), '.config', 'Claude', 'claude_desktop_config.json'));
32
33
  }
@@ -75,43 +76,61 @@ function injectConfig(cfgPath, entry) {
75
76
  fs.writeFileSync(cfgPath, JSON.stringify(config, null, 2), 'utf8');
76
77
  }
77
78
 
78
- async function setup() {
79
- print('');
80
- print('========================================');
81
- print(' CryptoIZ MCP Installer ' + VERSION);
82
- print('========================================');
83
- print('OS: ' + os.platform() + ' ' + os.arch());
84
- var cfgPath = findConfigPath();
85
- if (!cfgPath) { print('ERROR: Claude Desktop not found.'); process.exit(1); }
86
- print('Config: ' + cfgPath);
87
- if (os.platform() === 'win32') {
88
- print('[Windows] absolute paths mode');
89
- var pkg = findPackagePath();
90
- if (!pkg) { print('Run: npm install -g cryptoiz-mcp'); process.exit(1); }
91
- print('Node: ' + process.execPath);
92
- print('Package: ' + pkg);
93
- }
94
- print('');
95
- print('SECURITY: Use dedicated wallet, $1-5 USDC only, no SOL needed.');
96
- print('Export: Phantom > Settings > Security > Export Private Key');
79
+ // Get private key from command line argument
80
+ var key = (process.argv[2] || '').trim();
81
+
82
+ print('');
83
+ print('========================================');
84
+ print(' CryptoIZ MCP Installer ' + VERSION);
85
+ print('========================================');
86
+ print('OS: ' + os.platform() + ' ' + os.arch());
87
+
88
+ if (!key) {
97
89
  print('');
98
- var rl = readline.createInterface({ input: process.stdin, output: process.stdout });
99
- var key = await new Promise(function(r) { rl.question('Paste Solana private key (base58): ', function(a) { r(a.trim()); }); });
100
- rl.close();
101
- var chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
102
- if (!key || key.length < 40 || key.length > 100) { print('ERROR: Invalid key length.'); process.exit(1); }
103
- for (var i = 0; i < key.length; i++) { if (chars.indexOf(key[i]) === -1) { print('ERROR: Invalid base58 character.'); process.exit(1); } }
104
- injectConfig(cfgPath, buildEntry(key));
90
+ print('Usage:');
91
+ print(' npx cryptoiz-mcp-setup YOUR_PRIVATE_KEY');
105
92
  print('');
106
- print('SETUP COMPLETE!');
107
- print('Config: ' + cfgPath);
93
+ print('Example:');
94
+ print(' npx cryptoiz-mcp-setup 5MaiiCavjCmn9Hs1o...');
108
95
  print('');
109
- print('1. Close Claude Desktop completely');
110
- print('2. Reopen Claude Desktop');
111
- print('3. Type: get_status');
96
+ print('SECURITY:');
97
+ print('- Use a DEDICATED wallet (not main wallet)');
98
+ print('- Fund with $1-5 USDC only, no SOL needed');
99
+ print('- Export: Phantom > Settings > Security > Export Private Key');
112
100
  print('');
113
101
  print('Guide: cryptoiz.org/McpLanding');
114
- print('');
102
+ process.exit(1);
103
+ }
104
+
105
+ // Validate base58
106
+ var chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
107
+ if (key.length < 40 || key.length > 100) { print('ERROR: Invalid key length (' + key.length + ' chars). Expected 44-88.'); process.exit(1); }
108
+ for (var i = 0; i < key.length; i++) {
109
+ if (chars.indexOf(key[i]) === -1) { print('ERROR: Invalid base58 character at position ' + i + ': "' + key[i] + '"'); process.exit(1); }
115
110
  }
116
111
 
117
- setup().catch(function(e) { print('Failed: ' + e.message); process.exit(1); });
112
+ var cfgPath = findConfigPath();
113
+ if (!cfgPath) { print('ERROR: Claude Desktop not found.'); process.exit(1); }
114
+ print('Config: ' + cfgPath);
115
+
116
+ if (os.platform() === 'win32') {
117
+ print('[Windows] absolute paths mode');
118
+ var pkg = findPackagePath();
119
+ if (!pkg) { print('Run: npm install -g cryptoiz-mcp'); process.exit(1); }
120
+ print('Node: ' + process.execPath);
121
+ print('Package: ' + pkg);
122
+ }
123
+
124
+ injectConfig(cfgPath, buildEntry(key));
125
+
126
+ print('');
127
+ print('SETUP COMPLETE!');
128
+ print('Config: ' + cfgPath);
129
+ print('');
130
+ print('Next:');
131
+ print('1. Close Claude Desktop completely');
132
+ print('2. Reopen Claude Desktop');
133
+ print('3. Type: get_status');
134
+ print('');
135
+ print('Guide: cryptoiz.org/McpLanding');
136
+ print('');