@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.
- package/README.md +128 -61
- package/dist/abort.d.ts +5 -0
- package/dist/abort.d.ts.map +1 -0
- package/dist/abort.js +25 -0
- package/dist/abort.js.map +1 -0
- package/dist/api-client.d.ts +49 -34
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +142 -145
- package/dist/api-client.js.map +1 -1
- package/dist/api-contract.d.ts +59 -0
- package/dist/api-contract.d.ts.map +1 -0
- package/dist/api-contract.js +47 -0
- package/dist/api-contract.js.map +1 -0
- package/dist/api-profile.d.ts +5 -0
- package/dist/api-profile.d.ts.map +1 -0
- package/dist/api-profile.js +38 -0
- package/dist/api-profile.js.map +1 -0
- package/dist/api-request.d.ts +27 -0
- package/dist/api-request.d.ts.map +1 -0
- package/dist/api-request.js +147 -0
- package/dist/api-request.js.map +1 -0
- package/dist/api-response.d.ts +9 -0
- package/dist/api-response.d.ts.map +1 -0
- package/dist/api-response.js +206 -0
- package/dist/api-response.js.map +1 -0
- package/dist/auth.d.ts +22 -11
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +71 -71
- package/dist/auth.js.map +1 -1
- package/dist/browser.d.ts +20 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +19 -17
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +31 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +147 -67
- package/dist/cli.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/correlation.d.ts +6 -0
- package/dist/correlation.d.ts.map +1 -0
- package/dist/correlation.js +15 -0
- package/dist/correlation.js.map +1 -0
- package/dist/credential-store.d.ts +21 -0
- package/dist/credential-store.d.ts.map +1 -0
- package/dist/credential-store.js +46 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/errors.d.ts +17 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +24 -6
- package/dist/errors.js.map +1 -1
- package/dist/login-url.d.ts +18 -0
- package/dist/login-url.d.ts.map +1 -0
- package/dist/login-url.js +82 -0
- package/dist/login-url.js.map +1 -0
- package/dist/safety.d.ts +4 -0
- package/dist/safety.d.ts.map +1 -1
- package/dist/safety.js +94 -10
- package/dist/safety.js.map +1 -1
- package/dist/schemas.d.ts +326 -49
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +242 -55
- package/dist/schemas.js.map +1 -1
- package/dist/server.d.ts +2 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +17 -10
- package/dist/server.js.map +1 -1
- package/dist/token-validation.d.ts +5 -0
- package/dist/token-validation.d.ts.map +1 -0
- package/dist/token-validation.js +183 -0
- package/dist/token-validation.js.map +1 -0
- package/dist/tools.d.ts +12 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +286 -75
- package/dist/tools.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 +10 -6
- package/dist/mappers.d.ts +0 -56
- package/dist/mappers.d.ts.map +0 -1
- package/dist/mappers.js +0 -171
- 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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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:
|
|
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
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
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:
|
|
37
|
-
description:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
updatedAt:
|
|
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
|
|
45
|
-
export const
|
|
46
|
-
connectorId:
|
|
47
|
-
level:
|
|
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
|
|
63
|
-
connectorId:
|
|
64
|
-
level:
|
|
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:
|
|
68
|
-
comment:
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
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
|
|
95
|
-
|
|
96
|
-
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
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
|
package/dist/schemas.js.map
CHANGED
|
@@ -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
|
|
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.
|
|
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;
|
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,EAAsB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,
|
|
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
|
|
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
|
|
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 =
|
|
18
|
-
const auth = options.auth ?? new
|
|
19
|
-
const api = options.api ??
|
|
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
|
-
|
|
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
|
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,kBAAkB,EAAqB,MAAM,iBAAiB,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"}
|