@vulcan-energy/mcp-helper 0.1.2 → 0.1.4

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 (48) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +230 -77
  3. package/THIRD_PARTY_NOTICES.md +158 -0
  4. package/dist/bin/vulcan-mcp-helper.js +7 -2
  5. package/dist/bin/vulcan-mcp-helper.js.map +1 -1
  6. package/dist/src/engine/licenseKeys.d.ts +2 -0
  7. package/dist/src/engine/licenseKeys.d.ts.map +1 -0
  8. package/dist/src/engine/licenseKeys.js +9 -0
  9. package/dist/src/engine/licenseKeys.js.map +1 -0
  10. package/dist/src/engine/wasm.d.ts.map +1 -1
  11. package/dist/src/engine/wasm.js +16 -14
  12. package/dist/src/engine/wasm.js.map +1 -1
  13. package/dist/src/engine/workspace.d.ts +1 -1
  14. package/dist/src/engine/workspace.d.ts.map +1 -1
  15. package/dist/src/engine/workspace.js +60 -4
  16. package/dist/src/engine/workspace.js.map +1 -1
  17. package/dist/src/server.d.ts.map +1 -1
  18. package/dist/src/server.js +11 -5
  19. package/dist/src/server.js.map +1 -1
  20. package/dist/src/tools/calculateMetrics.d.ts.map +1 -1
  21. package/dist/src/tools/calculateMetrics.js +46 -12
  22. package/dist/src/tools/calculateMetrics.js.map +1 -1
  23. package/dist/src/tools/getBatchStatus.d.ts.map +1 -1
  24. package/dist/src/tools/getBatchStatus.js +4 -1
  25. package/dist/src/tools/getBatchStatus.js.map +1 -1
  26. package/dist/src/tools/index.d.ts +6 -0
  27. package/dist/src/tools/index.d.ts.map +1 -1
  28. package/dist/src/tools/index.js +37 -0
  29. package/dist/src/tools/index.js.map +1 -1
  30. package/dist/src/tools/mergeCsvToJson.d.ts +27 -0
  31. package/dist/src/tools/mergeCsvToJson.d.ts.map +1 -0
  32. package/dist/src/tools/mergeCsvToJson.js +154 -0
  33. package/dist/src/tools/mergeCsvToJson.js.map +1 -0
  34. package/dist/src/utils/batchConfig.d.ts.map +1 -1
  35. package/dist/src/utils/batchConfig.js +27 -9
  36. package/dist/src/utils/batchConfig.js.map +1 -1
  37. package/dist/src/utils/fileLoader.d.ts +19 -1
  38. package/dist/src/utils/fileLoader.d.ts.map +1 -1
  39. package/dist/src/utils/fileLoader.js +75 -2
  40. package/dist/src/utils/fileLoader.js.map +1 -1
  41. package/dist/src/utils/tls.d.ts +7 -0
  42. package/dist/src/utils/tls.d.ts.map +1 -0
  43. package/dist/src/utils/tls.js +183 -0
  44. package/dist/src/utils/tls.js.map +1 -0
  45. package/package.json +8 -3
  46. package/wasm/wasm_version.json +4 -4
  47. package/wasm/wasm_wrapper.js +13 -5
  48. package/wasm/wasm_wrapper_bg.wasm +0 -0
@@ -0,0 +1,183 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import { spawnSync } from 'child_process';
5
+ import forge from 'node-forge';
6
+ const TLS_DIR = path.join(os.homedir(), '.vulcan', 'mcp-helper', 'tls');
7
+ const CA_CERT_PATH = path.join(TLS_DIR, 'ca-cert.pem');
8
+ const CA_KEY_PATH = path.join(TLS_DIR, 'ca-key.pem');
9
+ const SERVER_CERT_PATH = path.join(TLS_DIR, 'localhost-cert.pem');
10
+ const SERVER_KEY_PATH = path.join(TLS_DIR, 'localhost-key.pem');
11
+ const STATE_PATH = path.join(TLS_DIR, 'state.json');
12
+ const CA_COMMON_NAME = 'Vulcan MCP Helper Dev CA';
13
+ export async function ensureLocalTLS() {
14
+ const platform = process.platform;
15
+ if (!['darwin', 'win32'].includes(platform)) {
16
+ console.error('[MCP Helper] HTTPS auto-setup is currently supported on macOS and Windows only.');
17
+ console.error('[MCP Helper] Falling back to HTTP. Please install a trusted localhost certificate manually if you need HTTPS status checks from the browser.');
18
+ return null;
19
+ }
20
+ await fs.mkdir(TLS_DIR, { recursive: true });
21
+ await ensureCertificates();
22
+ const trusted = await ensureTrust(platform);
23
+ if (!trusted) {
24
+ console.error('[MCP Helper] Failed to add the helper certificate to the system trust store.');
25
+ console.error('[MCP Helper] Falling back to HTTP. Re-run vulcan-mcp-helper once trust has been granted.');
26
+ return null;
27
+ }
28
+ const [cert, key] = await Promise.all([
29
+ fs.readFile(SERVER_CERT_PATH),
30
+ fs.readFile(SERVER_KEY_PATH),
31
+ ]);
32
+ return {
33
+ enabled: true,
34
+ cert,
35
+ key,
36
+ };
37
+ }
38
+ async function ensureCertificates() {
39
+ const [hasCACert, hasCAKey, hasServerCert, hasServerKey] = await Promise.all([
40
+ fileExists(CA_CERT_PATH),
41
+ fileExists(CA_KEY_PATH),
42
+ fileExists(SERVER_CERT_PATH),
43
+ fileExists(SERVER_KEY_PATH),
44
+ ]);
45
+ if (!hasCACert || !hasCAKey) {
46
+ console.error('[MCP Helper] Generating a local CA for HTTPS...');
47
+ await generateCA();
48
+ }
49
+ if (!hasServerCert || !hasServerKey) {
50
+ console.error('[MCP Helper] Generating localhost certificate signed by the helper CA...');
51
+ await generateServerCert();
52
+ }
53
+ }
54
+ async function ensureTrust(platform) {
55
+ const state = await readState();
56
+ if (state.trustedPlatforms.includes(platform)) {
57
+ return true;
58
+ }
59
+ const success = platform === 'darwin'
60
+ ? installMacTrust()
61
+ : installWindowsTrust();
62
+ if (success) {
63
+ state.trustedPlatforms.push(platform);
64
+ await writeState(state);
65
+ }
66
+ return success;
67
+ }
68
+ async function readState() {
69
+ if (!(await fileExists(STATE_PATH))) {
70
+ return { trustedPlatforms: [] };
71
+ }
72
+ try {
73
+ const raw = await fs.readFile(STATE_PATH, 'utf8');
74
+ const parsed = JSON.parse(raw);
75
+ return {
76
+ trustedPlatforms: Array.isArray(parsed.trustedPlatforms) ? parsed.trustedPlatforms : [],
77
+ };
78
+ }
79
+ catch {
80
+ return { trustedPlatforms: [] };
81
+ }
82
+ }
83
+ async function writeState(state) {
84
+ await fs.writeFile(STATE_PATH, JSON.stringify(state, null, 2), 'utf8');
85
+ }
86
+ async function generateCA() {
87
+ const keys = forge.pki.rsa.generateKeyPair(2048);
88
+ const cert = forge.pki.createCertificate();
89
+ cert.publicKey = keys.publicKey;
90
+ cert.serialNumber = Date.now().toString(16);
91
+ cert.validity.notBefore = new Date();
92
+ cert.validity.notAfter = new Date();
93
+ cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 10);
94
+ const attrs = [{ name: 'commonName', value: CA_COMMON_NAME }];
95
+ cert.setSubject(attrs);
96
+ cert.setIssuer(attrs);
97
+ cert.setExtensions([
98
+ { name: 'basicConstraints', cA: true },
99
+ { name: 'keyUsage', keyCertSign: true, cRLSign: true },
100
+ { name: 'subjectKeyIdentifier' },
101
+ ]);
102
+ cert.sign(keys.privateKey, forge.md.sha256.create());
103
+ const certPem = forge.pki.certificateToPem(cert);
104
+ const keyPem = forge.pki.privateKeyToPem(keys.privateKey);
105
+ await fs.writeFile(CA_CERT_PATH, certPem, 'utf8');
106
+ await fs.writeFile(CA_KEY_PATH, keyPem, 'utf8');
107
+ }
108
+ async function generateServerCert() {
109
+ const caCertPem = await fs.readFile(CA_CERT_PATH, 'utf8');
110
+ const caKeyPem = await fs.readFile(CA_KEY_PATH, 'utf8');
111
+ const caCert = forge.pki.certificateFromPem(caCertPem);
112
+ const caKey = forge.pki.privateKeyFromPem(caKeyPem);
113
+ const keys = forge.pki.rsa.generateKeyPair(2048);
114
+ const cert = forge.pki.createCertificate();
115
+ cert.publicKey = keys.publicKey;
116
+ cert.serialNumber = (Date.now() + 1).toString(16);
117
+ cert.validity.notBefore = new Date();
118
+ cert.validity.notAfter = new Date();
119
+ cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 2);
120
+ cert.setSubject([{ name: 'commonName', value: 'Vulcan MCP Helper Localhost' }]);
121
+ cert.setIssuer(caCert.subject.attributes);
122
+ cert.setExtensions([
123
+ { name: 'basicConstraints', cA: false },
124
+ { name: 'keyUsage', digitalSignature: true, keyEncipherment: true },
125
+ {
126
+ name: 'subjectAltName',
127
+ altNames: [
128
+ { type: 2, value: 'localhost' },
129
+ { type: 7, ip: '127.0.0.1' },
130
+ ],
131
+ },
132
+ ]);
133
+ cert.sign(caKey, forge.md.sha256.create());
134
+ const certPem = forge.pki.certificateToPem(cert);
135
+ const keyPem = forge.pki.privateKeyToPem(keys.privateKey);
136
+ await fs.writeFile(SERVER_CERT_PATH, certPem, 'utf8');
137
+ await fs.writeFile(SERVER_KEY_PATH, keyPem, 'utf8');
138
+ }
139
+ function installMacTrust() {
140
+ const check = spawnSync('security', [
141
+ 'find-certificate',
142
+ '-c',
143
+ CA_COMMON_NAME,
144
+ '/Library/Keychains/System.keychain',
145
+ ]);
146
+ if (check.status === 0) {
147
+ return true;
148
+ }
149
+ console.error('[MCP Helper] Adding helper certificate to the macOS System keychain (requires admin password)...');
150
+ const result = spawnSync('sudo', [
151
+ 'security',
152
+ 'add-trusted-cert',
153
+ '-d',
154
+ '-r',
155
+ 'trustRoot',
156
+ '-k',
157
+ '/Library/Keychains/System.keychain',
158
+ CA_CERT_PATH,
159
+ ], { stdio: 'inherit' });
160
+ return result.status === 0;
161
+ }
162
+ function installWindowsTrust() {
163
+ const escaped = CA_CERT_PATH.replace(/\\/g, '\\\\');
164
+ const command = [
165
+ '-NoLogo',
166
+ '-NoProfile',
167
+ '-Command',
168
+ `Import-Certificate -FilePath "${escaped}" -CertStoreLocation Cert:\\CurrentUser\\Root | Out-Null`,
169
+ ];
170
+ console.error('[MCP Helper] Adding helper certificate to the Windows CurrentUser Root store...');
171
+ const result = spawnSync('powershell.exe', command, { stdio: 'inherit' });
172
+ return result.status === 0;
173
+ }
174
+ async function fileExists(targetPath) {
175
+ try {
176
+ await fs.access(targetPath);
177
+ return true;
178
+ }
179
+ catch {
180
+ return false;
181
+ }
182
+ }
183
+ //# sourceMappingURL=tls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tls.js","sourceRoot":"","sources":["../../../src/utils/tls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACxE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAClE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACpD,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAYlD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,CAAC,KAAK,CAAC,8IAA8I,CAAC,CAAC;QAC9J,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,kBAAkB,EAAE,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAA8B,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAC9F,OAAO,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC7B,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAC7B,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3E,UAAU,CAAC,YAAY,CAAC;QACxB,UAAU,CAAC,WAAW,CAAC;QACvB,UAAU,CAAC,gBAAgB,CAAC;QAC5B,UAAU,CAAC,eAAe,CAAC;KAC5B,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC1F,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAA4B;IACrD,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,KAAK,QAAQ;QACnC,CAAC,CAAC,eAAe,EAAE;QACnB,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAE1B,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;QAC3C,OAAO;YACL,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;SACxF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAe;IACvC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAE/E,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,aAAa,CAAC;QACjB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,IAAI,EAAE;QACtC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QACtD,EAAE,IAAI,EAAE,sBAAsB,EAAE;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE1D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEpD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAChC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAE9E,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,aAAa,CAAC;QACjB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,KAAK,EAAE;QACvC,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;QACnE;YACE,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;gBAC/B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE;aAC7B;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE1D,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE;QAClC,kBAAkB;QAClB,IAAI;QACJ,cAAc;QACd,oCAAoC;KACrC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,kGAAkG,CAAC,CAAC;IAClH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;QAC/B,UAAU;QACV,kBAAkB;QAClB,IAAI;QACJ,IAAI;QACJ,WAAW;QACX,IAAI;QACJ,oCAAoC;QACpC,YAAY;KACb,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG;QACd,SAAS;QACT,YAAY;QACZ,UAAU;QACV,iCAAiC,OAAO,0DAA0D;KACnG,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACjG,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vulcan-energy/mcp-helper",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Vulcan MCP Helper Service for Cursor, Claude Desktop, and other local MCP clients",
5
5
  "type": "module",
6
6
  "main": "./dist/server.js",
@@ -23,13 +23,16 @@
23
23
  "energy-modeling"
24
24
  ],
25
25
  "author": "",
26
- "license": "MIT",
26
+ "license": "UNLICENSED",
27
27
  "dependencies": {
28
28
  "@modelcontextprotocol/sdk": "^1.22.0",
29
+ "cors": "^2.8.5",
29
30
  "express": "^4.18.2",
31
+ "jose": "^6.1.2",
30
32
  "zod": "^4.1.12"
31
33
  },
32
34
  "devDependencies": {
35
+ "@types/cors": "^2.8.17",
33
36
  "@types/express": "^4.17.21",
34
37
  "@types/node": "^20.10.0",
35
38
  "tsx": "^4.7.0",
@@ -42,6 +45,8 @@
42
45
  "dist/",
43
46
  "wasm/",
44
47
  "package.json",
45
- "README.md"
48
+ "README.md",
49
+ "LICENSE",
50
+ "THIRD_PARTY_NOTICES.md"
46
51
  ]
47
52
  }
@@ -1,8 +1,8 @@
1
1
  {
2
- "build_id": "20251125-090723",
3
- "sha256": "20b9ffb958cb95391c32784cae48e8cf05b104d308a178be072120c2148f2bc5",
4
- "timestamp": "2025-11-25T09:07:23+00:00",
5
- "size_bytes": 9032697,
2
+ "build_id": "20260113-113315",
3
+ "sha256": "52f9a8e0fe22cab90f8339bdc491d2634d79bd63aec3f398b81d375a7ea648ac",
4
+ "timestamp": "2026-01-13T11:33:15+00:00",
5
+ "size_bytes": 10121824,
6
6
  "wasm_filename": "wasm_wrapper_bg.wasm",
7
7
  "js_filename": "wasm_wrapper.js"
8
8
  }
@@ -905,6 +905,10 @@ function __wbg_get_imports() {
905
905
  imports.wbg.__wbg_getRandomValues_80578b2ff2a093ba = function() { return handleError(function (arg0) {
906
906
  globalThis.crypto.getRandomValues(arg0);
907
907
  }, arguments) };
908
+ imports.wbg.__wbg_getTime_46267b1c24877e30 = function(arg0) {
909
+ const ret = arg0.getTime();
910
+ return ret;
911
+ };
908
912
  imports.wbg.__wbg_get_67b2ba62fc30de12 = function() { return handleError(function (arg0, arg1) {
909
913
  const ret = Reflect.get(arg0, arg1);
910
914
  return ret;
@@ -954,6 +958,10 @@ function __wbg_get_imports() {
954
958
  const ret = arg0.navigator;
955
959
  return ret;
956
960
  };
961
+ imports.wbg.__wbg_new0_f788a2397c7ca929 = function() {
962
+ const ret = new Date();
963
+ return ret;
964
+ };
957
965
  imports.wbg.__wbg_new_405e22f390576ce2 = function() {
958
966
  const ret = new Object();
959
967
  return ret;
@@ -1093,7 +1101,7 @@ function __wbg_get_imports() {
1093
1101
  }
1094
1102
 
1095
1103
  function __wbg_init_memory(imports, memory) {
1096
- imports.wbg.memory = memory || new WebAssembly.Memory({initial:55,maximum:16384,shared:true});
1104
+ imports.wbg.memory = memory || new WebAssembly.Memory({initial:69,maximum:16384,shared:true});
1097
1105
  }
1098
1106
 
1099
1107
  function __wbg_finalize_init(instance, module, thread_stack_size) {
@@ -1164,19 +1172,19 @@ export { initSync };
1164
1172
  export default __wbg_init;
1165
1173
 
1166
1174
  // Build hash injected at build time
1167
- export const BUILD_HASH = "20b9ffb958cb95391c32784cae48e8cf05b104d308a178be072120c2148f2bc5";
1168
- export const BUILD_ID = "20251125-090723";
1175
+ export const BUILD_HASH = "52f9a8e0fe22cab90f8339bdc491d2634d79bd63aec3f398b81d375a7ea648ac";
1176
+ export const BUILD_ID = "20260113-113315";
1169
1177
  export const WASM_FILENAME = "wasm_wrapper_bg.wasm";
1170
1178
  export const JS_FILENAME = "wasm_wrapper.js";
1171
1179
 
1172
1180
  // Function to get the current build hash
1173
1181
  export function getBuildHash() {
1174
- return "20b9ffb958cb95391c32784cae48e8cf05b104d308a178be072120c2148f2bc5";
1182
+ return "52f9a8e0fe22cab90f8339bdc491d2634d79bd63aec3f398b81d375a7ea648ac";
1175
1183
  }
1176
1184
 
1177
1185
  // Function to get the current build ID
1178
1186
  export function getBuildId() {
1179
- return "20251125-090723";
1187
+ return "20260113-113315";
1180
1188
  }
1181
1189
 
1182
1190
  // Function to get the WASM filename
Binary file