@databasin/mcp-client 0.2.0-beta.1 → 0.2.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/README.md +36 -30
- package/dist/auth-schema.d.ts +23 -0
- package/dist/auth-schema.d.ts.map +1 -0
- package/dist/auth-schema.js +42 -0
- package/dist/auth-schema.js.map +1 -0
- package/dist/auth-tools.d.ts +10 -0
- package/dist/auth-tools.d.ts.map +1 -0
- package/dist/auth-tools.js +60 -0
- package/dist/auth-tools.js.map +1 -0
- package/dist/auth.d.ts +13 -74
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +16 -228
- package/dist/auth.js.map +1 -1
- package/dist/auth0-store.d.ts +14 -0
- package/dist/auth0-store.d.ts.map +1 -0
- package/dist/auth0-store.js +78 -0
- package/dist/auth0-store.js.map +1 -0
- package/dist/auth0-token.d.ts +3 -0
- package/dist/auth0-token.d.ts.map +1 -0
- package/dist/auth0-token.js +13 -0
- package/dist/auth0-token.js.map +1 -0
- package/dist/auth0.d.ts +41 -0
- package/dist/auth0.d.ts.map +1 -0
- package/dist/auth0.js +236 -0
- package/dist/auth0.js.map +1 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +3 -2
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -2
- package/dist/config.js.map +1 -1
- package/dist/entra-auth.d.ts +84 -0
- package/dist/entra-auth.d.ts.map +1 -0
- package/dist/entra-auth.js +234 -0
- package/dist/entra-auth.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/login-url.d.ts +2 -0
- package/dist/login-url.d.ts.map +1 -1
- package/dist/login-url.js +14 -0
- package/dist/login-url.js.map +1 -1
- package/dist/mcp-endpoint.d.ts +5 -0
- package/dist/mcp-endpoint.d.ts.map +1 -0
- package/dist/mcp-endpoint.js +22 -0
- package/dist/mcp-endpoint.js.map +1 -0
- package/dist/proxy-tools.d.ts +5 -0
- package/dist/proxy-tools.d.ts.map +1 -0
- package/dist/proxy-tools.js +39 -0
- package/dist/proxy-tools.js.map +1 -0
- package/dist/remote-mcp.d.ts +27 -0
- package/dist/remote-mcp.d.ts.map +1 -0
- package/dist/remote-mcp.js +70 -0
- package/dist/remote-mcp.js.map +1 -0
- package/dist/server.d.ts +3 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +17 -7
- package/dist/server.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +7 -3
- package/dist/abort.d.ts +0 -5
- package/dist/abort.d.ts.map +0 -1
- package/dist/abort.js +0 -25
- package/dist/abort.js.map +0 -1
- package/dist/api-client.d.ts +0 -58
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js +0 -151
- package/dist/api-client.js.map +0 -1
- package/dist/api-contract.d.ts +0 -59
- package/dist/api-contract.d.ts.map +0 -1
- package/dist/api-contract.js +0 -47
- package/dist/api-contract.js.map +0 -1
- package/dist/api-profile.d.ts +0 -5
- package/dist/api-profile.d.ts.map +0 -1
- package/dist/api-profile.js +0 -38
- package/dist/api-profile.js.map +0 -1
- package/dist/api-request.d.ts +0 -27
- package/dist/api-request.d.ts.map +0 -1
- package/dist/api-request.js +0 -147
- package/dist/api-request.js.map +0 -1
- package/dist/api-response.d.ts +0 -9
- package/dist/api-response.d.ts.map +0 -1
- package/dist/api-response.js +0 -206
- package/dist/api-response.js.map +0 -1
- package/dist/schemas.d.ts +0 -431
- package/dist/schemas.d.ts.map +0 -1
- package/dist/schemas.js +0 -289
- package/dist/schemas.js.map +0 -1
- package/dist/tools.d.ts +0 -28
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -328
- package/dist/tools.js.map +0 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { InteractionRequiredAuthError } from '@azure/msal-node';
|
|
2
|
+
import { openSystemBrowser } from './browser.js';
|
|
3
|
+
import { createSecurePublicClient } from './credential-store.js';
|
|
4
|
+
import { DataBasinError, LoginRequiredError } from './errors.js';
|
|
5
|
+
import { projectDevicePrompt, validateInteractiveLoginUrl } from './login-url.js';
|
|
6
|
+
import { accountMatchesProfile, validateAccessTokenResult } from './token-validation.js';
|
|
7
|
+
export class EntraAuthManager {
|
|
8
|
+
profile;
|
|
9
|
+
clientPromise;
|
|
10
|
+
tokenPromise;
|
|
11
|
+
activeLogin;
|
|
12
|
+
lastLoginFailed = false;
|
|
13
|
+
createClient;
|
|
14
|
+
openBrowser;
|
|
15
|
+
now;
|
|
16
|
+
constructor(profile, options = {}) {
|
|
17
|
+
this.profile = profile;
|
|
18
|
+
this.createClient = options.createClient ?? (() => createSecurePublicClient(profile));
|
|
19
|
+
this.openBrowser = options.openBrowser ?? openSystemBrowser;
|
|
20
|
+
this.now = options.now ?? Date.now;
|
|
21
|
+
}
|
|
22
|
+
async getAccessToken() {
|
|
23
|
+
this.tokenPromise ??= this.acquireSilent().finally(() => {
|
|
24
|
+
this.tokenPromise = undefined;
|
|
25
|
+
});
|
|
26
|
+
return this.tokenPromise;
|
|
27
|
+
}
|
|
28
|
+
async login() {
|
|
29
|
+
return this.performInteractiveLogin(this.openBrowser);
|
|
30
|
+
}
|
|
31
|
+
async startLogin() {
|
|
32
|
+
const status = await this.getLoginStatus();
|
|
33
|
+
if (status.status === 'authenticated' || status.status === 'pending')
|
|
34
|
+
return status;
|
|
35
|
+
const login = this.beginDeviceLogin();
|
|
36
|
+
const outcome = await Promise.race([
|
|
37
|
+
login.prompted.then((prompt) => ({ state: 'prompted', prompt })),
|
|
38
|
+
login.completion.then(() => ({ state: 'completed' }), () => ({ state: 'failed' }))
|
|
39
|
+
]);
|
|
40
|
+
if (outcome.state === 'completed') {
|
|
41
|
+
return this.assistantResult('authenticated', null, `DataBasin ${this.profile.label} sign-in is complete.`);
|
|
42
|
+
}
|
|
43
|
+
if (outcome.state === 'failed') {
|
|
44
|
+
return this.assistantResult('failed', null, `DataBasin ${this.profile.label} sign-in did not complete. Call databasin_login to try again.`);
|
|
45
|
+
}
|
|
46
|
+
return this.assistantResult('pending', outcome.prompt.verificationUri, `Open the Microsoft sign-in URL on any device and enter code ${outcome.prompt.userCode}. Then call databasin_auth_status.`, outcome.prompt.userCode, login.expiresAt);
|
|
47
|
+
}
|
|
48
|
+
cancelPendingLogin() {
|
|
49
|
+
this.activeLogin?.cancel();
|
|
50
|
+
}
|
|
51
|
+
async getLoginStatus() {
|
|
52
|
+
if (this.activeLogin)
|
|
53
|
+
return this.pendingAssistantResult(this.activeLogin);
|
|
54
|
+
const authenticated = await this.cachedAssistantResult();
|
|
55
|
+
if (authenticated)
|
|
56
|
+
return authenticated;
|
|
57
|
+
if (this.lastLoginFailed)
|
|
58
|
+
return this.failedAssistantResult();
|
|
59
|
+
return this.assistantResult('not_authenticated', null, `DataBasin ${this.profile.label} is not signed in. Call databasin_login to begin.`);
|
|
60
|
+
}
|
|
61
|
+
pendingAssistantResult(login) {
|
|
62
|
+
const message = login.prompt
|
|
63
|
+
? `Open the Microsoft sign-in URL on any device and enter code ${login.prompt.userCode}.`
|
|
64
|
+
: 'Microsoft is preparing the device sign-in instructions.';
|
|
65
|
+
return this.assistantResult('pending', login.prompt?.verificationUri ?? null, message, login.prompt?.userCode, login.expiresAt);
|
|
66
|
+
}
|
|
67
|
+
async cachedAssistantResult() {
|
|
68
|
+
const cachedStatus = await this.status();
|
|
69
|
+
if (!cachedStatus.authenticated)
|
|
70
|
+
return undefined;
|
|
71
|
+
try {
|
|
72
|
+
await this.getAccessToken();
|
|
73
|
+
return this.assistantResult('authenticated', null, `DataBasin ${this.profile.label} is signed in.`);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (error instanceof DataBasinError && error.code === 'UNAUTHENTICATED')
|
|
77
|
+
return undefined;
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
failedAssistantResult() {
|
|
82
|
+
return this.assistantResult('failed', null, `DataBasin ${this.profile.label} sign-in did not complete. Call databasin_login to try again.`);
|
|
83
|
+
}
|
|
84
|
+
beginDeviceLogin() {
|
|
85
|
+
if (this.activeLogin)
|
|
86
|
+
return this.activeLogin;
|
|
87
|
+
this.lastLoginFailed = false;
|
|
88
|
+
let resolvePrompted = () => undefined;
|
|
89
|
+
let cancelRequested = false;
|
|
90
|
+
let deviceRequest;
|
|
91
|
+
const login = {
|
|
92
|
+
prompted: new Promise((resolve) => {
|
|
93
|
+
resolvePrompted = resolve;
|
|
94
|
+
}),
|
|
95
|
+
completion: Promise.resolve({ authenticated: false, environment: this.profile.environment }),
|
|
96
|
+
prompt: undefined,
|
|
97
|
+
expiresAt: undefined,
|
|
98
|
+
cancel: () => {
|
|
99
|
+
cancelRequested = true;
|
|
100
|
+
if (deviceRequest)
|
|
101
|
+
deviceRequest.cancel = true;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
login.completion = this.performDeviceLogin((prompt) => {
|
|
105
|
+
login.prompt = prompt;
|
|
106
|
+
login.expiresAt = new Date(this.now() + prompt.expiresIn * 1_000).toISOString();
|
|
107
|
+
resolvePrompted(prompt);
|
|
108
|
+
}, (request) => {
|
|
109
|
+
deviceRequest = request;
|
|
110
|
+
if (cancelRequested)
|
|
111
|
+
request.cancel = true;
|
|
112
|
+
}).catch((error) => {
|
|
113
|
+
this.lastLoginFailed = true;
|
|
114
|
+
throw error;
|
|
115
|
+
}).finally(() => {
|
|
116
|
+
if (this.activeLogin === login)
|
|
117
|
+
this.activeLogin = undefined;
|
|
118
|
+
});
|
|
119
|
+
this.activeLogin = login;
|
|
120
|
+
void login.completion.catch(() => undefined);
|
|
121
|
+
return login;
|
|
122
|
+
}
|
|
123
|
+
async performDeviceLogin(onPrompt, onRequest) {
|
|
124
|
+
const client = await this.client();
|
|
125
|
+
let result;
|
|
126
|
+
try {
|
|
127
|
+
const request = {
|
|
128
|
+
scopes: [...this.profile.scopes],
|
|
129
|
+
timeout: 900,
|
|
130
|
+
cancel: false,
|
|
131
|
+
deviceCodeCallback: (response) => onPrompt(projectDevicePrompt(response))
|
|
132
|
+
};
|
|
133
|
+
onRequest(request);
|
|
134
|
+
result = await client.acquireTokenByDeviceCode(request);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
throw new DataBasinError('UNAUTHENTICATED', `DataBasin ${this.profile.label} sign-in did not complete.`);
|
|
138
|
+
}
|
|
139
|
+
return this.completeLogin(client, result);
|
|
140
|
+
}
|
|
141
|
+
async performInteractiveLogin(openBrowser) {
|
|
142
|
+
const client = await this.client();
|
|
143
|
+
let result;
|
|
144
|
+
try {
|
|
145
|
+
result = await client.acquireTokenInteractive({
|
|
146
|
+
scopes: [...this.profile.scopes],
|
|
147
|
+
openBrowser: async (url) => openBrowser(validateInteractiveLoginUrl(url, this.profile)),
|
|
148
|
+
prompt: 'select_account',
|
|
149
|
+
successTemplate: successPage(this.profile.label),
|
|
150
|
+
errorTemplate: errorPage()
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
throw new DataBasinError('UNAUTHENTICATED', `DataBasin ${this.profile.label} sign-in did not complete.`);
|
|
155
|
+
}
|
|
156
|
+
return this.completeLogin(client, result);
|
|
157
|
+
}
|
|
158
|
+
async completeLogin(client, result) {
|
|
159
|
+
validateAccessTokenResult(result, this.profile, this.now());
|
|
160
|
+
const account = result.account;
|
|
161
|
+
const accounts = await client.getAllAccounts();
|
|
162
|
+
await Promise.all(accounts
|
|
163
|
+
.filter((cachedAccount) => cachedAccount.homeAccountId !== account.homeAccountId)
|
|
164
|
+
.map((account) => client.signOut({ account })));
|
|
165
|
+
return {
|
|
166
|
+
authenticated: true,
|
|
167
|
+
environment: this.profile.environment,
|
|
168
|
+
username: account.username
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
assistantResult(status, loginUrl, message, userCode, expiresAt) {
|
|
172
|
+
if (status !== 'pending') {
|
|
173
|
+
return { status, environment: this.profile.environment, loginUrl: null, message };
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
status,
|
|
177
|
+
environment: this.profile.environment,
|
|
178
|
+
loginUrl,
|
|
179
|
+
...(userCode ? { userCode } : {}),
|
|
180
|
+
...(expiresAt ? { expiresAt } : {}),
|
|
181
|
+
message
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
async logout() {
|
|
185
|
+
const client = await this.client();
|
|
186
|
+
const accounts = await client.getAllAccounts();
|
|
187
|
+
await Promise.all(accounts.map((account) => client.signOut({ account })));
|
|
188
|
+
return accounts.length;
|
|
189
|
+
}
|
|
190
|
+
async status() {
|
|
191
|
+
const accounts = await (await this.client()).getAllAccounts();
|
|
192
|
+
const account = selectAccount(accounts, this.profile);
|
|
193
|
+
return account
|
|
194
|
+
? { authenticated: true, environment: this.profile.environment, username: account.username }
|
|
195
|
+
: { authenticated: false, environment: this.profile.environment };
|
|
196
|
+
}
|
|
197
|
+
async acquireSilent() {
|
|
198
|
+
const client = await this.client();
|
|
199
|
+
const account = selectAccount(await client.getAllAccounts(), this.profile);
|
|
200
|
+
if (!account)
|
|
201
|
+
throw new LoginRequiredError(this.profile.environment);
|
|
202
|
+
try {
|
|
203
|
+
const result = await client.acquireTokenSilent({ account, scopes: [...this.profile.scopes] });
|
|
204
|
+
return validateAccessTokenResult(result, this.profile, this.now());
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
if (error instanceof InteractionRequiredAuthError) {
|
|
208
|
+
throw new LoginRequiredError(this.profile.environment);
|
|
209
|
+
}
|
|
210
|
+
throw new DataBasinError('UNAUTHENTICATED', `The DataBasin ${this.profile.label} session could not be refreshed. Sign in again.`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
client() {
|
|
214
|
+
this.clientPromise ??= this.createClient().catch((error) => {
|
|
215
|
+
this.clientPromise = undefined;
|
|
216
|
+
const detail = error instanceof Error && error.message.includes('libsecret')
|
|
217
|
+
? ' Install or unlock the system keyring and try again.'
|
|
218
|
+
: '';
|
|
219
|
+
throw new DataBasinError('UNAUTHENTICATED', `Secure DataBasin credential storage is unavailable.${detail}`);
|
|
220
|
+
});
|
|
221
|
+
return this.clientPromise;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function selectAccount(accounts, profile) {
|
|
225
|
+
return accounts.find((account) => accountMatchesProfile(account, profile));
|
|
226
|
+
}
|
|
227
|
+
function successPage(label) {
|
|
228
|
+
return `<!doctype html><html><body><h1>DataBasin sign-in complete</h1><p>You are signed in to ${label}. You can close this window.</p></body></html>`;
|
|
229
|
+
}
|
|
230
|
+
function errorPage() {
|
|
231
|
+
return '<!doctype html><html><body><h1>DataBasin sign-in failed</h1><p>Return to your assistant or terminal and try again.</p></body></html>';
|
|
232
|
+
}
|
|
233
|
+
export { createSecurePublicClient } from './credential-store.js';
|
|
234
|
+
//# sourceMappingURL=entra-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entra-auth.js","sourceRoot":"","sources":["../src/entra-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA6B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA6B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/login-url.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export interface RawDeviceCodeResponse {
|
|
|
12
12
|
readonly interval?: unknown;
|
|
13
13
|
readonly message?: unknown;
|
|
14
14
|
}
|
|
15
|
+
export declare function validateAuth0LoginUrl(value: unknown): string;
|
|
16
|
+
export declare function validateAssistantLoginUrl(value: unknown): string;
|
|
15
17
|
export declare function projectDevicePrompt(response: RawDeviceCodeResponse): SafeDevicePrompt;
|
|
16
18
|
export declare function validateDeviceLoginUrl(value: unknown): string;
|
|
17
19
|
export declare function validateInteractiveLoginUrl(rawUrl: string, profile?: DataBasinProfile): string;
|
package/dist/login-url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-url.d.ts","sourceRoot":"","sources":["../src/login-url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAkBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,gBAAgB,CAKrF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAS7D;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAgB9F"}
|
|
1
|
+
{"version":3,"file":"login-url.d.ts","sourceRoot":"","sources":["../src/login-url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAkBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGhE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,gBAAgB,CAKrF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAS7D;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAgB9F"}
|
package/dist/login-url.js
CHANGED
|
@@ -13,6 +13,20 @@ const DEVICE_LOGIN_LOCATIONS = new Map([
|
|
|
13
13
|
['login.microsoft.com', new Set(['/device', '/device/'])]
|
|
14
14
|
]);
|
|
15
15
|
const INTERACTIVE_SUFFIX = '/oauth2/v2.0/authorize';
|
|
16
|
+
export function validateAuth0LoginUrl(value) {
|
|
17
|
+
if (value !== 'https://databasin.us.auth0.com/activate') {
|
|
18
|
+
throw new Error('Refusing an unexpected DataBasin sign-in URL.');
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
export function validateAssistantLoginUrl(value) {
|
|
23
|
+
try {
|
|
24
|
+
return validateAuth0LoginUrl(value);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return validateDeviceLoginUrl(value);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
16
30
|
export function projectDevicePrompt(response) {
|
|
17
31
|
const verificationUri = validateDeviceLoginUrl(response.verificationUri);
|
|
18
32
|
const userCode = validateUserCode(response.userCode);
|
package/dist/login-url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-url.js","sourceRoot":"","sources":["../src/login-url.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"login-url.js","sourceRoot":"","sources":["../src/login-url.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type DataBasinProfile } from './config.js';
|
|
2
|
+
export declare const MCP_ENDPOINT_PATH: "/mcp";
|
|
3
|
+
export declare function mcpEndpointForProfile(profile: DataBasinProfile): URL;
|
|
4
|
+
export declare function assertBuiltInProfile(profile: DataBasinProfile): void;
|
|
5
|
+
//# sourceMappingURL=mcp-endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-endpoint.d.ts","sourceRoot":"","sources":["../src/mcp-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,iBAAiB,EAAG,MAAe,CAAC;AAEjD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG,CAOpE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CASpE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { getProfile } from './config.js';
|
|
2
|
+
export const MCP_ENDPOINT_PATH = '/mcp';
|
|
3
|
+
export function mcpEndpointForProfile(profile) {
|
|
4
|
+
assertBuiltInProfile(profile);
|
|
5
|
+
const endpoint = new URL(profile.apiBaseUrl);
|
|
6
|
+
endpoint.pathname = MCP_ENDPOINT_PATH;
|
|
7
|
+
endpoint.search = '';
|
|
8
|
+
endpoint.hash = '';
|
|
9
|
+
return endpoint;
|
|
10
|
+
}
|
|
11
|
+
export function assertBuiltInProfile(profile) {
|
|
12
|
+
const expected = getProfile(profile.environment);
|
|
13
|
+
const matches = profile.label === expected.label
|
|
14
|
+
&& profile.apiBaseUrl === expected.apiBaseUrl
|
|
15
|
+
&& profile.tenantId === expected.tenantId
|
|
16
|
+
&& profile.clientId === expected.clientId
|
|
17
|
+
&& profile.scopes.length === expected.scopes.length
|
|
18
|
+
&& profile.scopes.every((scope, index) => scope === expected.scopes[index]);
|
|
19
|
+
if (!matches)
|
|
20
|
+
throw new Error('Only the built-in DataBasin production and NP profiles are permitted.');
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=mcp-endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-endpoint.js","sourceRoot":"","sources":["../src/mcp-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyB,MAAM,aAAa,CAAC;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAe,CAAC;AAEjD,MAAM,UAAU,qBAAqB,CAAC,OAAyB;IAC7D,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,GAAG,iBAAiB,CAAC;IACtC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;IACnB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;WAC3C,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;WAC1C,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;WACtC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;WACtC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM;WAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACzG,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Tool } from '@modelcontextprotocol/client';
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/server';
|
|
3
|
+
import type { RemoteMcp } from './remote-mcp.js';
|
|
4
|
+
export declare function registerRemoteTools(server: McpServer, remote: RemoteMcp, tools: readonly Tool[]): readonly string[];
|
|
5
|
+
//# sourceMappingURL=proxy-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-tools.d.ts","sourceRoot":"","sources":["../src/proxy-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAIzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,SAAS,MAAM,EAAE,CAQnB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { fromJsonSchema } from '@modelcontextprotocol/client';
|
|
2
|
+
import { safeCorrelationId } from './correlation.js';
|
|
3
|
+
import { publicError } from './errors.js';
|
|
4
|
+
import { LOCAL_AUTH_TOOL_NAMES } from './auth-tools.js';
|
|
5
|
+
export function registerRemoteTools(server, remote, tools) {
|
|
6
|
+
const names = new Set(LOCAL_AUTH_TOOL_NAMES);
|
|
7
|
+
for (const tool of tools) {
|
|
8
|
+
if (names.has(tool.name))
|
|
9
|
+
throw new Error(`The remote MCP server advertised duplicate tool "${tool.name}".`);
|
|
10
|
+
names.add(tool.name);
|
|
11
|
+
registerRemoteTool(server, remote, tool);
|
|
12
|
+
}
|
|
13
|
+
return tools.map((tool) => tool.name);
|
|
14
|
+
}
|
|
15
|
+
function registerRemoteTool(server, remote, tool) {
|
|
16
|
+
const outputSchema = tool.outputSchema
|
|
17
|
+
? fromJsonSchema(tool.outputSchema)
|
|
18
|
+
: undefined;
|
|
19
|
+
server.registerTool(tool.name, {
|
|
20
|
+
...(tool.title ? { title: tool.title } : {}),
|
|
21
|
+
...(tool.description ? { description: tool.description } : {}),
|
|
22
|
+
inputSchema: fromJsonSchema(tool.inputSchema),
|
|
23
|
+
...(outputSchema ? { outputSchema } : {}),
|
|
24
|
+
...(tool.annotations ? { annotations: tool.annotations } : {}),
|
|
25
|
+
...(tool.icons ? { icons: [...tool.icons] } : {}),
|
|
26
|
+
...(tool._meta ? { _meta: tool._meta } : {})
|
|
27
|
+
}, async (args, context) => {
|
|
28
|
+
try {
|
|
29
|
+
return await remote.callTool(tool, args, context.mcpReq.signal);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
const visible = publicError(error);
|
|
33
|
+
const { correlationId, ...publicFields } = visible;
|
|
34
|
+
const safe = { ...publicFields, correlationId: safeCorrelationId(correlationId) };
|
|
35
|
+
return { content: [{ type: 'text', text: JSON.stringify(safe) }], isError: true };
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=proxy-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-tools.js","sourceRoot":"","sources":["../src/proxy-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type CallToolResult, type FetchLike, type Tool } from '@modelcontextprotocol/client';
|
|
2
|
+
import type { DataBasinProfile } from './config.js';
|
|
3
|
+
export declare const REMOTE_PROTOCOL_VERSION: "2026-07-28";
|
|
4
|
+
export interface RemoteMcp {
|
|
5
|
+
connect(): Promise<readonly Tool[]>;
|
|
6
|
+
callTool(tool: Tool, args: unknown, signal?: AbortSignal): Promise<CallToolResult>;
|
|
7
|
+
close(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export type RemoteAuth = Readonly<{
|
|
10
|
+
profile: DataBasinProfile;
|
|
11
|
+
getAccessToken(): Promise<string>;
|
|
12
|
+
}>;
|
|
13
|
+
export type OfficialRemoteMcpOptions = Readonly<{
|
|
14
|
+
auth: RemoteAuth;
|
|
15
|
+
fetchImpl?: FetchLike;
|
|
16
|
+
}>;
|
|
17
|
+
export declare class OfficialRemoteMcp implements RemoteMcp {
|
|
18
|
+
private readonly client;
|
|
19
|
+
private readonly transport;
|
|
20
|
+
private connected;
|
|
21
|
+
constructor(options: OfficialRemoteMcpOptions);
|
|
22
|
+
connect(): Promise<readonly Tool[]>;
|
|
23
|
+
callTool(tool: Tool, args: unknown, signal?: AbortSignal): Promise<CallToolResult>;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare function authenticatedFetch(auth: RemoteAuth, fetchImpl: FetchLike): FetchLike;
|
|
27
|
+
//# sourceMappingURL=remote-mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-mcp.d.ts","sourceRoot":"","sources":["../src/remote-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,IAAI,EACV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,eAAO,MAAM,uBAAuB,EAAG,YAAqB,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC,CAAC;AAEH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,wBAAwB;IAevC,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAazC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAW5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAWpF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { mcpEndpointForProfile } from './mcp-endpoint.js';
|
|
4
|
+
import { VERSION } from './version.js';
|
|
5
|
+
export const REMOTE_PROTOCOL_VERSION = '2026-07-28';
|
|
6
|
+
export class OfficialRemoteMcp {
|
|
7
|
+
client;
|
|
8
|
+
transport;
|
|
9
|
+
connected = false;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
const fetchImpl = authenticatedFetch(options.auth, options.fetchImpl ?? globalThis.fetch);
|
|
12
|
+
this.client = new Client({ name: 'databasin-mcp-client-proxy', version: VERSION }, {
|
|
13
|
+
enforceStrictCapabilities: true,
|
|
14
|
+
versionNegotiation: { mode: { pin: REMOTE_PROTOCOL_VERSION } }
|
|
15
|
+
});
|
|
16
|
+
this.transport = new StreamableHTTPClientTransport(mcpEndpointForProfile(options.auth.profile), {
|
|
17
|
+
fetch: fetchImpl,
|
|
18
|
+
onInsufficientScope: 'throw'
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async connect() {
|
|
22
|
+
if (!this.connected) {
|
|
23
|
+
try {
|
|
24
|
+
await this.client.connect(this.transport);
|
|
25
|
+
this.connected = true;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
await this.close();
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return (await this.client.listTools(undefined, { cacheMode: 'refresh' })).tools;
|
|
33
|
+
}
|
|
34
|
+
callTool(tool, args, signal) {
|
|
35
|
+
return this.client.callTool({ name: tool.name, arguments: asArguments(args) }, {
|
|
36
|
+
toolDefinition: tool,
|
|
37
|
+
timeout: requestTimeout(tool),
|
|
38
|
+
...(signal ? { signal } : {})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async close() {
|
|
42
|
+
this.connected = false;
|
|
43
|
+
await this.client.close();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function authenticatedFetch(auth, fetchImpl) {
|
|
47
|
+
return async (url, init = {}) => {
|
|
48
|
+
const headers = new Headers(init.headers);
|
|
49
|
+
if (headers.get('Mcp-Method') === 'tools/call') {
|
|
50
|
+
headers.set('Authorization', `Bearer ${await auth.getAccessToken()}`);
|
|
51
|
+
headers.set('X-Correlation-Id', randomUUID());
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
headers.delete('Authorization');
|
|
55
|
+
}
|
|
56
|
+
return fetchImpl(url, { ...init, redirect: 'error', headers });
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function asArguments(value) {
|
|
60
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
61
|
+
? value
|
|
62
|
+
: {};
|
|
63
|
+
}
|
|
64
|
+
function requestTimeout(tool) {
|
|
65
|
+
const value = tool._meta?.['com.databasin/requestTimeoutMs'];
|
|
66
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 1_000 && value <= 2_000_000
|
|
67
|
+
? value
|
|
68
|
+
: 60_000;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=remote-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-mcp.js","sourceRoot":"","sources":["../src/remote-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/server';
|
|
2
2
|
import { type StdioServerHandle } from '@modelcontextprotocol/server/stdio';
|
|
3
|
-
import { type DataBasinApi } from './api-client.js';
|
|
4
3
|
import { type AssistantAuthResult } from './auth.js';
|
|
5
4
|
import { type DataBasinEnvironment, type DataBasinProfile } from './config.js';
|
|
5
|
+
import { type RemoteMcp } from './remote-mcp.js';
|
|
6
6
|
export declare const SERVER_NAME = "databasin-mcp";
|
|
7
|
-
export declare const SERVER_VERSION = "0.2.
|
|
7
|
+
export declare const SERVER_VERSION = "0.2.1";
|
|
8
8
|
export declare const SERVER_INSTRUCTIONS: string;
|
|
9
9
|
export interface CreateServerOptions {
|
|
10
10
|
environment?: DataBasinEnvironment;
|
|
@@ -14,7 +14,7 @@ export interface CreateServerOptions {
|
|
|
14
14
|
startLogin(): Promise<AssistantAuthResult>;
|
|
15
15
|
getLoginStatus(): Promise<AssistantAuthResult>;
|
|
16
16
|
};
|
|
17
|
-
|
|
17
|
+
remote?: RemoteMcp;
|
|
18
18
|
}
|
|
19
19
|
export declare function createDataBasinServer(options?: CreateServerOptions): Promise<McpServer>;
|
|
20
20
|
export declare function serveDataBasinStdio(options?: CreateServerOptions): StdioServerHandle;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAExF,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAExF,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG3F,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGpE,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,mBAAmB,QAOrB,CAAC;AAEZ,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,gBAAgB,CAAC;QAC1B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC3C,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;KAChD,CAAC;IACF,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,CAkBjG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,GAAG,iBAAiB,CAiBxF"}
|
package/dist/server.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/server';
|
|
2
2
|
import { serveStdio } from '@modelcontextprotocol/server/stdio';
|
|
3
|
-
import { DataBasinApiClient } from './api-client.js';
|
|
4
3
|
import { AuthManager } from './auth.js';
|
|
5
4
|
import { getProfile } from './config.js';
|
|
6
|
-
import {
|
|
5
|
+
import { registerAuthTools } from './auth-tools.js';
|
|
6
|
+
import { registerRemoteTools } from './proxy-tools.js';
|
|
7
|
+
import { OfficialRemoteMcp } from './remote-mcp.js';
|
|
7
8
|
import { VERSION } from './version.js';
|
|
8
9
|
export const SERVER_NAME = 'databasin-mcp';
|
|
9
10
|
export const SERVER_VERSION = VERSION;
|
|
10
11
|
export const SERVER_INSTRUCTIONS = [
|
|
11
|
-
'Call databasin_auth_status first. If needed, call databasin_login and give the user its
|
|
12
|
+
'Call databasin_auth_status first. If needed, call databasin_login and give the user its approved login URL and short-lived user code; credentials must be entered only on the sign-in page, never in chat.',
|
|
12
13
|
'After authentication, call databasin_get_capabilities and databasin_get_context before doing work; use only the server-declared capabilities and resources visible to the signed-in user.',
|
|
13
14
|
'For agent work, require an explicit institutionId and use only the metadata_readonly profile with an optional projectInternalId or connectorId.',
|
|
14
15
|
'Work metadata-first and keep searches and result pages bounded.',
|
|
@@ -18,10 +19,19 @@ export const SERVER_INSTRUCTIONS = [
|
|
|
18
19
|
export async function createDataBasinServer(options = {}) {
|
|
19
20
|
const profile = getProfile(options.environment ?? 'prod');
|
|
20
21
|
const auth = options.auth ?? new AuthManager(profile);
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
const remote = options.remote ?? new OfficialRemoteMcp({ auth });
|
|
23
|
+
try {
|
|
24
|
+
const remoteTools = await remote.connect();
|
|
25
|
+
const server = new McpServer({ name: SERVER_NAME, version: SERVER_VERSION }, { instructions: SERVER_INSTRUCTIONS });
|
|
26
|
+
registerAuthTools(server, auth);
|
|
27
|
+
registerRemoteTools(server, remote, remoteTools);
|
|
28
|
+
server.server.onclose = () => void remote.close().catch(() => undefined);
|
|
29
|
+
return server;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
await remote.close().catch(() => undefined);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
25
35
|
}
|
|
26
36
|
export function serveDataBasinStdio(options = {}) {
|
|
27
37
|
const profile = getProfile(options.environment ?? 'prod');
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,UAAU,EAA0B,MAAM,oCAAoC,CAAC;AAExF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|