@revealui/mcp 0.1.10 → 0.2.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/LICENSE.commercial +90 -0
- package/README.md +5 -13
- package/dist/adapters/db.d.ts +16 -7
- package/dist/adapters/db.d.ts.map +1 -1
- package/dist/adapters/db.js +6 -24
- package/dist/adapters/db.js.map +1 -1
- package/dist/client.d.ts +307 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +492 -0
- package/dist/client.js.map +1 -0
- package/dist/hypervisor.d.ts +18 -0
- package/dist/hypervisor.d.ts.map +1 -1
- package/dist/hypervisor.js +83 -4
- package/dist/hypervisor.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/metering.d.ts +59 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/metering.js +25 -0
- package/dist/metering.js.map +1 -0
- package/dist/oauth.d.ts +171 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +292 -0
- package/dist/oauth.js.map +1 -0
- package/dist/remote-client.d.ts +86 -0
- package/dist/remote-client.d.ts.map +1 -0
- package/dist/remote-client.js +130 -0
- package/dist/remote-client.js.map +1 -0
- package/dist/servers/adapter.d.ts.map +1 -1
- package/dist/servers/adapter.js +4 -0
- package/dist/servers/adapter.js.map +1 -1
- package/dist/servers/factories/revealui-content.d.ts +85 -0
- package/dist/servers/factories/revealui-content.d.ts.map +1 -0
- package/dist/servers/factories/revealui-content.js +471 -0
- package/dist/servers/factories/revealui-content.js.map +1 -0
- package/dist/servers/revealui-content.d.ts +12 -18
- package/dist/servers/revealui-content.d.ts.map +1 -1
- package/dist/servers/revealui-content.js +14 -220
- package/dist/servers/revealui-content.js.map +1 -1
- package/dist/servers/revealui-memory.d.ts +24 -0
- package/dist/servers/revealui-memory.d.ts.map +1 -0
- package/dist/servers/revealui-memory.js +339 -0
- package/dist/servers/revealui-memory.js.map +1 -0
- package/dist/streamable-http.d.ts +72 -0
- package/dist/streamable-http.d.ts.map +1 -0
- package/dist/streamable-http.js +120 -0
- package/dist/streamable-http.js.map +1 -0
- package/package.json +24 -11
- package/dist/stores/postgres-idempotency.d.ts +0 -32
- package/dist/stores/postgres-idempotency.d.ts.map +0 -1
- package/dist/stores/postgres-idempotency.js +0 -63
- package/dist/stores/postgres-idempotency.js.map +0 -1
package/dist/oauth.js
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth 2.1 client provider for `@revealui/mcp`.
|
|
3
|
+
*
|
|
4
|
+
* Phase: Stage 2 PR-2.1 of the MCP v1 plan (see
|
|
5
|
+
* `.jv/docs/mcp-productionization-scope.md`).
|
|
6
|
+
*
|
|
7
|
+
* Implements the SDK's `OAuthClientProvider` interface, backed by a pluggable
|
|
8
|
+
* `Vault` for durable credential storage. The default implementation shells
|
|
9
|
+
* out to the `revvault` CLI; a memory-backed implementation is exported for
|
|
10
|
+
* tests and for environments without revvault on the host.
|
|
11
|
+
*
|
|
12
|
+
* Storage layout per `(tenant, server)` pair, rooted at `mcp/<tenant>/<server>/`:
|
|
13
|
+
* tokens — OAuthTokens JSON (access + refresh + expiry + token_type + scope)
|
|
14
|
+
* client — DCR client info JSON (client_id + optional client_secret)
|
|
15
|
+
* verifier — PKCE code verifier, opaque string, single-use during redirect
|
|
16
|
+
* discovery — cached authorization-server metadata (optional)
|
|
17
|
+
*
|
|
18
|
+
* Flow (first-time authorization):
|
|
19
|
+
* 1. Caller constructs a provider with `{ tenant, server, vault, redirectUrl,
|
|
20
|
+
* clientMetadata, onRedirect }` and attaches it to a Streamable HTTP
|
|
21
|
+
* transport via `authProvider` on `StreamableHttpTransportOptions`.
|
|
22
|
+
* 2. On `connect()`, the SDK transport detects missing tokens, runs OAuth
|
|
23
|
+
* discovery, performs Dynamic Client Registration (RFC 7591) if
|
|
24
|
+
* `saveClientInformation` is implemented, generates a PKCE verifier,
|
|
25
|
+
* persists it, and calls `redirectToAuthorization(url)`.
|
|
26
|
+
* 3. This provider's `redirectToAuthorization` records the URL on
|
|
27
|
+
* `lastAuthorizationUrl` and invokes the caller's `onRedirect` hook. The
|
|
28
|
+
* caller navigates the user agent (e.g. a Next.js route handler issuing
|
|
29
|
+
* an HTTP 302).
|
|
30
|
+
* 4. After the user authorizes and returns to the callback URL, the caller
|
|
31
|
+
* extracts the `code` query parameter and invokes `mcpClient.finishAuth(code)`,
|
|
32
|
+
* which delegates to the transport's `finishAuth(code)` — this exchanges
|
|
33
|
+
* the code via PKCE and persists tokens via `saveTokens`.
|
|
34
|
+
* 5. Subsequent `connect()` calls use the stored tokens. Token refresh is
|
|
35
|
+
* automatic: the SDK detects expiry, calls the refresh endpoint, and
|
|
36
|
+
* calls `saveTokens` with the new token set. OAuth 2.1 §4.12 refresh-token
|
|
37
|
+
* rotation is transparent — the rotated refresh_token flows through
|
|
38
|
+
* `saveTokens` verbatim.
|
|
39
|
+
*/
|
|
40
|
+
import { spawn } from 'node:child_process';
|
|
41
|
+
import { homedir } from 'node:os';
|
|
42
|
+
import { join } from 'node:path';
|
|
43
|
+
/**
|
|
44
|
+
* Creates a {@link Vault} backed by the `revvault` CLI. Requires `revvault` to
|
|
45
|
+
* be installed on the host and the age identity to be readable.
|
|
46
|
+
*
|
|
47
|
+
* Production default for RevealUI deployments. In CI or test environments
|
|
48
|
+
* without revvault, prefer {@link createMemoryVault}.
|
|
49
|
+
*/
|
|
50
|
+
export function createRevvaultVault(options = {}) {
|
|
51
|
+
const binPath = options.binPath ?? join(homedir(), '.local/bin/revvault');
|
|
52
|
+
const identityPath = options.identityPath ??
|
|
53
|
+
process.env.REVVAULT_IDENTITY ??
|
|
54
|
+
join(homedir(), '.config/age/keys.txt');
|
|
55
|
+
const timeoutMs = options.timeoutMs ?? 10_000;
|
|
56
|
+
const env = { ...process.env, REVVAULT_IDENTITY: identityPath };
|
|
57
|
+
const run = (args, stdin) => new Promise((resolve, reject) => {
|
|
58
|
+
const child = spawn(binPath, args, { env, timeout: timeoutMs });
|
|
59
|
+
let stdout = '';
|
|
60
|
+
let stderr = '';
|
|
61
|
+
child.stdout.setEncoding('utf8');
|
|
62
|
+
child.stderr.setEncoding('utf8');
|
|
63
|
+
child.stdout.on('data', (chunk) => {
|
|
64
|
+
stdout += chunk;
|
|
65
|
+
});
|
|
66
|
+
child.stderr.on('data', (chunk) => {
|
|
67
|
+
stderr += chunk;
|
|
68
|
+
});
|
|
69
|
+
child.on('error', reject);
|
|
70
|
+
child.on('close', (code) => {
|
|
71
|
+
resolve({ code, stdout, stderr });
|
|
72
|
+
});
|
|
73
|
+
if (stdin !== undefined) {
|
|
74
|
+
child.stdin.end(stdin);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
child.stdin.end();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
return {
|
|
81
|
+
async get(path) {
|
|
82
|
+
assertSafePath(path);
|
|
83
|
+
const { code, stdout, stderr } = await run(['get', '--full', path]);
|
|
84
|
+
if (code !== 0) {
|
|
85
|
+
throw new RevvaultError(`revvault get exited ${code}: ${stderr.trim()}`);
|
|
86
|
+
}
|
|
87
|
+
if (stdout.length === 0 && /not found/i.test(stderr)) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
if (stdout.length === 0) {
|
|
91
|
+
throw new RevvaultError(`revvault get returned empty output: ${stderr.trim()}`);
|
|
92
|
+
}
|
|
93
|
+
return stdout.endsWith('\n') ? stdout.slice(0, -1) : stdout;
|
|
94
|
+
},
|
|
95
|
+
async set(path, value) {
|
|
96
|
+
assertSafePath(path);
|
|
97
|
+
const { code, stderr } = await run(['set', '--force', path], value);
|
|
98
|
+
if (code !== 0) {
|
|
99
|
+
throw new RevvaultError(`revvault set exited ${code}: ${stderr.trim()}`);
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
async delete(path) {
|
|
103
|
+
assertSafePath(path);
|
|
104
|
+
const { code, stderr } = await run(['delete', '--force', path]);
|
|
105
|
+
if (code !== 0 && !/not found/i.test(stderr)) {
|
|
106
|
+
throw new RevvaultError(`revvault delete exited ${code}: ${stderr.trim()}`);
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
async list(prefix) {
|
|
110
|
+
assertSafePrefix(prefix);
|
|
111
|
+
const { code, stdout, stderr } = await run(['list', prefix]);
|
|
112
|
+
if (code !== 0) {
|
|
113
|
+
throw new RevvaultError(`revvault list exited ${code}: ${stderr.trim()}`);
|
|
114
|
+
}
|
|
115
|
+
// `revvault list` emits one path per line. Empty / informational output
|
|
116
|
+
// (e.g. `No secrets found.`) returns an empty array.
|
|
117
|
+
return stdout
|
|
118
|
+
.split('\n')
|
|
119
|
+
.map((line) => line.trim())
|
|
120
|
+
.filter((line) => line.length > 0 && line.startsWith(prefix));
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/** Reject shell-metacharacter and traversal patterns in vault paths. */
|
|
125
|
+
function assertSafePath(path) {
|
|
126
|
+
if (!/^[A-Za-z0-9/_\-.]+$/.test(path)) {
|
|
127
|
+
throw new RevvaultError(`Vault path contains disallowed characters: ${path}`);
|
|
128
|
+
}
|
|
129
|
+
if (path.includes('..') || path.startsWith('/') || path.endsWith('/')) {
|
|
130
|
+
throw new RevvaultError(`Vault path is not well-formed: ${path}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Same rules as {@link assertSafePath} but allows the trailing slash of a prefix. */
|
|
134
|
+
function assertSafePrefix(prefix) {
|
|
135
|
+
if (!/^[A-Za-z0-9/_\-.]+$/.test(prefix)) {
|
|
136
|
+
throw new RevvaultError(`Vault prefix contains disallowed characters: ${prefix}`);
|
|
137
|
+
}
|
|
138
|
+
if (prefix.includes('..') || prefix.startsWith('/')) {
|
|
139
|
+
throw new RevvaultError(`Vault prefix is not well-formed: ${prefix}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export class RevvaultError extends Error {
|
|
143
|
+
constructor(message) {
|
|
144
|
+
super(message);
|
|
145
|
+
this.name = 'RevvaultError';
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
// In-memory vault (tests / ephemeral flows)
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
/**
|
|
152
|
+
* Creates an in-memory {@link Vault} backed by a `Map`. Intended for tests and
|
|
153
|
+
* for short-lived processes where persistence is not required.
|
|
154
|
+
*
|
|
155
|
+
* An optional `seed` object prepopulates the map.
|
|
156
|
+
*/
|
|
157
|
+
export function createMemoryVault(seed) {
|
|
158
|
+
const store = new Map(seed ? Object.entries(seed) : undefined);
|
|
159
|
+
return {
|
|
160
|
+
async get(path) {
|
|
161
|
+
return store.get(path);
|
|
162
|
+
},
|
|
163
|
+
async set(path, value) {
|
|
164
|
+
store.set(path, value);
|
|
165
|
+
},
|
|
166
|
+
async delete(path) {
|
|
167
|
+
store.delete(path);
|
|
168
|
+
},
|
|
169
|
+
async list(prefix) {
|
|
170
|
+
const out = [];
|
|
171
|
+
for (const key of store.keys()) {
|
|
172
|
+
if (key.startsWith(prefix))
|
|
173
|
+
out.push(key);
|
|
174
|
+
}
|
|
175
|
+
return out;
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/** Build the {@link McpOAuthPaths} for a given `(tenant, server)` pair. */
|
|
180
|
+
export function mcpOAuthPaths(tenant, server) {
|
|
181
|
+
const prefix = `mcp/${tenant}/${server}`;
|
|
182
|
+
return {
|
|
183
|
+
tokens: `${prefix}/tokens`,
|
|
184
|
+
client: `${prefix}/client`,
|
|
185
|
+
verifier: `${prefix}/verifier`,
|
|
186
|
+
discovery: `${prefix}/discovery`,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* SDK-compatible OAuth client provider backed by a {@link Vault}. Instances are
|
|
191
|
+
* scoped to a single `(tenant, server)` pair — construct one per MCP server
|
|
192
|
+
* the caller intends to authorize against.
|
|
193
|
+
*/
|
|
194
|
+
export class McpOAuthProvider {
|
|
195
|
+
vault;
|
|
196
|
+
paths;
|
|
197
|
+
_redirectUrl;
|
|
198
|
+
_clientMetadata;
|
|
199
|
+
onRedirect;
|
|
200
|
+
_state;
|
|
201
|
+
/**
|
|
202
|
+
* The most recent authorization URL the SDK asked us to send the user to.
|
|
203
|
+
* Populated by {@link redirectToAuthorization}. Callers may read this
|
|
204
|
+
* synchronously after an `auth()` or `connect()` call that returns
|
|
205
|
+
* `'REDIRECT'`.
|
|
206
|
+
*/
|
|
207
|
+
lastAuthorizationUrl;
|
|
208
|
+
constructor(options) {
|
|
209
|
+
this.vault = options.vault;
|
|
210
|
+
this.paths = mcpOAuthPaths(options.tenant, options.server);
|
|
211
|
+
this._redirectUrl = options.redirectUrl;
|
|
212
|
+
this._clientMetadata = options.clientMetadata;
|
|
213
|
+
this.onRedirect = options.onRedirect;
|
|
214
|
+
this._state = options.state;
|
|
215
|
+
}
|
|
216
|
+
// -- OAuthClientProvider (getters) ----------------------------------------
|
|
217
|
+
get redirectUrl() {
|
|
218
|
+
return this._redirectUrl;
|
|
219
|
+
}
|
|
220
|
+
get clientMetadata() {
|
|
221
|
+
return this._clientMetadata;
|
|
222
|
+
}
|
|
223
|
+
state() {
|
|
224
|
+
if (this._state)
|
|
225
|
+
return this._state();
|
|
226
|
+
return crypto.randomUUID();
|
|
227
|
+
}
|
|
228
|
+
// -- OAuthClientProvider (client info) ------------------------------------
|
|
229
|
+
async clientInformation() {
|
|
230
|
+
const raw = await this.vault.get(this.paths.client);
|
|
231
|
+
if (raw === undefined)
|
|
232
|
+
return undefined;
|
|
233
|
+
return parseJson(raw, 'client information');
|
|
234
|
+
}
|
|
235
|
+
async saveClientInformation(info) {
|
|
236
|
+
await this.vault.set(this.paths.client, JSON.stringify(info));
|
|
237
|
+
}
|
|
238
|
+
// -- OAuthClientProvider (tokens) -----------------------------------------
|
|
239
|
+
async tokens() {
|
|
240
|
+
const raw = await this.vault.get(this.paths.tokens);
|
|
241
|
+
if (raw === undefined)
|
|
242
|
+
return undefined;
|
|
243
|
+
return parseJson(raw, 'tokens');
|
|
244
|
+
}
|
|
245
|
+
async saveTokens(tokens) {
|
|
246
|
+
await this.vault.set(this.paths.tokens, JSON.stringify(tokens));
|
|
247
|
+
}
|
|
248
|
+
// -- OAuthClientProvider (PKCE verifier) ----------------------------------
|
|
249
|
+
async saveCodeVerifier(codeVerifier) {
|
|
250
|
+
await this.vault.set(this.paths.verifier, codeVerifier);
|
|
251
|
+
}
|
|
252
|
+
async codeVerifier() {
|
|
253
|
+
const value = await this.vault.get(this.paths.verifier);
|
|
254
|
+
if (value === undefined) {
|
|
255
|
+
throw new Error(`[@revealui/mcp] PKCE code verifier missing at ${this.paths.verifier}. ` +
|
|
256
|
+
'The authorization flow must call saveCodeVerifier before finishAuth.');
|
|
257
|
+
}
|
|
258
|
+
return value;
|
|
259
|
+
}
|
|
260
|
+
// -- OAuthClientProvider (redirect) ---------------------------------------
|
|
261
|
+
async redirectToAuthorization(authorizationUrl) {
|
|
262
|
+
this.lastAuthorizationUrl = authorizationUrl;
|
|
263
|
+
if (this.onRedirect) {
|
|
264
|
+
await this.onRedirect(authorizationUrl);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// -- OAuthClientProvider (invalidation) -----------------------------------
|
|
268
|
+
async invalidateCredentials(scope) {
|
|
269
|
+
const targets = [];
|
|
270
|
+
if (scope === 'all' || scope === 'tokens')
|
|
271
|
+
targets.push(this.paths.tokens);
|
|
272
|
+
if (scope === 'all' || scope === 'client')
|
|
273
|
+
targets.push(this.paths.client);
|
|
274
|
+
if (scope === 'all' || scope === 'verifier')
|
|
275
|
+
targets.push(this.paths.verifier);
|
|
276
|
+
if (scope === 'all' || scope === 'discovery')
|
|
277
|
+
targets.push(this.paths.discovery);
|
|
278
|
+
await Promise.all(targets.map((path) => this.vault.delete(path)));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// ---------------------------------------------------------------------------
|
|
282
|
+
// Helpers
|
|
283
|
+
// ---------------------------------------------------------------------------
|
|
284
|
+
function parseJson(raw, label) {
|
|
285
|
+
try {
|
|
286
|
+
return JSON.parse(raw);
|
|
287
|
+
}
|
|
288
|
+
catch (err) {
|
|
289
|
+
throw new Error(`[@revealui/mcp] Failed to parse stored ${label} JSON: ${err.message}`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote MCP server client helpers — tenant-scoped discovery + connection.
|
|
3
|
+
*
|
|
4
|
+
* Two responsibilities:
|
|
5
|
+
*
|
|
6
|
+
* 1. {@link listConnectedMcpServers} — enumerate the servers a tenant has
|
|
7
|
+
* an authorized OAuth token for in the vault. Does NOT connect; a pure
|
|
8
|
+
* metadata lookup.
|
|
9
|
+
*
|
|
10
|
+
* 2. {@link buildRemoteMcpClient} — load the stored server URL + OAuth
|
|
11
|
+
* meta for `(tenant, server)` and return a configured {@link McpClient}.
|
|
12
|
+
* The client is configured but NOT yet connected — callers invoke
|
|
13
|
+
* `connect()` themselves so they can manage teardown.
|
|
14
|
+
*
|
|
15
|
+
* Both helpers were originally defined alongside each other in the admin
|
|
16
|
+
* app: {@link listConnectedMcpServers} as inline logic in the
|
|
17
|
+
* `/api/mcp/remote-servers` route, {@link buildRemoteMcpClient} as the
|
|
18
|
+
* admin-local `lib/mcp/remote-server-client.ts`. They moved here so the API
|
|
19
|
+
* app can use the same path enumeration + client-construction logic without
|
|
20
|
+
* duplicating admin code.
|
|
21
|
+
*/
|
|
22
|
+
import { type ElicitationHandler, McpClient, type SamplingHandler } from './client.js';
|
|
23
|
+
import { type Vault } from './oauth.js';
|
|
24
|
+
/**
|
|
25
|
+
* List the MCP servers that tenant `tenantId` has authorized OAuth tokens
|
|
26
|
+
* for in the vault. Enumerates `mcp/<tenantId>/<server>/tokens` entries
|
|
27
|
+
* and returns the unique server IDs, sorted ascending.
|
|
28
|
+
*
|
|
29
|
+
* A server appears here if and only if a successful OAuth flow has landed
|
|
30
|
+
* a `tokens` blob at that path. Tokens may be expired — refresh/rotation
|
|
31
|
+
* is the transport's concern via the `OAuthClientProvider` hooks. Callers
|
|
32
|
+
* should treat this list as "has been authorized at least once" rather
|
|
33
|
+
* than "is definitely healthy right now".
|
|
34
|
+
*
|
|
35
|
+
* @throws {RevvaultError} when the vault `list` call fails or when
|
|
36
|
+
* `tenantId` contains characters that would be unsafe to pass to the
|
|
37
|
+
* vault.
|
|
38
|
+
*/
|
|
39
|
+
export declare function listConnectedMcpServers(vault: Vault, tenantId: string): Promise<string[]>;
|
|
40
|
+
/** Stored alongside tokens by the OAuth callback. */
|
|
41
|
+
export interface RemoteServerMeta {
|
|
42
|
+
serverUrl: string;
|
|
43
|
+
connectedAt: string;
|
|
44
|
+
connectedBy: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class RemoteServerNotConnectedError extends Error {
|
|
47
|
+
readonly tenant: string;
|
|
48
|
+
readonly server: string;
|
|
49
|
+
constructor(tenant: string, server: string);
|
|
50
|
+
}
|
|
51
|
+
export interface BuildRemoteMcpClientOptions {
|
|
52
|
+
tenant: string;
|
|
53
|
+
server: string;
|
|
54
|
+
/** Injected for tests; defaults to the revvault-backed vault. */
|
|
55
|
+
vault?: Vault;
|
|
56
|
+
/** Client name reported during `initialize`. */
|
|
57
|
+
clientName?: string;
|
|
58
|
+
/** Client version reported during `initialize`. */
|
|
59
|
+
clientVersion?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Handler invoked when the server sends `elicitation/create`. Registered
|
|
62
|
+
* on the `McpClient` at construction time so capability advertisement
|
|
63
|
+
* matches what the caller can actually service.
|
|
64
|
+
*/
|
|
65
|
+
elicitationHandler?: ElicitationHandler;
|
|
66
|
+
/**
|
|
67
|
+
* Handler invoked when the server sends `sampling/create`. Registered
|
|
68
|
+
* on the `McpClient` at construction time so capability advertisement
|
|
69
|
+
* matches what the caller can actually service. Typically built via
|
|
70
|
+
* `createSamplingHandler` from `@revealui/ai`, which routes the request
|
|
71
|
+
* through the caller's configured LLM with an optional model allowlist
|
|
72
|
+
* for cost safety.
|
|
73
|
+
*/
|
|
74
|
+
samplingHandler?: SamplingHandler;
|
|
75
|
+
}
|
|
76
|
+
export interface BuiltRemoteMcpClient {
|
|
77
|
+
client: McpClient;
|
|
78
|
+
meta: RemoteServerMeta;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Load OAuth credentials + server URL and return a configured `McpClient`.
|
|
82
|
+
* Throws {@link RemoteServerNotConnectedError} if no meta record exists for
|
|
83
|
+
* the `(tenant, server)` pair.
|
|
84
|
+
*/
|
|
85
|
+
export declare function buildRemoteMcpClient(options: BuildRemoteMcpClientOptions): Promise<BuiltRemoteMcpClient>;
|
|
86
|
+
//# sourceMappingURL=remote-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-client.d.ts","sourceRoot":"","sources":["../src/remote-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,kBAAkB,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAKL,KAAK,KAAK,EACX,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAc/F;AAMD,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,6BAA8B,SAAQ,KAAK;aAEpC,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;gBADd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;CAQjC;AAeD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote MCP server client helpers — tenant-scoped discovery + connection.
|
|
3
|
+
*
|
|
4
|
+
* Two responsibilities:
|
|
5
|
+
*
|
|
6
|
+
* 1. {@link listConnectedMcpServers} — enumerate the servers a tenant has
|
|
7
|
+
* an authorized OAuth token for in the vault. Does NOT connect; a pure
|
|
8
|
+
* metadata lookup.
|
|
9
|
+
*
|
|
10
|
+
* 2. {@link buildRemoteMcpClient} — load the stored server URL + OAuth
|
|
11
|
+
* meta for `(tenant, server)` and return a configured {@link McpClient}.
|
|
12
|
+
* The client is configured but NOT yet connected — callers invoke
|
|
13
|
+
* `connect()` themselves so they can manage teardown.
|
|
14
|
+
*
|
|
15
|
+
* Both helpers were originally defined alongside each other in the admin
|
|
16
|
+
* app: {@link listConnectedMcpServers} as inline logic in the
|
|
17
|
+
* `/api/mcp/remote-servers` route, {@link buildRemoteMcpClient} as the
|
|
18
|
+
* admin-local `lib/mcp/remote-server-client.ts`. They moved here so the API
|
|
19
|
+
* app can use the same path enumeration + client-construction logic without
|
|
20
|
+
* duplicating admin code.
|
|
21
|
+
*/
|
|
22
|
+
import { McpClient } from './client.js';
|
|
23
|
+
import { createRevvaultVault, McpOAuthProvider, RevvaultError, } from './oauth.js';
|
|
24
|
+
/**
|
|
25
|
+
* Safe identifier regex for tenant + server IDs. Matches the regex used by
|
|
26
|
+
* the admin remote-servers route for incoming user input.
|
|
27
|
+
*/
|
|
28
|
+
const SAFE_ID_RE = /^[A-Za-z0-9_-]{1,64}$/;
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Tenant → connected-server discovery
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
/**
|
|
33
|
+
* List the MCP servers that tenant `tenantId` has authorized OAuth tokens
|
|
34
|
+
* for in the vault. Enumerates `mcp/<tenantId>/<server>/tokens` entries
|
|
35
|
+
* and returns the unique server IDs, sorted ascending.
|
|
36
|
+
*
|
|
37
|
+
* A server appears here if and only if a successful OAuth flow has landed
|
|
38
|
+
* a `tokens` blob at that path. Tokens may be expired — refresh/rotation
|
|
39
|
+
* is the transport's concern via the `OAuthClientProvider` hooks. Callers
|
|
40
|
+
* should treat this list as "has been authorized at least once" rather
|
|
41
|
+
* than "is definitely healthy right now".
|
|
42
|
+
*
|
|
43
|
+
* @throws {RevvaultError} when the vault `list` call fails or when
|
|
44
|
+
* `tenantId` contains characters that would be unsafe to pass to the
|
|
45
|
+
* vault.
|
|
46
|
+
*/
|
|
47
|
+
export async function listConnectedMcpServers(vault, tenantId) {
|
|
48
|
+
if (!SAFE_ID_RE.test(tenantId)) {
|
|
49
|
+
throw new RevvaultError(`tenantId must match /^[A-Za-z0-9_-]{1,64}$/ (got: ${tenantId})`);
|
|
50
|
+
}
|
|
51
|
+
const paths = await vault.list(`mcp/${tenantId}/`);
|
|
52
|
+
const serverIds = new Set();
|
|
53
|
+
for (const path of paths) {
|
|
54
|
+
const segments = path.split('/');
|
|
55
|
+
if (segments.length === 4 && segments[3] === 'tokens') {
|
|
56
|
+
const server = segments[2];
|
|
57
|
+
if (server && SAFE_ID_RE.test(server))
|
|
58
|
+
serverIds.add(server);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return Array.from(serverIds).sort();
|
|
62
|
+
}
|
|
63
|
+
export class RemoteServerNotConnectedError extends Error {
|
|
64
|
+
tenant;
|
|
65
|
+
server;
|
|
66
|
+
constructor(tenant, server) {
|
|
67
|
+
super(`No OAuth meta found for mcp/${tenant}/${server}. ` +
|
|
68
|
+
'Re-authorize the server via /mcp/connect.');
|
|
69
|
+
this.tenant = tenant;
|
|
70
|
+
this.server = server;
|
|
71
|
+
this.name = 'RemoteServerNotConnectedError';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Non-authoritative placeholder; the provider reuses the originally-registered
|
|
76
|
+
* client info saved at `mcp/<tenant>/<server>/client`. Only shape is required
|
|
77
|
+
* by the provider constructor.
|
|
78
|
+
*/
|
|
79
|
+
const SENTINEL_CLIENT_METADATA = {
|
|
80
|
+
redirect_uris: ['http://localhost/unused'],
|
|
81
|
+
client_name: 'RevealUI (runtime)',
|
|
82
|
+
grant_types: ['authorization_code', 'refresh_token'],
|
|
83
|
+
response_types: ['code'],
|
|
84
|
+
token_endpoint_auth_method: 'none',
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Load OAuth credentials + server URL and return a configured `McpClient`.
|
|
88
|
+
* Throws {@link RemoteServerNotConnectedError} if no meta record exists for
|
|
89
|
+
* the `(tenant, server)` pair.
|
|
90
|
+
*/
|
|
91
|
+
export async function buildRemoteMcpClient(options) {
|
|
92
|
+
const { tenant, server } = options;
|
|
93
|
+
const vault = options.vault ?? createRevvaultVault();
|
|
94
|
+
const metaPath = `mcp/${tenant}/${server}/meta`;
|
|
95
|
+
const rawMeta = await vault.get(metaPath);
|
|
96
|
+
if (!rawMeta)
|
|
97
|
+
throw new RemoteServerNotConnectedError(tenant, server);
|
|
98
|
+
const meta = parseMeta(rawMeta);
|
|
99
|
+
const provider = new McpOAuthProvider({
|
|
100
|
+
tenant,
|
|
101
|
+
server,
|
|
102
|
+
vault,
|
|
103
|
+
redirectUrl: 'http://localhost/unused',
|
|
104
|
+
clientMetadata: SENTINEL_CLIENT_METADATA,
|
|
105
|
+
});
|
|
106
|
+
const client = new McpClient({
|
|
107
|
+
clientInfo: {
|
|
108
|
+
name: options.clientName ?? 'revealui',
|
|
109
|
+
version: options.clientVersion ?? '0.0.0',
|
|
110
|
+
},
|
|
111
|
+
transport: {
|
|
112
|
+
kind: 'streamable-http',
|
|
113
|
+
url: meta.serverUrl,
|
|
114
|
+
authProvider: provider,
|
|
115
|
+
},
|
|
116
|
+
...(options.elicitationHandler ? { elicitationHandler: options.elicitationHandler } : {}),
|
|
117
|
+
...(options.samplingHandler ? { samplingHandler: options.samplingHandler } : {}),
|
|
118
|
+
});
|
|
119
|
+
return { client, meta };
|
|
120
|
+
}
|
|
121
|
+
function parseMeta(raw) {
|
|
122
|
+
const parsed = JSON.parse(raw);
|
|
123
|
+
if (typeof parsed.serverUrl !== 'string' ||
|
|
124
|
+
typeof parsed.connectedAt !== 'string' ||
|
|
125
|
+
typeof parsed.connectedBy !== 'string') {
|
|
126
|
+
throw new Error('Stored MCP remote-server meta is missing required fields');
|
|
127
|
+
}
|
|
128
|
+
return parsed;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=remote-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-client.js","sourceRoot":"","sources":["../src/remote-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAA2B,SAAS,EAAwB,MAAM,aAAa,CAAC;AACvF,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAEhB,aAAa,GAEd,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAY,EAAE,QAAgB;IAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,aAAa,CAAC,qDAAqD,QAAQ,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAaD,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAEpC;IACA;IAFlB,YACkB,MAAc,EACd,MAAc;QAE9B,KAAK,CACH,+BAA+B,MAAM,IAAI,MAAM,IAAI;YACjD,2CAA2C,CAC9C,CAAC;QANc,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QAM9B,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,wBAAwB,GAAwB;IACpD,aAAa,EAAE,CAAC,yBAAyB,CAAC;IAC1C,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;IACpD,cAAc,EAAE,CAAC,MAAM,CAAC;IACxB,0BAA0B,EAAE,MAAM;CACnC,CAAC;AAiCF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAoC;IAEpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,OAAO,MAAM,IAAI,MAAM,OAAO,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEhC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;QACpC,MAAM;QACN,MAAM;QACN,KAAK;QACL,WAAW,EAAE,yBAAyB;QACtC,cAAc,EAAE,wBAAwB;KACzC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,UAAU,EAAE;YACV,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,UAAU;YACtC,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,OAAO;SAC1C;QACD,SAAS,EAAE;YACT,IAAI,EAAE,iBAAiB;YACvB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,YAAY,EAAE,QAAQ;SACvB;QACD,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC;IAC5D,IACE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QACtC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EACtC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,MAA0B,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/servers/adapter.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/servers/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/servers/adapter.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { randomBytes } from 'node:crypto';
|
|
13
13
|
import { registerCleanupHandler } from '@revealui/core/monitoring';
|
|
14
14
|
import { logger as coreLogger } from '@revealui/core/observability/logger';
|
|
15
|
+
import { assertPublicUrl } from '@revealui/security';
|
|
15
16
|
export var McpErrorCode;
|
|
16
17
|
(function (McpErrorCode) {
|
|
17
18
|
McpErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
@@ -345,6 +346,9 @@ export class MCPAdapter {
|
|
|
345
346
|
const controller = new AbortController();
|
|
346
347
|
const timer = setTimeout(() => controller.abort(), timeout);
|
|
347
348
|
try {
|
|
349
|
+
// SSRF protection: resolve hostname and reject private/reserved IPs
|
|
350
|
+
// before sending credentials to an attacker-controlled endpoint.
|
|
351
|
+
await assertPublicUrl(url);
|
|
348
352
|
const response = await fetch(url, {
|
|
349
353
|
method,
|
|
350
354
|
headers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/servers/adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/servers/adapter.ts"],"names":[],"mappings":"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"}
|