@databasin/mcp-client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +108 -0
  2. package/dist/api-client.d.ts +43 -0
  3. package/dist/api-client.d.ts.map +1 -0
  4. package/dist/api-client.js +154 -0
  5. package/dist/api-client.js.map +1 -0
  6. package/dist/auth.d.ts +73 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +234 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/browser.d.ts +2 -0
  11. package/dist/browser.d.ts.map +1 -0
  12. package/dist/browser.js +34 -0
  13. package/dist/browser.js.map +1 -0
  14. package/dist/cli.d.ts +11 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +131 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/config.d.ts +14 -0
  19. package/dist/config.d.ts.map +1 -0
  20. package/dist/config.js +45 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/errors.d.ts +13 -0
  23. package/dist/errors.d.ts.map +1 -0
  24. package/dist/errors.js +20 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/mappers.d.ts +56 -0
  31. package/dist/mappers.d.ts.map +1 -0
  32. package/dist/mappers.js +171 -0
  33. package/dist/mappers.js.map +1 -0
  34. package/dist/safety.d.ts +3 -0
  35. package/dist/safety.d.ts.map +1 -0
  36. package/dist/safety.js +27 -0
  37. package/dist/safety.js.map +1 -0
  38. package/dist/schemas.d.ts +154 -0
  39. package/dist/schemas.d.ts.map +1 -0
  40. package/dist/schemas.js +102 -0
  41. package/dist/schemas.js.map +1 -0
  42. package/dist/server.d.ts +23 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +35 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/tools.d.ts +17 -0
  47. package/dist/tools.d.ts.map +1 -0
  48. package/dist/tools.js +117 -0
  49. package/dist/tools.js.map +1 -0
  50. package/dist/version.d.ts +2 -0
  51. package/dist/version.d.ts.map +1 -0
  52. package/dist/version.js +2 -0
  53. package/dist/version.js.map +1 -0
  54. package/package.json +61 -0
@@ -0,0 +1,154 @@
1
+ import { z } from 'zod';
2
+ export declare const AssistantAuthOutputSchema: z.ZodObject<{
3
+ status: z.ZodEnum<{
4
+ authenticated: "authenticated";
5
+ pending: "pending";
6
+ not_authenticated: "not_authenticated";
7
+ failed: "failed";
8
+ }>;
9
+ environment: z.ZodEnum<{
10
+ prod: "prod";
11
+ np: "np";
12
+ }>;
13
+ loginUrl: z.ZodNullable<z.ZodString>;
14
+ userCode: z.ZodOptional<z.ZodString>;
15
+ expiresAt: z.ZodOptional<z.ZodISODateTime>;
16
+ message: z.ZodString;
17
+ }, z.core.$strict>;
18
+ export declare const ProjectSchema: z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodNullable<z.ZodString>;
21
+ organizationId: z.ZodNullable<z.ZodString>;
22
+ }, z.core.$strict>;
23
+ export declare const ConnectionSchema: z.ZodObject<{
24
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
25
+ }, z.core.$strict>;
26
+ export declare const ContextOutputSchema: z.ZodObject<{
27
+ environment: z.ZodEnum<{
28
+ prod: "prod";
29
+ np: "np";
30
+ }>;
31
+ projects: z.ZodArray<z.ZodObject<{
32
+ id: z.ZodString;
33
+ name: z.ZodNullable<z.ZodString>;
34
+ organizationId: z.ZodNullable<z.ZodString>;
35
+ }, z.core.$strict>>;
36
+ connections: z.ZodArray<z.ZodObject<{
37
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
38
+ }, z.core.$strict>>;
39
+ capabilities: z.ZodArray<z.ZodString>;
40
+ }, z.core.$strict>;
41
+ export declare const SearchInputSchema: z.ZodObject<{
42
+ q: z.ZodString;
43
+ projectId: z.ZodOptional<z.ZodString>;
44
+ organizationId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
45
+ types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
46
+ pipeline: "pipeline";
47
+ connector: "connector";
48
+ automation: "automation";
49
+ }>>>;
50
+ limit: z.ZodDefault<z.ZodNumber>;
51
+ }, z.core.$strict>;
52
+ export declare const SearchOutputSchema: z.ZodObject<{
53
+ items: z.ZodArray<z.ZodObject<{
54
+ id: z.ZodString;
55
+ type: z.ZodEnum<{
56
+ unknown: "unknown";
57
+ pipeline: "pipeline";
58
+ connector: "connector";
59
+ automation: "automation";
60
+ }>;
61
+ name: z.ZodString;
62
+ description: z.ZodNullable<z.ZodString>;
63
+ projectId: z.ZodNullable<z.ZodString>;
64
+ organizationId: z.ZodNullable<z.ZodString>;
65
+ updatedAt: z.ZodNullable<z.ZodString>;
66
+ }, z.core.$strict>>;
67
+ truncated: z.ZodBoolean;
68
+ }, z.core.$strict>;
69
+ export declare const BrowseLevelSchema: z.ZodEnum<{
70
+ catalogs: "catalogs";
71
+ schemas: "schemas";
72
+ tables: "tables";
73
+ columns: "columns";
74
+ }>;
75
+ export declare const BrowseSchemaInputSchema: z.ZodObject<{
76
+ connectorId: z.ZodCoercedNumber<unknown>;
77
+ level: z.ZodEnum<{
78
+ catalogs: "catalogs";
79
+ schemas: "schemas";
80
+ tables: "tables";
81
+ columns: "columns";
82
+ }>;
83
+ catalog: z.ZodOptional<z.ZodString>;
84
+ schema: z.ZodOptional<z.ZodString>;
85
+ table: z.ZodOptional<z.ZodString>;
86
+ }, z.core.$strict>;
87
+ export declare const BrowseSchemaOutputSchema: z.ZodObject<{
88
+ connectorId: z.ZodNumber;
89
+ level: z.ZodEnum<{
90
+ catalogs: "catalogs";
91
+ schemas: "schemas";
92
+ tables: "tables";
93
+ columns: "columns";
94
+ }>;
95
+ items: z.ZodArray<z.ZodObject<{
96
+ name: z.ZodString;
97
+ type: z.ZodNullable<z.ZodString>;
98
+ comment: z.ZodNullable<z.ZodString>;
99
+ }, z.core.$strict>>;
100
+ truncated: z.ZodBoolean;
101
+ }, z.core.$strict>;
102
+ export declare const OperationInputSchema: z.ZodObject<{
103
+ operationId: z.ZodString;
104
+ offset: z.ZodDefault<z.ZodNumber>;
105
+ limit: z.ZodDefault<z.ZodNumber>;
106
+ }, z.core.$strict>;
107
+ export declare const OperationOutputSchema: z.ZodObject<{
108
+ operationId: z.ZodString;
109
+ status: z.ZodEnum<{
110
+ failed: "failed";
111
+ unknown: "unknown";
112
+ queued: "queued";
113
+ running: "running";
114
+ completed: "completed";
115
+ cancelled: "cancelled";
116
+ }>;
117
+ engineType: z.ZodNullable<z.ZodString>;
118
+ resultKind: z.ZodNullable<z.ZodString>;
119
+ columns: z.ZodArray<z.ZodObject<{
120
+ name: z.ZodString;
121
+ type: z.ZodNullable<z.ZodString>;
122
+ }, z.core.$strict>>;
123
+ rowCount: z.ZodNullable<z.ZodNumber>;
124
+ rows: z.ZodArray<z.ZodArray<z.ZodUnknown>>;
125
+ offset: z.ZodNumber;
126
+ limit: z.ZodNumber;
127
+ hasMore: z.ZodNullable<z.ZodBoolean>;
128
+ truncated: z.ZodBoolean;
129
+ message: z.ZodNullable<z.ZodString>;
130
+ }, z.core.$strict>;
131
+ export declare const CancelOperationInputSchema: z.ZodObject<{
132
+ operationId: z.ZodString;
133
+ reason: z.ZodOptional<z.ZodEnum<{
134
+ user_requested: "user_requested";
135
+ no_longer_needed: "no_longer_needed";
136
+ budget_exceeded: "budget_exceeded";
137
+ policy: "policy";
138
+ }>>;
139
+ }, z.core.$strict>;
140
+ export declare const CancelOperationOutputSchema: z.ZodObject<{
141
+ operationId: z.ZodString;
142
+ status: z.ZodEnum<{
143
+ failed: "failed";
144
+ unknown: "unknown";
145
+ queued: "queued";
146
+ running: "running";
147
+ completed: "completed";
148
+ cancelled: "cancelled";
149
+ }>;
150
+ }, z.core.$strict>;
151
+ export type SearchInput = z.infer<typeof SearchInputSchema>;
152
+ export type BrowseSchemaInput = z.infer<typeof BrowseSchemaInputSchema>;
153
+ export type OperationInput = z.infer<typeof OperationInputSchema>;
154
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;kBAO3B,CAAC;AAEZ,eAAO,MAAM,aAAa;;;;kBAIf,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;kBAElB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;kBAKrB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;;;;;;kBAMnB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;kBAWpB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;EAAuD,CAAC;AAEtF,eAAO,MAAM,uBAAuB;;;;;;;;;;;kBAgBlC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;kBAS1B,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;kBAItB,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;kBAgBvB,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;;;;;kBAG5B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;;;;;;;kBAG7B,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { z } from 'zod';
2
+ 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
+ }).strict();
11
+ export const ProjectSchema = z.object({
12
+ id: identifier,
13
+ name: z.string().max(500).nullable(),
14
+ organizationId: identifier.nullable()
15
+ }).strict();
16
+ export const ConnectionSchema = z.object({
17
+ id: z.union([identifier, z.number().int().positive()])
18
+ }).strict();
19
+ export const ContextOutputSchema = z.object({
20
+ environment: z.enum(['prod', 'np']),
21
+ projects: z.array(ProjectSchema).max(500),
22
+ connections: z.array(ConnectionSchema).max(500),
23
+ capabilities: z.array(identifier).max(50)
24
+ }).strict();
25
+ export const SearchInputSchema = z.object({
26
+ q: z.string().trim().min(2).max(200),
27
+ projectId: identifier.optional(),
28
+ organizationId: z.coerce.number().int().positive().optional(),
29
+ types: z.array(z.enum(['pipeline', 'connector', 'automation'])).max(3).optional(),
30
+ limit: z.number().int().min(1).max(25).default(10)
31
+ }).strict();
32
+ export const SearchOutputSchema = z.object({
33
+ items: z.array(z.object({
34
+ id: identifier,
35
+ 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()
41
+ }).strict()).max(25),
42
+ truncated: z.boolean()
43
+ }).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,
48
+ catalog: identifier.optional(),
49
+ schema: identifier.optional(),
50
+ table: identifier.optional()
51
+ }).strict().superRefine((value, context) => {
52
+ if (['schemas', 'tables', 'columns'].includes(value.level) && !value.catalog) {
53
+ context.addIssue({ code: 'custom', path: ['catalog'], message: 'catalog is required for this level' });
54
+ }
55
+ if (['tables', 'columns'].includes(value.level) && !value.schema) {
56
+ context.addIssue({ code: 'custom', path: ['schema'], message: 'schema is required for this level' });
57
+ }
58
+ if (value.level === 'columns' && !value.table) {
59
+ context.addIssue({ code: 'custom', path: ['table'], message: 'table is required for columns' });
60
+ }
61
+ });
62
+ export const BrowseSchemaOutputSchema = z.object({
63
+ connectorId: z.number().int().positive(),
64
+ level: BrowseLevelSchema,
65
+ items: z.array(z.object({
66
+ name: identifier,
67
+ type: z.string().max(200).nullable(),
68
+ comment: z.string().max(2_000).nullable()
69
+ }).strict()).max(200),
70
+ truncated: z.boolean()
71
+ }).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(),
91
+ truncated: z.boolean(),
92
+ message: z.string().max(1_000).nullable()
93
+ }).strict();
94
+ export const CancelOperationInputSchema = z.object({
95
+ operationId: identifier,
96
+ reason: z.enum(['user_requested', 'no_longer_needed', 'budget_exceeded', 'policy']).optional()
97
+ }).strict();
98
+ export const CancelOperationOutputSchema = z.object({
99
+ operationId: identifier,
100
+ status: z.enum(['cancelled', 'queued', 'running', 'completed', 'failed', 'unknown'])
101
+ }).strict();
102
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAC3E,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrD,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;CAC/B,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;CACvD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE;IAChC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC7C,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE;QAChC,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KAC1C,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,iBAAiB;IACxB,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACzC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7E,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACjE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAClG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;KAC1C,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;CACrD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACpF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KACrC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACnD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/F,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACrF,CAAC,CAAC,MAAM,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { McpServer } from '@modelcontextprotocol/server';
2
+ import { type StdioServerHandle } from '@modelcontextprotocol/server/stdio';
3
+ import { type DataBasinApi } from './api-client.js';
4
+ import type { AssistantAuthResult } from './auth.js';
5
+ import { type DataBasinEnvironment, type DataBasinProfile } from './config.js';
6
+ export declare const SERVER_NAME = "databasin-mcp";
7
+ export declare const SERVER_VERSION = "0.1.0";
8
+ export declare const SERVER_INSTRUCTIONS: string;
9
+ export interface CreateServerOptions {
10
+ environment?: DataBasinEnvironment;
11
+ profile?: DataBasinProfile;
12
+ auth?: {
13
+ profile: DataBasinProfile;
14
+ getAccessToken(): Promise<string>;
15
+ startLogin(): Promise<AssistantAuthResult>;
16
+ getLoginStatus(): Promise<AssistantAuthResult>;
17
+ };
18
+ api?: DataBasinApi;
19
+ fetchImpl?: typeof fetch;
20
+ }
21
+ export declare function createDataBasinServer(options?: CreateServerOptions): Promise<McpServer>;
22
+ export declare function serveDataBasinStdio(options?: CreateServerOptions): StdioServerHandle;
23
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +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"}
package/dist/server.js ADDED
@@ -0,0 +1,35 @@
1
+ import { McpServer } from '@modelcontextprotocol/server';
2
+ import { serveStdio } from '@modelcontextprotocol/server/stdio';
3
+ import { DataBasinApiClient } from './api-client.js';
4
+ import { getProfile } from './config.js';
5
+ import { registerDataBasinTools } from './tools.js';
6
+ import { VERSION } from './version.js';
7
+ export const SERVER_NAME = 'databasin-mcp';
8
+ export const SERVER_VERSION = VERSION;
9
+ export const SERVER_INSTRUCTIONS = [
10
+ '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
+ '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.',
14
+ 'The local server handles credentials and tokens outside the agent context.'
15
+ ].join(' ');
16
+ 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
+ });
24
+ const server = new McpServer({ name: SERVER_NAME, version: SERVER_VERSION }, { instructions: SERVER_INSTRUCTIONS });
25
+ registerDataBasinTools(server, { api, auth, profile });
26
+ return server;
27
+ }
28
+ export function serveDataBasinStdio(options = {}) {
29
+ return serveStdio(async () => createDataBasinServer(options), {
30
+ legacy: 'serve',
31
+ onerror: () => process.stderr.write('DataBasin MCP protocol error.\n'),
32
+ maxSubscriptions: 32
33
+ });
34
+ }
35
+ //# sourceMappingURL=server.js.map
@@ -0,0 +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"}
@@ -0,0 +1,17 @@
1
+ import { McpServer } from '@modelcontextprotocol/server';
2
+ import type { DataBasinApi } from './api-client.js';
3
+ import type { AssistantAuthResult } from './auth.js';
4
+ import type { DataBasinProfile } from './config.js';
5
+ export declare const TOOL_NAMES: readonly ["databasin_auth_status", "databasin_login", "databasin_get_context", "databasin_search", "databasin_browse_schema", "databasin_get_operation", "databasin_cancel_operation"];
6
+ interface Dependencies {
7
+ api: DataBasinApi;
8
+ auth: {
9
+ startLogin(): Promise<AssistantAuthResult>;
10
+ getLoginStatus(): Promise<AssistantAuthResult>;
11
+ };
12
+ profile: DataBasinProfile;
13
+ maxOutputBytes?: number;
14
+ }
15
+ export declare function registerDataBasinTools(server: McpServer, dependencies: Dependencies): void;
16
+ export {};
17
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,8BAA8B,CAAC;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAiBpD,eAAO,MAAM,UAAU,wLAQZ,CAAC;AAEZ,UAAU,YAAY;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,IAAI,EAAE;QACJ,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC3C,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;KAChD,CAAC;IACF,OAAO,EAAE,gBAAgB,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAkG1F"}
package/dist/tools.js ADDED
@@ -0,0 +1,117 @@
1
+ import { ResourceTemplate } from '@modelcontextprotocol/server';
2
+ import { z, ZodError } from 'zod';
3
+ import { DataBasinError, publicError } from './errors.js';
4
+ import { mapCancel, mapConnections, mapOperation, mapProjects, mapSchema, mapSearch } from './mappers.js';
5
+ import { assertSafeOutput, correlationId } from './safety.js';
6
+ import { AssistantAuthOutputSchema, BrowseSchemaInputSchema, BrowseSchemaOutputSchema, CancelOperationInputSchema, CancelOperationOutputSchema, ContextOutputSchema, OperationInputSchema, OperationOutputSchema, SearchInputSchema, SearchOutputSchema } from './schemas.js';
7
+ export const TOOL_NAMES = Object.freeze([
8
+ 'databasin_auth_status',
9
+ 'databasin_login',
10
+ 'databasin_get_context',
11
+ 'databasin_search',
12
+ 'databasin_browse_schema',
13
+ 'databasin_get_operation',
14
+ 'databasin_cancel_operation'
15
+ ]);
16
+ export function registerDataBasinTools(server, dependencies) {
17
+ register(server, dependencies, 'databasin_auth_status', {
18
+ title: 'Check DataBasin sign-in',
19
+ description: 'Check whether this local MCP client is signed in or waiting for browser sign-in. Returns no account identity or credentials.',
20
+ inputSchema: z.object({}).strict(),
21
+ outputSchema: AssistantAuthOutputSchema,
22
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false }
23
+ }, async () => dependencies.auth.getLoginStatus());
24
+ register(server, dependencies, 'databasin_login', {
25
+ title: 'Sign in to DataBasin',
26
+ description: 'Start Microsoft device sign-in and return a short-lived URL and user code usable on any device. Credentials must be entered only on Microsoft\'s page.',
27
+ inputSchema: z.object({}).strict(),
28
+ outputSchema: AssistantAuthOutputSchema,
29
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true }
30
+ }, async () => dependencies.auth.startLogin());
31
+ register(server, dependencies, 'databasin_get_context', {
32
+ title: 'Get DataBasin context',
33
+ description: 'Return projects and connection identifiers visible to the signed-in DataBasin user. Call this first after sign-in.',
34
+ inputSchema: z.object({}).strict(),
35
+ outputSchema: ContextOutputSchema,
36
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false }
37
+ }, async (_input, signal) => {
38
+ const [projects, connections] = await Promise.all([
39
+ dependencies.api.getProjects(signal),
40
+ dependencies.api.getAccessibleConnections(signal)
41
+ ]);
42
+ return ContextOutputSchema.parse({
43
+ environment: dependencies.profile.environment,
44
+ projects: mapProjects(projects).slice(0, 500),
45
+ connections: mapConnections(connections).slice(0, 500),
46
+ capabilities: TOOL_NAMES
47
+ });
48
+ });
49
+ register(server, dependencies, 'databasin_search', {
50
+ title: 'Search DataBasin',
51
+ description: 'Search visible pipelines, connectors, and automations using the fixed DataBasin API.',
52
+ inputSchema: SearchInputSchema,
53
+ outputSchema: SearchOutputSchema,
54
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false }
55
+ }, async (input, signal) => mapSearch(await dependencies.api.search(input, signal), input.limit));
56
+ register(server, dependencies, 'databasin_browse_schema', {
57
+ title: 'Browse DataBasin schema',
58
+ description: 'Browse bounded catalogs, schemas, tables, or columns for one visible connector.',
59
+ inputSchema: BrowseSchemaInputSchema,
60
+ outputSchema: BrowseSchemaOutputSchema,
61
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false }
62
+ }, async (input, signal) => mapSchema(await dependencies.api.browseSchema(input, signal), input));
63
+ register(server, dependencies, 'databasin_get_operation', {
64
+ title: 'Get DataBasin query operation',
65
+ description: 'Read bounded status and results for a caller-visible DataBasin query operation.',
66
+ inputSchema: OperationInputSchema,
67
+ outputSchema: OperationOutputSchema,
68
+ annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false }
69
+ }, async (input, signal) => mapOperation(await dependencies.api.getOperation(input.operationId, { offset: input.offset, limit: input.limit }, signal), input.operationId, { offset: input.offset, limit: input.limit }));
70
+ register(server, dependencies, 'databasin_cancel_operation', {
71
+ title: 'Cancel DataBasin query operation',
72
+ description: 'Request cancellation of a caller-visible DataBasin query operation. Cancellation is re-authorized by the API.',
73
+ inputSchema: CancelOperationInputSchema,
74
+ outputSchema: CancelOperationOutputSchema,
75
+ annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: false }
76
+ }, async (input, signal) => mapCancel(await dependencies.api.cancelOperation(input.operationId, signal), input.operationId));
77
+ server.registerResource('databasin-operation', new ResourceTemplate('databasin://operations/{operationId}', { list: undefined }), {
78
+ title: 'DataBasin operation result',
79
+ description: 'Bounded, re-authorized DataBasin operation status and first result page.',
80
+ mimeType: 'application/json',
81
+ cacheHint: { cacheScope: 'private', ttlMs: 0 }
82
+ }, async (uri, variables) => {
83
+ try {
84
+ const operationId = String(variables.operationId ?? '');
85
+ if (!operationId || operationId.length > 256)
86
+ throw new DataBasinError('INVALID_ARGUMENT', 'A valid operation ID is required.');
87
+ const output = mapOperation(await dependencies.api.getOperation(operationId, { offset: 0, limit: 100 }), operationId, { offset: 0, limit: 100 });
88
+ assertSafeOutput(output, dependencies.maxOutputBytes);
89
+ return { contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(output) }] };
90
+ }
91
+ catch (error) {
92
+ const safe = { ...publicError(error), correlationId: correlationId() };
93
+ return { contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(safe) }] };
94
+ }
95
+ });
96
+ }
97
+ function register(server, dependencies, name, definition, handler) {
98
+ server.registerTool(name, definition, async (rawInput, context) => {
99
+ try {
100
+ const input = definition.inputSchema.parse(rawInput ?? {});
101
+ const output = definition.outputSchema.parse(await handler(input, context.mcpReq.signal));
102
+ assertSafeOutput(output, dependencies.maxOutputBytes);
103
+ return {
104
+ content: [{ type: 'text', text: JSON.stringify(output) }],
105
+ structuredContent: output
106
+ };
107
+ }
108
+ catch (error) {
109
+ const normalized = error instanceof ZodError
110
+ ? new DataBasinError('INVALID_ARGUMENT', error.issues[0]?.message ?? 'The tool arguments are invalid.')
111
+ : error;
112
+ const safe = { ...publicError(normalized), correlationId: correlationId() };
113
+ return { content: [{ type: 'text', text: JSON.stringify(safe) }], isError: true };
114
+ }
115
+ });
116
+ }
117
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.1.0";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const VERSION = '0.1.0';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@databasin/mcp-client",
3
+ "version": "0.1.0",
4
+ "description": "Local stdio MCP server for DataBasin with Microsoft Entra sign-in.",
5
+ "type": "module",
6
+ "bin": {
7
+ "databasin-mcp": "dist/cli.js"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "engines": {
20
+ "node": ">=22.14.0"
21
+ },
22
+ "scripts": {
23
+ "clean": "node scripts/clean.mjs",
24
+ "build": "npm run clean && tsc -p tsconfig.json",
25
+ "typecheck": "tsc -p tsconfig.json --noEmit",
26
+ "test": "vitest run",
27
+ "test:stdio": "npm run build && vitest run tests/stdio.e2e.test.ts",
28
+ "verify": "npm run typecheck && npm run build && npm run test",
29
+ "prepack": "npm run verify"
30
+ },
31
+ "keywords": [
32
+ "databasin",
33
+ "mcp",
34
+ "model-context-protocol",
35
+ "stdio"
36
+ ],
37
+ "license": "UNLICENSED",
38
+ "homepage": "https://databasin.cloud",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/Databasin-AI/mcp-client.git"
42
+ },
43
+ "bugs": {
44
+ "url": "https://github.com/Databasin-AI/mcp-client/issues"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "dependencies": {
50
+ "@azure/msal-node": "5.5.0",
51
+ "@azure/msal-node-extensions": "5.3.5",
52
+ "@modelcontextprotocol/server": "2.0.0",
53
+ "zod": "4.2.0"
54
+ },
55
+ "devDependencies": {
56
+ "@modelcontextprotocol/client": "2.0.0",
57
+ "@types/node": "22.19.7",
58
+ "typescript": "5.9.3",
59
+ "vitest": "4.1.10"
60
+ }
61
+ }