@databasin/mcp-client 0.1.0 → 0.2.0-beta.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.
Files changed (84) hide show
  1. package/README.md +128 -61
  2. package/dist/abort.d.ts +5 -0
  3. package/dist/abort.d.ts.map +1 -0
  4. package/dist/abort.js +25 -0
  5. package/dist/abort.js.map +1 -0
  6. package/dist/api-client.d.ts +49 -34
  7. package/dist/api-client.d.ts.map +1 -1
  8. package/dist/api-client.js +142 -145
  9. package/dist/api-client.js.map +1 -1
  10. package/dist/api-contract.d.ts +59 -0
  11. package/dist/api-contract.d.ts.map +1 -0
  12. package/dist/api-contract.js +47 -0
  13. package/dist/api-contract.js.map +1 -0
  14. package/dist/api-profile.d.ts +5 -0
  15. package/dist/api-profile.d.ts.map +1 -0
  16. package/dist/api-profile.js +38 -0
  17. package/dist/api-profile.js.map +1 -0
  18. package/dist/api-request.d.ts +27 -0
  19. package/dist/api-request.d.ts.map +1 -0
  20. package/dist/api-request.js +147 -0
  21. package/dist/api-request.js.map +1 -0
  22. package/dist/api-response.d.ts +9 -0
  23. package/dist/api-response.d.ts.map +1 -0
  24. package/dist/api-response.js +206 -0
  25. package/dist/api-response.js.map +1 -0
  26. package/dist/auth.d.ts +22 -11
  27. package/dist/auth.d.ts.map +1 -1
  28. package/dist/auth.js +71 -71
  29. package/dist/auth.js.map +1 -1
  30. package/dist/browser.d.ts +20 -1
  31. package/dist/browser.d.ts.map +1 -1
  32. package/dist/browser.js +19 -17
  33. package/dist/browser.js.map +1 -1
  34. package/dist/cli.d.ts +31 -2
  35. package/dist/cli.d.ts.map +1 -1
  36. package/dist/cli.js +147 -67
  37. package/dist/cli.js.map +1 -1
  38. package/dist/config.js +2 -2
  39. package/dist/config.js.map +1 -1
  40. package/dist/correlation.d.ts +6 -0
  41. package/dist/correlation.d.ts.map +1 -0
  42. package/dist/correlation.js +15 -0
  43. package/dist/correlation.js.map +1 -0
  44. package/dist/credential-store.d.ts +21 -0
  45. package/dist/credential-store.d.ts.map +1 -0
  46. package/dist/credential-store.js +46 -0
  47. package/dist/credential-store.js.map +1 -0
  48. package/dist/errors.d.ts +17 -3
  49. package/dist/errors.d.ts.map +1 -1
  50. package/dist/errors.js +24 -6
  51. package/dist/errors.js.map +1 -1
  52. package/dist/login-url.d.ts +18 -0
  53. package/dist/login-url.d.ts.map +1 -0
  54. package/dist/login-url.js +82 -0
  55. package/dist/login-url.js.map +1 -0
  56. package/dist/safety.d.ts +4 -0
  57. package/dist/safety.d.ts.map +1 -1
  58. package/dist/safety.js +94 -10
  59. package/dist/safety.js.map +1 -1
  60. package/dist/schemas.d.ts +326 -49
  61. package/dist/schemas.d.ts.map +1 -1
  62. package/dist/schemas.js +242 -55
  63. package/dist/schemas.js.map +1 -1
  64. package/dist/server.d.ts +2 -4
  65. package/dist/server.d.ts.map +1 -1
  66. package/dist/server.js +17 -10
  67. package/dist/server.js.map +1 -1
  68. package/dist/token-validation.d.ts +5 -0
  69. package/dist/token-validation.d.ts.map +1 -0
  70. package/dist/token-validation.js +183 -0
  71. package/dist/token-validation.js.map +1 -0
  72. package/dist/tools.d.ts +12 -1
  73. package/dist/tools.d.ts.map +1 -1
  74. package/dist/tools.js +286 -75
  75. package/dist/tools.js.map +1 -1
  76. package/dist/version.d.ts +1 -1
  77. package/dist/version.d.ts.map +1 -1
  78. package/dist/version.js +1 -1
  79. package/dist/version.js.map +1 -1
  80. package/package.json +10 -6
  81. package/dist/mappers.d.ts +0 -56
  82. package/dist/mappers.d.ts.map +0 -1
  83. package/dist/mappers.js +0 -171
  84. package/dist/mappers.js.map +0 -1
package/dist/schemas.js CHANGED
@@ -1,50 +1,105 @@
1
1
  import { z } from 'zod';
2
+ import { CorrelationIdSchema } from './correlation.js';
3
+ import { validateDeviceLoginUrl } from './login-url.js';
4
+ import { containsSensitiveMaterial, isSensitiveKey } from './safety.js';
5
+ export { CorrelationIdSchema } from './correlation.js';
6
+ export const MAX_PROMPT_BYTES = 32 * 1024;
7
+ export const MAX_CONTEXT_BYTES = 128 * 1024;
8
+ export const MAX_AGENT_RESULT_BYTES = 256 * 1024;
2
9
  const identifier = z.string().trim().min(1).max(256);
3
- export const AssistantAuthOutputSchema = z.object({
4
- status: z.enum(['authenticated', 'pending', 'not_authenticated', 'failed']),
5
- environment: z.enum(['prod', 'np']),
6
- loginUrl: z.string().url().max(8_192).nullable(),
7
- userCode: z.string().trim().min(1).max(64).optional(),
8
- expiresAt: z.iso.datetime().optional(),
9
- message: z.string().max(1_000)
10
+ const boundedText = (max) => z.string().max(max);
11
+ const numericId = z.string().trim().regex(/^[1-9][0-9]{0,63}$/u, 'must be a positive numeric ID');
12
+ export const ALLOWED_AGENT_MODELS = ['haiku', 'sonnet'];
13
+ const safeModel = z.enum(ALLOWED_AGENT_MODELS);
14
+ const authEnvironment = z.enum(['prod', 'np']);
15
+ const URL_LIKE_AUTH_MESSAGE = /(?:\b(?:https?|hxxps?|ftp|file|data|javascript)\s*:\s*(?:[/\\]\s*){0,2}|\bwww\s*(?:\.|\[\.\]|\(\.\))|(?:\b|@)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.|\[\.\]|\(\.\)))+[a-z]{2,63}(?=\b|[/:?#])|\b(?:localhost|(?:\d{1,3}\.){3}\d{1,3})(?=[:/\s]|$))/iu;
16
+ const authMessage = boundedText(1_000).refine((value) => !URL_LIKE_AUTH_MESSAGE.test(normalizeAuthMessage(value)), 'The authentication message was rejected.');
17
+ const safeDeviceLoginUrl = z.string().max(4_096).superRefine((value, context) => {
18
+ try {
19
+ validateDeviceLoginUrl(value);
20
+ }
21
+ catch {
22
+ context.addIssue({ code: 'custom', message: 'The authentication result was rejected.' });
23
+ }
24
+ });
25
+ export const AssistantAuthOutputSchema = z.discriminatedUnion('status', [
26
+ z.object({
27
+ status: z.literal('pending'),
28
+ environment: authEnvironment,
29
+ loginUrl: safeDeviceLoginUrl.nullable(),
30
+ userCode: z.string().trim().regex(/^[A-Z0-9-]{4,32}$/iu).optional(),
31
+ expiresAt: z.iso.datetime().optional(),
32
+ message: authMessage
33
+ }).strict(),
34
+ ...['authenticated', 'not_authenticated', 'failed'].map((status) => z.object({
35
+ status: z.literal(status),
36
+ environment: authEnvironment,
37
+ loginUrl: z.null(),
38
+ userCode: z.never().optional(),
39
+ expiresAt: z.never().optional(),
40
+ message: authMessage
41
+ }).strict())
42
+ ]).superRefine((value, context) => {
43
+ if (value.status !== 'pending')
44
+ return;
45
+ const hasPrompt = value.loginUrl !== null;
46
+ if (hasPrompt !== (value.userCode !== undefined) || hasPrompt !== (value.expiresAt !== undefined)) {
47
+ context.addIssue({ code: 'custom', message: 'The authentication result has an invalid pending state.' });
48
+ }
49
+ });
50
+ export const CapabilitiesDataSchema = z.object({
51
+ capabilities: z.array(identifier).max(50),
52
+ tools: z.array(identifier).max(50)
10
53
  }).strict();
11
54
  export const ProjectSchema = z.object({
12
55
  id: identifier,
13
- name: z.string().max(500).nullable(),
56
+ name: boundedText(500).nullable(),
14
57
  organizationId: identifier.nullable()
15
58
  }).strict();
16
59
  export const ConnectionSchema = z.object({
17
- id: z.union([identifier, z.number().int().positive()])
60
+ id: z.union([identifier, z.number().int().positive()]),
61
+ institutionId: identifier.nullable(),
62
+ name: boundedText(500).nullable(),
63
+ connectorType: boundedText(200).nullable(),
64
+ connectorSubType: boundedText(200).nullable(),
65
+ active: z.boolean()
18
66
  }).strict();
19
- export const ContextOutputSchema = z.object({
20
- environment: z.enum(['prod', 'np']),
67
+ export const ContextDataSchema = z.object({
21
68
  projects: z.array(ProjectSchema).max(500),
22
69
  connections: z.array(ConnectionSchema).max(500),
23
70
  capabilities: z.array(identifier).max(50)
24
71
  }).strict();
25
72
  export const SearchInputSchema = z.object({
26
73
  q: z.string().trim().min(2).max(200),
27
- projectId: identifier.optional(),
28
- organizationId: z.coerce.number().int().positive().optional(),
74
+ projectInternalId: identifier.optional(),
75
+ institutionId: numericId.optional(),
29
76
  types: z.array(z.enum(['pipeline', 'connector', 'automation'])).max(3).optional(),
30
77
  limit: z.number().int().min(1).max(25).default(10)
31
- }).strict();
32
- export const SearchOutputSchema = z.object({
78
+ }).strict().superRefine((value, context) => {
79
+ if (value.projectInternalId !== undefined && value.institutionId === undefined) {
80
+ context.addIssue({
81
+ code: 'custom',
82
+ path: ['projectInternalId'],
83
+ message: 'institutionId is required when projectInternalId is provided'
84
+ });
85
+ }
86
+ });
87
+ export const SearchDataSchema = z.object({
33
88
  items: z.array(z.object({
34
89
  id: identifier,
35
90
  type: z.enum(['pipeline', 'connector', 'automation', 'unknown']),
36
- name: z.string().max(500),
37
- description: z.string().max(2_000).nullable(),
38
- projectId: identifier.nullable(),
39
- organizationId: identifier.nullable(),
40
- updatedAt: z.string().max(100).nullable()
91
+ name: boundedText(500),
92
+ description: boundedText(2_000).nullable(),
93
+ projectInternalId: identifier.nullable(),
94
+ institutionId: identifier.nullable(),
95
+ updatedAt: boundedText(100).nullable()
41
96
  }).strict()).max(25),
42
97
  truncated: z.boolean()
43
98
  }).strict();
44
- export const BrowseLevelSchema = z.enum(['catalogs', 'schemas', 'tables', 'columns']);
45
- export const BrowseSchemaInputSchema = z.object({
46
- connectorId: z.coerce.number().int().positive(),
47
- level: BrowseLevelSchema,
99
+ export const SchemaLevelSchema = z.enum(['catalogs', 'schemas', 'tables', 'columns']);
100
+ export const GetSchemaInputSchema = z.object({
101
+ connectorId: numericId,
102
+ level: SchemaLevelSchema,
48
103
  catalog: identifier.optional(),
49
104
  schema: identifier.optional(),
50
105
  table: identifier.optional()
@@ -59,44 +114,176 @@ export const BrowseSchemaInputSchema = z.object({
59
114
  context.addIssue({ code: 'custom', path: ['table'], message: 'table is required for columns' });
60
115
  }
61
116
  });
62
- export const BrowseSchemaOutputSchema = z.object({
63
- connectorId: z.number().int().positive(),
64
- level: BrowseLevelSchema,
117
+ export const GetSchemaDataSchema = z.object({
118
+ connectorId: identifier,
119
+ level: SchemaLevelSchema,
65
120
  items: z.array(z.object({
66
121
  name: identifier,
67
- type: z.string().max(200).nullable(),
68
- comment: z.string().max(2_000).nullable()
122
+ type: boundedText(200).nullable(),
123
+ comment: boundedText(2_000).nullable()
69
124
  }).strict()).max(200),
70
125
  truncated: z.boolean()
71
126
  }).strict();
72
- export const OperationInputSchema = z.object({
73
- operationId: identifier,
74
- offset: z.number().int().min(0).max(10_000_000).default(0),
75
- limit: z.number().int().min(1).max(100).default(100)
76
- }).strict();
77
- export const OperationOutputSchema = z.object({
78
- operationId: identifier,
79
- status: z.enum(['queued', 'running', 'completed', 'failed', 'cancelled', 'unknown']),
80
- engineType: z.string().max(100).nullable(),
81
- resultKind: z.string().max(100).nullable(),
82
- columns: z.array(z.object({
83
- name: identifier,
84
- type: z.string().max(200).nullable()
85
- }).strict()).max(500),
86
- rowCount: z.number().int().nonnegative().nullable(),
87
- rows: z.array(z.array(z.unknown()).max(500)).max(100),
88
- offset: z.number().int().nonnegative(),
89
- limit: z.number().int().min(1).max(100),
90
- hasMore: z.boolean().nullable(),
127
+ const JsonContextSchema = z.record(z.string().min(1).max(128), z.unknown()).superRefine((value, context) => {
128
+ validateJsonContext(value, context);
129
+ if (Buffer.byteLength(JSON.stringify(value), 'utf8') > MAX_CONTEXT_BYTES) {
130
+ context.addIssue({ code: 'custom', message: 'context exceeds the 128 KiB limit' });
131
+ }
132
+ });
133
+ const agentRunRequestShape = {
134
+ institutionId: numericId,
135
+ projectInternalId: z.string().trim().min(1).max(128).optional(),
136
+ connectorId: numericId.optional(),
137
+ profile: z.literal('metadata_readonly').default('metadata_readonly'),
138
+ prompt: z.string().trim().min(1).max(MAX_PROMPT_BYTES).refine((value) => Buffer.byteLength(value, 'utf8') <= MAX_PROMPT_BYTES, 'prompt exceeds the 32 KiB limit').refine((value) => !containsSensitiveMaterial(value), 'prompt contains sensitive material'),
139
+ context: JsonContextSchema.default({}),
140
+ model: safeModel.optional(),
141
+ maxTurns: z.number().int().min(1).max(100).default(50)
142
+ };
143
+ export const AgentRunRequestSchema = z.object(agentRunRequestShape).strict();
144
+ export const AgentRunToolInputSchema = z.object({
145
+ ...agentRunRequestShape,
146
+ idempotencyKey: z.uuid().optional()
147
+ }).strict();
148
+ export const AgentRunStatusSchema = z.enum(['queued', 'running', 'completed', 'failed', 'cancelled']);
149
+ export const RunIdSchema = z.uuidv7();
150
+ export const AgentRunResultSchema = z.object({
151
+ content: z.string().max(MAX_AGENT_RESULT_BYTES).refine((value) => Buffer.byteLength(value, 'utf8') <= MAX_AGENT_RESULT_BYTES, 'agent result exceeds the 256 KiB limit'),
152
+ turns: z.number().int().min(0).max(100).nullable()
153
+ }).strict();
154
+ export const AgentRunErrorSchema = z.object({
155
+ code: identifier,
156
+ message: boundedText(1_000)
157
+ }).strict();
158
+ export const AgentRunDataSchema = z.object({
159
+ runId: RunIdSchema,
160
+ institutionId: numericId,
161
+ projectInternalId: z.string().min(1).max(128).nullable(),
162
+ connectorId: numericId.nullable(),
163
+ profile: z.literal('metadata_readonly'),
164
+ status: AgentRunStatusSchema,
165
+ result: AgentRunResultSchema.nullable(),
166
+ error: AgentRunErrorSchema.nullable(),
167
+ createdAt: z.iso.datetime(),
168
+ updatedAt: z.iso.datetime()
169
+ }).strict();
170
+ export const AgentRunLookupInputSchema = z.object({ runId: RunIdSchema }).strict();
171
+ export const CancelAgentRunInputSchema = z.object({
172
+ runId: RunIdSchema,
173
+ reason: z.enum(['user_requested', 'no_longer_needed', 'budget_exceeded', 'policy']).default('user_requested'),
174
+ idempotencyKey: z.uuid().optional()
175
+ }).strict();
176
+ // language is always the literal 'sql' and timeoutSeconds is a fixed facade-side
177
+ // constant -- neither is a caller-facing concept, so this input never defines them.
178
+ export const RunQueryInputSchema = z.object({
179
+ connectorId: numericId,
180
+ code: z.string().trim().min(1).max(MAX_PROMPT_BYTES).refine((value) => Buffer.byteLength(value, 'utf8') <= MAX_PROMPT_BYTES, 'code exceeds the 32 KiB limit'),
181
+ maxRows: z.number().int().min(1).max(1_000).default(1_000)
182
+ }).strict();
183
+ export const QueryLookupInputSchema = z.object({ queryId: identifier }).strict();
184
+ export const QueryStatusSchema = z.enum(['queued', 'running', 'completed', 'failed', 'cancelled']);
185
+ export const QueryColumnSchema = z.object({
186
+ name: identifier,
187
+ type: boundedText(200)
188
+ }).strict();
189
+ export const QueryErrorSchema = z.object({
190
+ code: identifier,
191
+ message: boundedText(1_000)
192
+ }).strict();
193
+ const queryCellSchema = z.lazy(() => z.union([
194
+ z.string(),
195
+ z.number(),
196
+ z.boolean(),
197
+ z.null(),
198
+ z.array(queryCellSchema),
199
+ z.record(z.string(), queryCellSchema)
200
+ ]));
201
+ export const QueryDataSchema = z.object({
202
+ queryId: identifier,
203
+ // The JVM's own QueryResponse carries no connectorId at all, so the facade can
204
+ // only echo it back for the initial run (from the caller's own input) -- status
205
+ // and cancel lookups genuinely have no connectorId to supply.
206
+ connectorId: numericId.nullable(),
207
+ status: QueryStatusSchema,
208
+ columns: z.array(QueryColumnSchema).max(1_000).nullable(),
209
+ data: z.array(z.array(queryCellSchema).max(1_000)).max(1_000).nullable(),
210
+ rowCount: z.number().int().min(0).nullable(),
91
211
  truncated: z.boolean(),
92
- message: z.string().max(1_000).nullable()
212
+ error: QueryErrorSchema.nullable()
213
+ }).strict();
214
+ // The Dave agent is stateless per call in v1 -- no session continuity -- so this
215
+ // input never defines model, sessionId, options, tools, or any permission
216
+ // override; the wrapper's own read-only policy (ClaudeAgentPolicy) is the sole
217
+ // enforcement point and is not reimplemented here.
218
+ export const RunAssistantInputSchema = z.object({
219
+ connectorId: numericId,
220
+ prompt: z.string().trim().min(1).max(MAX_PROMPT_BYTES).refine((value) => Buffer.byteLength(value, 'utf8') <= MAX_PROMPT_BYTES, 'prompt exceeds the 32 KiB limit').refine((value) => !containsSensitiveMaterial(value), 'prompt contains sensitive material'),
221
+ context: z.string().trim().min(1).max(4_096).refine((value) => !containsSensitiveMaterial(value), 'context contains sensitive material').optional(),
222
+ maxTurns: z.number().int().min(1).max(25).default(6)
93
223
  }).strict();
94
- export const CancelOperationInputSchema = z.object({
95
- operationId: identifier,
96
- reason: z.enum(['user_requested', 'no_longer_needed', 'budget_exceeded', 'policy']).optional()
224
+ export const AssistantStatusSchema = z.enum(['completed', 'failed', 'incomplete']);
225
+ export const AssistantErrorSchema = z.object({
226
+ code: identifier.nullable(),
227
+ message: boundedText(1_000)
97
228
  }).strict();
98
- export const CancelOperationOutputSchema = z.object({
99
- operationId: identifier,
100
- status: z.enum(['cancelled', 'queued', 'running', 'completed', 'failed', 'unknown'])
229
+ export const AssistantDataSchema = z.object({
230
+ status: AssistantStatusSchema,
231
+ text: z.string().max(MAX_AGENT_RESULT_BYTES).refine((value) => Buffer.byteLength(value, 'utf8') <= MAX_AGENT_RESULT_BYTES, 'text exceeds the 256 KiB limit'),
232
+ turns: z.number().int().min(0).max(100).nullable(),
233
+ error: AssistantErrorSchema.nullable()
101
234
  }).strict();
235
+ export function successEnvelopeSchema(data) {
236
+ return z.object({ data, correlationId: CorrelationIdSchema }).strict();
237
+ }
238
+ export const CapabilitiesEnvelopeSchema = successEnvelopeSchema(CapabilitiesDataSchema);
239
+ export const ContextEnvelopeSchema = successEnvelopeSchema(ContextDataSchema);
240
+ export const SearchEnvelopeSchema = successEnvelopeSchema(SearchDataSchema);
241
+ export const GetSchemaEnvelopeSchema = successEnvelopeSchema(GetSchemaDataSchema);
242
+ export const AgentRunEnvelopeSchema = successEnvelopeSchema(AgentRunDataSchema);
243
+ export const QueryEnvelopeSchema = successEnvelopeSchema(QueryDataSchema);
244
+ export const AssistantEnvelopeSchema = successEnvelopeSchema(AssistantDataSchema);
245
+ function normalizeAuthMessage(value) {
246
+ return value.normalize('NFKC').replace(/[\u200B-\u200D\u2060\uFEFF]/gu, '').replace(/\s+/gu, ' ');
247
+ }
248
+ function validateJsonContext(value, context, path = [], depth = 0) {
249
+ if (depth > 12) {
250
+ context.addIssue({ code: 'custom', path, message: 'context is too deeply nested' });
251
+ return;
252
+ }
253
+ if (isJsonPrimitive(value)) {
254
+ validatePrimitive(value, context, path);
255
+ return;
256
+ }
257
+ if (Array.isArray(value)) {
258
+ value.forEach((item, index) => validateJsonContext(item, context, [...path, index], depth + 1));
259
+ return;
260
+ }
261
+ if (!value || typeof value !== 'object') {
262
+ context.addIssue({ code: 'custom', path, message: 'context must contain only JSON values' });
263
+ return;
264
+ }
265
+ validateJsonRecord(value, context, path, depth);
266
+ }
267
+ function isJsonPrimitive(value) {
268
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
269
+ return true;
270
+ return typeof value === 'number' && Number.isFinite(value);
271
+ }
272
+ function validatePrimitive(value, context, path) {
273
+ if (typeof value === 'string' && containsSensitiveMaterial(value)) {
274
+ context.addIssue({ code: 'custom', path, message: 'context contains sensitive material' });
275
+ }
276
+ }
277
+ function validateJsonRecord(value, context, path, depth) {
278
+ for (const [key, item] of Object.entries(value)) {
279
+ const itemPath = [...path, key];
280
+ if (isSensitiveKey(key) || isPrototypeKey(key)) {
281
+ context.addIssue({ code: 'custom', path: itemPath, message: 'context contains a forbidden key' });
282
+ }
283
+ validateJsonContext(item, context, itemPath, depth + 1);
284
+ }
285
+ }
286
+ function isPrototypeKey(key) {
287
+ return key === 'constructor' || key === 'prototype' || key === '__proto__';
288
+ }
102
289
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,14 +1,13 @@
1
1
  import { McpServer } from '@modelcontextprotocol/server';
2
2
  import { type StdioServerHandle } from '@modelcontextprotocol/server/stdio';
3
3
  import { type DataBasinApi } from './api-client.js';
4
- import type { AssistantAuthResult } from './auth.js';
4
+ import { type AssistantAuthResult } from './auth.js';
5
5
  import { type DataBasinEnvironment, type DataBasinProfile } from './config.js';
6
6
  export declare const SERVER_NAME = "databasin-mcp";
7
- export declare const SERVER_VERSION = "0.1.0";
7
+ export declare const SERVER_VERSION = "0.2.0-beta.1";
8
8
  export declare const SERVER_INSTRUCTIONS: string;
9
9
  export interface CreateServerOptions {
10
10
  environment?: DataBasinEnvironment;
11
- profile?: DataBasinProfile;
12
11
  auth?: {
13
12
  profile: DataBasinProfile;
14
13
  getAccessToken(): Promise<string>;
@@ -16,7 +15,6 @@ export interface CreateServerOptions {
16
15
  getLoginStatus(): Promise<AssistantAuthResult>;
17
16
  };
18
17
  api?: DataBasinApi;
19
- fetchImpl?: typeof fetch;
20
18
  }
21
19
  export declare function createDataBasinServer(options?: CreateServerOptions): Promise<McpServer>;
22
20
  export declare function serveDataBasinStdio(options?: CreateServerOptions): StdioServerHandle;
@@ -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,EAAsB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI3F,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,mBAAmB,QAMrB,CAAC;AAEZ,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,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,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,CAcjG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,GAAG,iBAAiB,CASxF"}
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,EAAsB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI3F,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,cAAc,iBAAU,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,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB;AAED,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,CAUjG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,GAAG,iBAAiB,CAiBxF"}
package/dist/server.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { McpServer } from '@modelcontextprotocol/server';
2
2
  import { serveStdio } from '@modelcontextprotocol/server/stdio';
3
3
  import { DataBasinApiClient } from './api-client.js';
4
+ import { AuthManager } from './auth.js';
4
5
  import { getProfile } from './config.js';
5
6
  import { registerDataBasinTools } from './tools.js';
6
7
  import { VERSION } from './version.js';
@@ -8,28 +9,34 @@ export const SERVER_NAME = 'databasin-mcp';
8
9
  export const SERVER_VERSION = VERSION;
9
10
  export const SERVER_INSTRUCTIONS = [
10
11
  'Call databasin_auth_status first. If needed, call databasin_login and give the user its short-lived Microsoft URL and user code; credentials must be entered only on Microsoft\'s page, never in chat.',
11
- 'After authentication, call databasin_get_context and use only resources visible to the signed-in user.',
12
+ '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
+ 'For agent work, require an explicit institutionId and use only the metadata_readonly profile with an optional projectInternalId or connectorId.',
12
14
  'Work metadata-first and keep searches and result pages bounded.',
13
- 'Never request, accept, print, or expose credentials, access tokens, connection strings, arbitrary URLs, or arbitrary headers.',
15
+ 'Never request, accept, print, or expose credentials, access tokens, connection strings, arbitrary URLs, arbitrary headers, mutating or multi-statement SQL, or shell commands; SQL is allowed only through databasin_run_query under its bounded read-only contract.',
14
16
  'The local server handles credentials and tokens outside the agent context.'
15
17
  ].join(' ');
16
18
  export async function createDataBasinServer(options = {}) {
17
- const profile = options.profile ?? getProfile(options.environment ?? 'prod');
18
- const auth = options.auth ?? new (await import('./auth.js')).AuthManager(profile);
19
- const api = options.api ?? new DataBasinApiClient({
20
- baseUrl: profile.apiBaseUrl,
21
- auth,
22
- ...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {})
23
- });
19
+ const profile = getProfile(options.environment ?? 'prod');
20
+ const auth = options.auth ?? new AuthManager(profile);
21
+ const api = options.api ?? DataBasinApiClient.forProfile(auth);
24
22
  const server = new McpServer({ name: SERVER_NAME, version: SERVER_VERSION }, { instructions: SERVER_INSTRUCTIONS });
25
23
  registerDataBasinTools(server, { api, auth, profile });
26
24
  return server;
27
25
  }
28
26
  export function serveDataBasinStdio(options = {}) {
29
- return serveStdio(async () => createDataBasinServer(options), {
27
+ const profile = getProfile(options.environment ?? 'prod');
28
+ const auth = options.auth ?? new AuthManager(profile);
29
+ const handle = serveStdio(async () => createDataBasinServer({ ...options, auth }), {
30
30
  legacy: 'serve',
31
31
  onerror: () => process.stderr.write('DataBasin MCP protocol error.\n'),
32
32
  maxSubscriptions: 32
33
33
  });
34
+ return {
35
+ close: async () => {
36
+ if (auth instanceof AuthManager)
37
+ auth.cancelPendingLogin();
38
+ await handle.close();
39
+ }
40
+ };
34
41
  }
35
42
  //# sourceMappingURL=server.js.map
@@ -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,kBAAkB,EAAqB,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAoD,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,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,wMAAwM;IACxM,wGAAwG;IACxG,iEAAiE;IACjE,+HAA+H;IAC/H,4EAA4E;CAC7E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAeZ,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAA+B,EAAE;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,kBAAkB,CAAC;QAChD,OAAO,EAAE,OAAO,CAAC,UAAU;QAC3B,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,mBAAmB,EAAE,CACtC,CAAC;IACF,sBAAsB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAA+B,EAAE;IACnE,OAAO,UAAU,CACf,KAAK,IAAI,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAC1C;QACE,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC;QACtE,gBAAgB,EAAE,EAAE;KACrB,CACF,CAAC;AACJ,CAAC"}
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,kBAAkB,EAAqB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAA4B,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,UAAU,EAAoD,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,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,wMAAwM;IACxM,2LAA2L;IAC3L,iJAAiJ;IACjJ,iEAAiE;IACjE,sQAAsQ;IACtQ,4EAA4E;CAC7E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAaZ,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAA+B,EAAE;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,mBAAmB,EAAE,CACtC,CAAC;IACF,sBAAsB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAA+B,EAAE;IACnE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CACvB,KAAK,IAAI,EAAE,CAAC,qBAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EACvD;QACE,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC;QACtE,gBAAgB,EAAE,EAAE;KACrB,CACF,CAAC;IACF,OAAO;QACL,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,IAAI,YAAY,WAAW;gBAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AccountInfo, AuthenticationResult } from '@azure/msal-node';
2
+ import type { DataBasinProfile } from './config.js';
3
+ export declare function accountMatchesProfile(account: AccountInfo, profile: DataBasinProfile): boolean;
4
+ export declare function validateAccessTokenResult(result: AuthenticationResult | null, profile: DataBasinProfile, nowMs: number): string;
5
+ //# sourceMappingURL=token-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-validation.d.ts","sourceRoot":"","sources":["../src/token-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA8BpD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAG9F;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,oBAAoB,GAAG,IAAI,EACnC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,GACZ,MAAM,CAUR"}