@better-i18n/mcp 0.21.0 → 0.21.2
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 +72 -13
- 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") ||
|
|
@@ -76,8 +80,8 @@ function renderCallbackPage(status, detail) {
|
|
|
76
80
|
@media (prefers-color-scheme: dark) { body { background: #0a0a0a; color: #fafafa; } }
|
|
77
81
|
.page { width: 480px; max-width: 100%; padding: 0 16px; text-align: center; }
|
|
78
82
|
.logos { display: flex; align-items: center; justify-content: center; margin-bottom: 20px; }
|
|
79
|
-
.logo-circle { width: 64px; height: 64px; border-radius: 50%; border: 1px solid #e5e5e5; background: #fff; display: flex; align-items: center; justify-content: center; }
|
|
80
|
-
@media (prefers-color-scheme: dark) { .logo-circle { border-color: #262626; background: #171717; } }
|
|
83
|
+
.logo-circle { width: 64px; height: 64px; border-radius: 50%; border: 1px solid #e5e5e5; background: #fff; display: flex; align-items: center; justify-content: center; color: #111; }
|
|
84
|
+
@media (prefers-color-scheme: dark) { .logo-circle { border-color: #262626; background: #171717; color: #fafafa; } }
|
|
81
85
|
h1 { font-size: 22px; font-weight: 600; margin-bottom: 24px; }
|
|
82
86
|
.card { overflow: hidden; border-radius: 12px; border: 1px solid #e5e5e5; background: #fff; text-align: center; }
|
|
83
87
|
@media (prefers-color-scheme: dark) { .card { border-color: #262626; background: #171717; } }
|
|
@@ -98,7 +102,7 @@ function renderCallbackPage(status, detail) {
|
|
|
98
102
|
<div class="page">
|
|
99
103
|
<div class="logos">
|
|
100
104
|
<div class="logo-circle">
|
|
101
|
-
<svg width="30" height="
|
|
105
|
+
<svg width="30" height="33" viewBox="0 0 260 286" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M108.013 5.87936C121.62 -1.95979 138.38 -1.95978 151.987 5.87936L237.988 55.4243C251.609 63.2712 260 77.7805 260 93.4829V192.517C260 208.219 251.608 222.728 237.987 230.575L151.987 280.121C138.38 287.96 121.62 287.96 108.013 280.121L22.0117 230.575C8.39157 222.728 0.000135377 208.219 0 192.517V93.4829C0 77.7804 8.39217 63.2712 22.0127 55.4243L108.013 5.87936ZM136.603 23.6196C131.652 20.7615 125.553 20.7615 120.603 23.6196L54 62.0717C48.6668 65.1509 48.6669 72.8489 54 75.9282L142.342 126.931C147.292 129.789 150.342 135.072 150.342 140.788V242.792C150.342 248.951 157.009 252.8 162.342 249.721L228.944 211.268C233.895 208.41 236.944 203.127 236.944 197.411L236.94 90.7866C236.94 85.0706 233.891 79.7892 228.94 76.9311L136.603 23.6196ZM175.32 185C177.233 183.896 178.784 184.791 178.784 187V203.429C178.784 204.296 179.478 204.573 180.009 204.879C180.54 205.186 181.126 205.649 181.877 205.215L196.104 197C198.018 195.896 199.569 196.791 199.569 199V215C199.569 217.21 198.018 219.896 196.104 221L182.249 229C180.336 230.105 178.784 229.209 178.784 227V210.572C178.784 209.704 178.091 209.428 177.56 209.122C177.028 208.815 176.443 208.352 175.692 208.786L161.464 217C159.551 218.105 158 217.209 158 215V199C158 196.791 159.551 194.105 161.464 193L175.32 185Z" fill="currentColor"/></svg>
|
|
102
106
|
</div>
|
|
103
107
|
</div>
|
|
104
108
|
|
|
@@ -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