@nodusapi/mcp-server 1.2.1 → 1.4.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.
@@ -1,274 +0,0 @@
1
- import { ListToolsRequestSchema, CallToolRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
2
- import { ListTablesSchema, GetTableSchemaSchema, CreateTableSchema, UpdateTableSchema, AddColumnSchema, UpdateColumnSchema, } from '../utils/validation.js';
3
- export function registerSchemaTools(server, client) {
4
- server.setRequestHandler(ListToolsRequestSchema, async () => {
5
- const tools = [
6
- {
7
- name: 'list_tables',
8
- description: 'List all tables in the project',
9
- inputSchema: {
10
- type: 'object',
11
- properties: {},
12
- },
13
- },
14
- {
15
- name: 'get_table_schema',
16
- description: 'Get detailed schema for a specific table including all columns',
17
- inputSchema: {
18
- type: 'object',
19
- properties: {
20
- tableSlug: {
21
- type: 'string',
22
- description: 'Table identifier (slug)',
23
- },
24
- },
25
- required: ['tableSlug'],
26
- },
27
- },
28
- {
29
- name: 'create_table',
30
- description: 'Create a new table in the project',
31
- inputSchema: {
32
- type: 'object',
33
- properties: {
34
- name: {
35
- type: 'string',
36
- description: 'Human-readable table name',
37
- },
38
- slug: {
39
- type: 'string',
40
- description: 'Table slug (lowercase, numbers, underscores only)',
41
- pattern: '^[a-z0-9_]+$',
42
- },
43
- },
44
- required: ['name', 'slug'],
45
- },
46
- },
47
- {
48
- name: 'update_table',
49
- description: 'Update table name',
50
- inputSchema: {
51
- type: 'object',
52
- properties: {
53
- tableSlug: {
54
- type: 'string',
55
- description: 'Current table slug',
56
- },
57
- name: {
58
- type: 'string',
59
- description: 'New table name',
60
- },
61
- },
62
- required: ['tableSlug', 'name'],
63
- },
64
- },
65
- {
66
- name: 'add_column',
67
- description: 'Add a new column to a table',
68
- inputSchema: {
69
- type: 'object',
70
- properties: {
71
- tableSlug: {
72
- type: 'string',
73
- description: 'Table identifier (slug)',
74
- },
75
- name: {
76
- type: 'string',
77
- description: 'Human-readable column name',
78
- },
79
- slug: {
80
- type: 'string',
81
- description: 'Column slug (lowercase, numbers, underscores only)',
82
- pattern: '^[a-z0-9_]+$',
83
- },
84
- type: {
85
- type: 'string',
86
- enum: ['string', 'text', 'integer', 'float', 'boolean', 'datetime', 'json'],
87
- description: 'Column data type',
88
- },
89
- isRequired: {
90
- type: 'boolean',
91
- description: 'Whether the column is required',
92
- },
93
- defaultValue: {
94
- description: 'Default value for the column',
95
- },
96
- },
97
- required: ['tableSlug', 'name', 'slug', 'type'],
98
- },
99
- },
100
- {
101
- name: 'update_column',
102
- description: 'Update column properties (name, isRequired, defaultValue)',
103
- inputSchema: {
104
- type: 'object',
105
- properties: {
106
- tableSlug: {
107
- type: 'string',
108
- description: 'Table identifier (slug)',
109
- },
110
- columnSlug: {
111
- type: 'string',
112
- description: 'Column identifier (slug)',
113
- },
114
- name: {
115
- type: 'string',
116
- description: 'New column name',
117
- },
118
- isRequired: {
119
- type: 'boolean',
120
- description: 'Whether the column is required',
121
- },
122
- defaultValue: {
123
- description: 'Default value for the column',
124
- },
125
- },
126
- required: ['tableSlug', 'columnSlug'],
127
- },
128
- },
129
- ];
130
- return { tools };
131
- });
132
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
133
- const { name, arguments: args } = request.params;
134
- try {
135
- switch (name) {
136
- case 'list_tables': {
137
- ListTablesSchema.parse(args);
138
- const tables = await client.getTables();
139
- return {
140
- content: [
141
- {
142
- type: 'text',
143
- text: JSON.stringify({
144
- tables: tables.map((t) => ({
145
- name: t.name,
146
- slug: t.slug,
147
- rowCount: t.rowCount,
148
- createdAt: t.createdAt,
149
- })),
150
- count: tables.length,
151
- message: `Found ${tables.length} tables in the project`,
152
- }, null, 2),
153
- },
154
- ],
155
- };
156
- }
157
- case 'get_table_schema': {
158
- const params = GetTableSchemaSchema.parse(args);
159
- const table = await client.getTable(params.tableSlug);
160
- return {
161
- content: [
162
- {
163
- type: 'text',
164
- text: JSON.stringify({
165
- table: {
166
- name: table.name,
167
- slug: table.slug,
168
- createdAt: table.createdAt,
169
- },
170
- columns: table.columns.map((c) => ({
171
- name: c.name,
172
- slug: c.slug,
173
- type: c.type,
174
- isRequired: c.isRequired,
175
- defaultValue: c.defaultValue,
176
- })),
177
- message: `Retrieved schema for table "${table.name}" with ${table.columns.length} columns`,
178
- }, null, 2),
179
- },
180
- ],
181
- };
182
- }
183
- case 'create_table': {
184
- const params = CreateTableSchema.parse(args);
185
- const table = await client.createTable(params.name, params.slug);
186
- return {
187
- content: [
188
- {
189
- type: 'text',
190
- text: JSON.stringify({
191
- table,
192
- message: `Successfully created table "${table.name}" (${table.slug})`,
193
- }, null, 2),
194
- },
195
- ],
196
- };
197
- }
198
- case 'update_table': {
199
- const params = UpdateTableSchema.parse(args);
200
- const table = await client.updateTable(params.tableSlug, params.name);
201
- return {
202
- content: [
203
- {
204
- type: 'text',
205
- text: JSON.stringify({
206
- table,
207
- message: `Successfully updated table "${table.slug}" to "${table.name}"`,
208
- }, null, 2),
209
- },
210
- ],
211
- };
212
- }
213
- case 'add_column': {
214
- const params = AddColumnSchema.parse(args);
215
- const table = await client.addColumn(params.tableSlug, {
216
- name: params.name,
217
- slug: params.slug,
218
- type: params.type,
219
- isRequired: params.isRequired,
220
- defaultValue: params.defaultValue,
221
- });
222
- return {
223
- content: [
224
- {
225
- type: 'text',
226
- text: JSON.stringify({
227
- column: table.columns.find((c) => c.slug === params.slug),
228
- message: `Successfully added column "${params.name}" to table "${params.tableSlug}"`,
229
- }, null, 2),
230
- },
231
- ],
232
- };
233
- }
234
- case 'update_column': {
235
- const params = UpdateColumnSchema.parse(args);
236
- const table = await client.updateColumn(params.tableSlug, params.columnSlug, {
237
- name: params.name,
238
- isRequired: params.isRequired,
239
- defaultValue: params.defaultValue,
240
- });
241
- return {
242
- content: [
243
- {
244
- type: 'text',
245
- text: JSON.stringify({
246
- column: table.columns.find((c) => c.slug === params.columnSlug),
247
- message: `Successfully updated column "${params.columnSlug}" in table "${params.tableSlug}"`,
248
- }, null, 2),
249
- },
250
- ],
251
- };
252
- }
253
- default:
254
- throw new Error(`Unknown tool: ${name}`);
255
- }
256
- }
257
- catch (error) {
258
- const errorMessage = error instanceof Error ? error.message : String(error);
259
- return {
260
- content: [
261
- {
262
- type: 'text',
263
- text: JSON.stringify({
264
- error: errorMessage,
265
- tool: name,
266
- }, null, 2),
267
- },
268
- ],
269
- isError: true,
270
- };
271
- }
272
- });
273
- }
274
- //# sourceMappingURL=schema-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-tools.js","sourceRoot":"","sources":["../../src/tools/schema-tools.ts"],"names":[],"mappings":"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"}