asm-mcp-proxy 2.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.
- package/README.md +109 -0
- package/dist/gateway-client.d.ts +21 -0
- package/dist/gateway-client.d.ts.map +1 -0
- package/dist/gateway-client.js +266 -0
- package/dist/gateway-client.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +424 -0
- package/dist/index.js.map +1 -0
- package/dist/local-tools.d.ts +93 -0
- package/dist/local-tools.d.ts.map +1 -0
- package/dist/local-tools.js +356 -0
- package/dist/local-tools.js.map +1 -0
- package/dist/router.d.ts +44 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +223 -0
- package/dist/router.js.map +1 -0
- package/dist/token-manager.d.ts +55 -0
- package/dist/token-manager.d.ts.map +1 -0
- package/dist/token-manager.js +210 -0
- package/dist/token-manager.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Manager - Auto-refresh JWT tokens
|
|
3
|
+
*/
|
|
4
|
+
export declare class TokenManager {
|
|
5
|
+
private tokenInfo;
|
|
6
|
+
private refreshTimer;
|
|
7
|
+
private gatewayUrl;
|
|
8
|
+
private envFilePath;
|
|
9
|
+
constructor(gatewayUrl: string, envFilePath?: string);
|
|
10
|
+
/**
|
|
11
|
+
* Inicializar com token existente
|
|
12
|
+
*/
|
|
13
|
+
initialize(token: string, email?: string, password?: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Obter token atual
|
|
16
|
+
*/
|
|
17
|
+
getToken(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Verificar se token está próximo de expirar (< 1 hora)
|
|
20
|
+
*/
|
|
21
|
+
isExpiringSoon(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Verificar se token expirou
|
|
24
|
+
*/
|
|
25
|
+
isExpired(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Refresh manual do token
|
|
28
|
+
*/
|
|
29
|
+
refresh(): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Agendar refresh automático
|
|
32
|
+
*/
|
|
33
|
+
private scheduleRefresh;
|
|
34
|
+
/**
|
|
35
|
+
* Decodificar JWT (sem validação de assinatura)
|
|
36
|
+
*/
|
|
37
|
+
private decodeJWT;
|
|
38
|
+
/**
|
|
39
|
+
* Atualizar .env file com novo token
|
|
40
|
+
*/
|
|
41
|
+
private updateEnvFile;
|
|
42
|
+
/**
|
|
43
|
+
* Parar refresh automático
|
|
44
|
+
*/
|
|
45
|
+
stop(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Obter informações do token
|
|
48
|
+
*/
|
|
49
|
+
getTokenInfo(): {
|
|
50
|
+
expiresAt: Date;
|
|
51
|
+
isExpiringSoon: boolean;
|
|
52
|
+
isExpired: boolean;
|
|
53
|
+
} | null;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=token-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../src/token-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;gBAEhB,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAKpD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBlE;;OAEG;IACH,QAAQ,IAAI,MAAM;IAOlB;;OAEG;IACH,cAAc,IAAI,OAAO;IAMzB;;OAEG;IACH,SAAS,IAAI,OAAO;IAKpB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IA0CjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,YAAY,IAAI;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;CASxF"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Token Manager - Auto-refresh JWT tokens
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.TokenManager = void 0;
|
|
40
|
+
const gateway_client_1 = require("./gateway-client");
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
class TokenManager {
|
|
44
|
+
constructor(gatewayUrl, envFilePath) {
|
|
45
|
+
this.tokenInfo = null;
|
|
46
|
+
this.refreshTimer = null;
|
|
47
|
+
this.gatewayUrl = gatewayUrl;
|
|
48
|
+
this.envFilePath = envFilePath || path.join(process.cwd(), '.env');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Inicializar com token existente
|
|
52
|
+
*/
|
|
53
|
+
initialize(token, email, password) {
|
|
54
|
+
// Decodificar JWT para obter expiração
|
|
55
|
+
const payload = this.decodeJWT(token);
|
|
56
|
+
const expiresAt = payload.exp ? payload.exp * 1000 : Date.now() + 24 * 60 * 60 * 1000;
|
|
57
|
+
this.tokenInfo = {
|
|
58
|
+
token,
|
|
59
|
+
expiresAt,
|
|
60
|
+
email,
|
|
61
|
+
password,
|
|
62
|
+
};
|
|
63
|
+
// Agendar refresh automático (1 hora antes de expirar)
|
|
64
|
+
this.scheduleRefresh();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Obter token atual
|
|
68
|
+
*/
|
|
69
|
+
getToken() {
|
|
70
|
+
if (!this.tokenInfo) {
|
|
71
|
+
throw new Error('Token not initialized');
|
|
72
|
+
}
|
|
73
|
+
return this.tokenInfo.token;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Verificar se token está próximo de expirar (< 1 hora)
|
|
77
|
+
*/
|
|
78
|
+
isExpiringSoon() {
|
|
79
|
+
if (!this.tokenInfo)
|
|
80
|
+
return true;
|
|
81
|
+
const oneHour = 60 * 60 * 1000;
|
|
82
|
+
return Date.now() + oneHour >= this.tokenInfo.expiresAt;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Verificar se token expirou
|
|
86
|
+
*/
|
|
87
|
+
isExpired() {
|
|
88
|
+
if (!this.tokenInfo)
|
|
89
|
+
return true;
|
|
90
|
+
return Date.now() >= this.tokenInfo.expiresAt;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Refresh manual do token
|
|
94
|
+
*/
|
|
95
|
+
async refresh() {
|
|
96
|
+
if (!this.tokenInfo?.email || !this.tokenInfo?.password) {
|
|
97
|
+
console.error('[TokenManager] Cannot refresh: email/password not available');
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const result = await (0, gateway_client_1.refreshToken)(this.tokenInfo.email, this.tokenInfo.password, this.gatewayUrl);
|
|
102
|
+
if (result.success && result.token) {
|
|
103
|
+
const payload = this.decodeJWT(result.token);
|
|
104
|
+
const expiresAt = payload.exp ? payload.exp * 1000 : Date.now() + 24 * 60 * 60 * 1000;
|
|
105
|
+
this.tokenInfo = {
|
|
106
|
+
token: result.token,
|
|
107
|
+
expiresAt,
|
|
108
|
+
email: this.tokenInfo.email,
|
|
109
|
+
password: this.tokenInfo.password,
|
|
110
|
+
};
|
|
111
|
+
// Atualizar .env file
|
|
112
|
+
this.updateEnvFile(result.token);
|
|
113
|
+
// Reagendar próximo refresh
|
|
114
|
+
this.scheduleRefresh();
|
|
115
|
+
console.error('[TokenManager] Token refreshed successfully');
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
console.error('[TokenManager] Token refresh failed:', result.error);
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
console.error('[TokenManager] Token refresh error:', error);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Agendar refresh automático
|
|
128
|
+
*/
|
|
129
|
+
scheduleRefresh() {
|
|
130
|
+
if (this.refreshTimer) {
|
|
131
|
+
clearTimeout(this.refreshTimer);
|
|
132
|
+
}
|
|
133
|
+
if (!this.tokenInfo)
|
|
134
|
+
return;
|
|
135
|
+
// Calcular quando fazer refresh (1 hora antes de expirar)
|
|
136
|
+
const oneHour = 60 * 60 * 1000;
|
|
137
|
+
const refreshAt = this.tokenInfo.expiresAt - oneHour;
|
|
138
|
+
const delay = Math.max(0, refreshAt - Date.now());
|
|
139
|
+
this.refreshTimer = setTimeout(async () => {
|
|
140
|
+
console.error('[TokenManager] Auto-refreshing token...');
|
|
141
|
+
await this.refresh();
|
|
142
|
+
}, delay);
|
|
143
|
+
const refreshDate = new Date(refreshAt);
|
|
144
|
+
console.error(`[TokenManager] Next refresh scheduled for: ${refreshDate.toISOString()}`);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Decodificar JWT (sem validação de assinatura)
|
|
148
|
+
*/
|
|
149
|
+
decodeJWT(token) {
|
|
150
|
+
try {
|
|
151
|
+
const parts = token.split('.');
|
|
152
|
+
if (parts.length !== 3) {
|
|
153
|
+
throw new Error('Invalid JWT format');
|
|
154
|
+
}
|
|
155
|
+
const payload = Buffer.from(parts[1], 'base64').toString('utf-8');
|
|
156
|
+
return JSON.parse(payload);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error('[TokenManager] Failed to decode JWT:', error);
|
|
160
|
+
return {};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Atualizar .env file com novo token
|
|
165
|
+
*/
|
|
166
|
+
updateEnvFile(newToken) {
|
|
167
|
+
try {
|
|
168
|
+
if (!fs.existsSync(this.envFilePath)) {
|
|
169
|
+
console.error('[TokenManager] .env file not found, skipping update');
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
let content = fs.readFileSync(this.envFilePath, 'utf-8');
|
|
173
|
+
// Substituir token
|
|
174
|
+
if (content.includes('MCP_JWT_TOKEN=')) {
|
|
175
|
+
content = content.replace(/MCP_JWT_TOKEN=.*/, `MCP_JWT_TOKEN=${newToken}`);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
content += `\nMCP_JWT_TOKEN=${newToken}\n`;
|
|
179
|
+
}
|
|
180
|
+
fs.writeFileSync(this.envFilePath, content, 'utf-8');
|
|
181
|
+
console.error('[TokenManager] .env file updated with new token');
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
console.error('[TokenManager] Failed to update .env file:', error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Parar refresh automático
|
|
189
|
+
*/
|
|
190
|
+
stop() {
|
|
191
|
+
if (this.refreshTimer) {
|
|
192
|
+
clearTimeout(this.refreshTimer);
|
|
193
|
+
this.refreshTimer = null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Obter informações do token
|
|
198
|
+
*/
|
|
199
|
+
getTokenInfo() {
|
|
200
|
+
if (!this.tokenInfo)
|
|
201
|
+
return null;
|
|
202
|
+
return {
|
|
203
|
+
expiresAt: new Date(this.tokenInfo.expiresAt),
|
|
204
|
+
isExpiringSoon: this.isExpiringSoon(),
|
|
205
|
+
isExpired: this.isExpired(),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.TokenManager = TokenManager;
|
|
210
|
+
//# sourceMappingURL=token-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../src/token-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "asm-mcp-proxy",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Stdio to HTTP proxy for ASM MCP Gateway with local tools and intelligent routing",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"asm-mcp-proxy": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/**/*",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"start": "node dist/index.js",
|
|
16
|
+
"dev": "tsc && node dist/index.js",
|
|
17
|
+
"test": "node test.js",
|
|
18
|
+
"clean": "rm -rf dist",
|
|
19
|
+
"prepublishOnly": "npm run build"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"mcp",
|
|
23
|
+
"model-context-protocol",
|
|
24
|
+
"proxy",
|
|
25
|
+
"stdio",
|
|
26
|
+
"http",
|
|
27
|
+
"asm",
|
|
28
|
+
"cloudflare",
|
|
29
|
+
"workers",
|
|
30
|
+
"local-tools",
|
|
31
|
+
"router"
|
|
32
|
+
],
|
|
33
|
+
"author": "ASM Platform",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/vitor606/ASM-MCP.git",
|
|
38
|
+
"directory": "asm-platform/mcp-proxy"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=18.0.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^20.0.0",
|
|
45
|
+
"typescript": "^5.3.0"
|
|
46
|
+
}
|
|
47
|
+
}
|