@databasin/mcp-client 0.2.0 → 0.2.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/README.md +18 -16
- package/dist/auth-schema.js +2 -2
- package/dist/auth-schema.js.map +1 -1
- package/dist/auth-tools.js +3 -3
- package/dist/auth-tools.js.map +1 -1
- 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.js +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/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/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -2
|
@@ -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/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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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { type AssistantAuthResult } from './auth.js';
|
|
|
4
4
|
import { type DataBasinEnvironment, type DataBasinProfile } from './config.js';
|
|
5
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.2";
|
|
8
8
|
export declare const SERVER_INSTRUCTIONS: string;
|
|
9
9
|
export interface CreateServerOptions {
|
|
10
10
|
environment?: DataBasinEnvironment;
|
package/dist/server.js
CHANGED
|
@@ -9,7 +9,7 @@ import { VERSION } from './version.js';
|
|
|
9
9
|
export const SERVER_NAME = 'databasin-mcp';
|
|
10
10
|
export const SERVER_VERSION = VERSION;
|
|
11
11
|
export const SERVER_INSTRUCTIONS = [
|
|
12
|
-
'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.',
|
|
13
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.',
|
|
14
14
|
'For agent work, require an explicit institutionId and use only the metadata_readonly profile with an optional projectInternalId or connectorId.',
|
|
15
15
|
'Work metadata-first and keep searches and result pages bounded.',
|
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,WAAW,EAA4B,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,UAAU,EAAoD,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.2.
|
|
1
|
+
export declare const VERSION = "0.2.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.2.
|
|
1
|
+
export const VERSION = '0.2.2';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@databasin/mcp-client",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"mcpName": "io.github.Databasin-AI/mcp-client",
|
|
5
|
+
"description": "Local stdio MCP server for DataBasin with Auth0 sign-in and secure OS credential storage.",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"main": "./dist/index.js",
|
|
7
8
|
"types": "./dist/index.d.ts",
|
|
@@ -56,10 +57,13 @@
|
|
|
56
57
|
"@azure/msal-node-extensions": "5.3.5",
|
|
57
58
|
"@modelcontextprotocol/client": "2.0.0",
|
|
58
59
|
"@modelcontextprotocol/server": "2.0.0",
|
|
60
|
+
"jose": "6.2.12",
|
|
61
|
+
"proper-lockfile": "4.1.2",
|
|
59
62
|
"zod": "4.2.0"
|
|
60
63
|
},
|
|
61
64
|
"devDependencies": {
|
|
62
65
|
"@types/node": "24.13.3",
|
|
66
|
+
"@types/proper-lockfile": "4.1.4",
|
|
63
67
|
"typescript": "5.9.3",
|
|
64
68
|
"vitest": "4.1.10"
|
|
65
69
|
}
|