@better-i18n/mcp 0.21.0 → 0.21.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/dist/index.js +69 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -42,7 +42,11 @@ const pkg = require("../package.json");
|
|
|
42
42
|
const VERSION = pkg.version;
|
|
43
43
|
const LOCAL_MCP_URL = "http://localhost:8788";
|
|
44
44
|
const PROD_MCP_URL = "https://mcp.better-i18n.com";
|
|
45
|
-
|
|
45
|
+
// Distinct from @helpway/mcp (8976) so users running both bridges don't
|
|
46
|
+
// EADDRINUSE-collide. We additionally probe a small range when the
|
|
47
|
+
// preferred port is occupied — see waitForAuthCode below.
|
|
48
|
+
const DEFAULT_OAUTH_PORT = 8989;
|
|
49
|
+
const OAUTH_PORT_RANGE = 16;
|
|
46
50
|
function resolveConfig() {
|
|
47
51
|
const argv = process.argv.slice(2);
|
|
48
52
|
const local = argv.includes("--local") ||
|
|
@@ -120,11 +124,34 @@ function renderCallbackPage(status, detail) {
|
|
|
120
124
|
</body>
|
|
121
125
|
</html>`;
|
|
122
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Try to bind the given HTTP server to `port`. Resolves cleanly when
|
|
129
|
+
* listening; rejects with the underlying error otherwise.
|
|
130
|
+
*/
|
|
131
|
+
function tryListen(server, port) {
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
const onError = (err) => {
|
|
134
|
+
server.off("listening", onListening);
|
|
135
|
+
reject(err);
|
|
136
|
+
};
|
|
137
|
+
const onListening = () => {
|
|
138
|
+
server.off("error", onError);
|
|
139
|
+
resolve();
|
|
140
|
+
};
|
|
141
|
+
server.once("error", onError);
|
|
142
|
+
server.once("listening", onListening);
|
|
143
|
+
server.listen(port);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
123
146
|
/**
|
|
124
147
|
* Wait for the OAuth provider's loopback redirect, resolving with the
|
|
125
|
-
* authorization code.
|
|
148
|
+
* authorization code. The callback HTTP server is bound BEFORE the OAuth
|
|
149
|
+
* dance starts so the actual port can be reflected in the OAuth client's
|
|
150
|
+
* `redirect_uri`. If the preferred port is busy (e.g. another bridge
|
|
151
|
+
* already running, or a stale Node process), we probe `OAUTH_PORT_RANGE`
|
|
152
|
+
* consecutive ports and use the first free one.
|
|
126
153
|
*/
|
|
127
|
-
function waitForAuthCode(
|
|
154
|
+
async function waitForAuthCode(preferredPort) {
|
|
128
155
|
let resolveCode;
|
|
129
156
|
let rejectCode;
|
|
130
157
|
const promise = new Promise((res, rej) => {
|
|
@@ -132,7 +159,7 @@ function waitForAuthCode(port) {
|
|
|
132
159
|
rejectCode = rej;
|
|
133
160
|
});
|
|
134
161
|
const server = createServer((req, res) => {
|
|
135
|
-
const url = new URL(req.url ?? "/", `http://localhost:${
|
|
162
|
+
const url = new URL(req.url ?? "/", `http://localhost:${preferredPort}`);
|
|
136
163
|
if (url.pathname !== "/callback") {
|
|
137
164
|
res.writeHead(404).end();
|
|
138
165
|
return;
|
|
@@ -149,8 +176,29 @@ function waitForAuthCode(port) {
|
|
|
149
176
|
rejectCode(new Error(error ?? "Authorization failed"));
|
|
150
177
|
}
|
|
151
178
|
});
|
|
152
|
-
|
|
153
|
-
|
|
179
|
+
let boundPort = -1;
|
|
180
|
+
let lastError = null;
|
|
181
|
+
for (let p = preferredPort; p < preferredPort + OAUTH_PORT_RANGE; p++) {
|
|
182
|
+
try {
|
|
183
|
+
await tryListen(server, p);
|
|
184
|
+
boundPort = p;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
189
|
+
const code = err.code;
|
|
190
|
+
if (code === "EADDRINUSE" || code === "EACCES")
|
|
191
|
+
continue;
|
|
192
|
+
throw err;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (boundPort < 0) {
|
|
196
|
+
const range = `${preferredPort}..${preferredPort + OAUTH_PORT_RANGE - 1}`;
|
|
197
|
+
throw new Error(`No free loopback port in range ${range} for OAuth callback` +
|
|
198
|
+
(lastError ? `: ${lastError.message}` : "") +
|
|
199
|
+
` — set BETTER_I18N_OAUTH_PORT to an open port.`);
|
|
200
|
+
}
|
|
201
|
+
return { promise, close: () => server.close(), port: boundPort };
|
|
154
202
|
}
|
|
155
203
|
/**
|
|
156
204
|
* Connect an SDK Client to the remote MCP endpoint, performing the OAuth
|
|
@@ -168,22 +216,33 @@ async function connectRemote(cfg) {
|
|
|
168
216
|
log(cfg.debug, `connected to ${cfg.mcpUrl}${cfg.local ? " (local)" : ""} via API key`);
|
|
169
217
|
return client;
|
|
170
218
|
}
|
|
171
|
-
// OAuth mode
|
|
172
|
-
|
|
219
|
+
// OAuth mode. Bind the loopback callback server FIRST so we know the
|
|
220
|
+
// actual port (and can collision-recover via OAUTH_PORT_RANGE). The
|
|
221
|
+
// OAuth client's redirect_uri then reflects the real bound port,
|
|
222
|
+
// matching exactly what the browser will be told to call back to.
|
|
223
|
+
const callback = await waitForAuthCode(cfg.oauthPort);
|
|
224
|
+
if (callback.port !== cfg.oauthPort) {
|
|
225
|
+
log(cfg.debug, `loopback port ${cfg.oauthPort} unavailable; using ${callback.port}`);
|
|
226
|
+
}
|
|
227
|
+
const redirectUrl = `http://localhost:${callback.port}/callback`;
|
|
173
228
|
const authProvider = new NodeOAuthProvider({ mcpUrl: cfg.mcpUrl, redirectUrl });
|
|
174
229
|
const makeTransport = () => new StreamableHTTPClientTransport(url, { authProvider });
|
|
230
|
+
// Cached-token path: tries to connect; if the server rejects, falls
|
|
231
|
+
// through to the interactive dance below.
|
|
175
232
|
try {
|
|
176
233
|
await client.connect(makeTransport());
|
|
234
|
+
callback.close();
|
|
177
235
|
log(cfg.debug, `connected to ${cfg.mcpUrl}${cfg.local ? " (local)" : ""} via cached OAuth token`);
|
|
178
236
|
return client;
|
|
179
237
|
}
|
|
180
238
|
catch (err) {
|
|
181
|
-
if (!(err instanceof UnauthorizedError))
|
|
239
|
+
if (!(err instanceof UnauthorizedError)) {
|
|
240
|
+
callback.close();
|
|
182
241
|
throw err;
|
|
242
|
+
}
|
|
183
243
|
}
|
|
184
244
|
// Interactive: provider already opened the browser via redirectToAuthorization
|
|
185
245
|
// during the failed connect. Catch the loopback redirect, finish auth, reconnect.
|
|
186
|
-
const callback = waitForAuthCode(cfg.oauthPort);
|
|
187
246
|
let code;
|
|
188
247
|
try {
|
|
189
248
|
code = await callback.promise;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED