@tejasanik/postgres-mcp-server 1.0.0 → 1.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 (63) hide show
  1. package/README.md +63 -10
  2. package/dist/__tests__/analysis-tools.test.d.ts +2 -0
  3. package/dist/__tests__/analysis-tools.test.d.ts.map +1 -0
  4. package/dist/__tests__/analysis-tools.test.js +294 -0
  5. package/dist/__tests__/analysis-tools.test.js.map +1 -0
  6. package/dist/__tests__/db-manager.test.d.ts +2 -0
  7. package/dist/__tests__/db-manager.test.d.ts.map +1 -0
  8. package/dist/__tests__/db-manager.test.js +243 -0
  9. package/dist/__tests__/db-manager.test.js.map +1 -0
  10. package/dist/__tests__/mcp-server.test.d.ts +13 -0
  11. package/dist/__tests__/mcp-server.test.d.ts.map +1 -0
  12. package/dist/__tests__/mcp-server.test.js +131 -0
  13. package/dist/__tests__/mcp-server.test.js.map +1 -0
  14. package/dist/__tests__/schema-tools.test.d.ts +2 -0
  15. package/dist/__tests__/schema-tools.test.d.ts.map +1 -0
  16. package/dist/__tests__/schema-tools.test.js +171 -0
  17. package/dist/__tests__/schema-tools.test.js.map +1 -0
  18. package/dist/__tests__/server-tools.test.d.ts +2 -0
  19. package/dist/__tests__/server-tools.test.d.ts.map +1 -0
  20. package/dist/__tests__/server-tools.test.js +94 -0
  21. package/dist/__tests__/server-tools.test.js.map +1 -0
  22. package/dist/__tests__/sql-tools.test.d.ts +2 -0
  23. package/dist/__tests__/sql-tools.test.d.ts.map +1 -0
  24. package/dist/__tests__/sql-tools.test.js +235 -0
  25. package/dist/__tests__/sql-tools.test.js.map +1 -0
  26. package/dist/__tests__/validation.test.d.ts +2 -0
  27. package/dist/__tests__/validation.test.d.ts.map +1 -0
  28. package/dist/__tests__/validation.test.js +203 -0
  29. package/dist/__tests__/validation.test.js.map +1 -0
  30. package/dist/db-manager.d.ts +17 -4
  31. package/dist/db-manager.d.ts.map +1 -1
  32. package/dist/db-manager.js +143 -26
  33. package/dist/db-manager.js.map +1 -1
  34. package/dist/index.js +62 -26
  35. package/dist/index.js.map +1 -1
  36. package/dist/tools/analysis-tools.d.ts +1 -0
  37. package/dist/tools/analysis-tools.d.ts.map +1 -1
  38. package/dist/tools/analysis-tools.js +158 -81
  39. package/dist/tools/analysis-tools.js.map +1 -1
  40. package/dist/tools/index.js +4 -20
  41. package/dist/tools/index.js.map +1 -1
  42. package/dist/tools/schema-tools.d.ts.map +1 -1
  43. package/dist/tools/schema-tools.js +71 -40
  44. package/dist/tools/schema-tools.js.map +1 -1
  45. package/dist/tools/server-tools.d.ts +11 -1
  46. package/dist/tools/server-tools.d.ts.map +1 -1
  47. package/dist/tools/server-tools.js +23 -14
  48. package/dist/tools/server-tools.js.map +1 -1
  49. package/dist/tools/sql-tools.d.ts.map +1 -1
  50. package/dist/tools/sql-tools.js +88 -61
  51. package/dist/tools/sql-tools.js.map +1 -1
  52. package/dist/types.d.ts +13 -0
  53. package/dist/types.d.ts.map +1 -1
  54. package/dist/types.js +1 -2
  55. package/dist/utils/index.d.ts +2 -0
  56. package/dist/utils/index.d.ts.map +1 -0
  57. package/dist/utils/index.js +2 -0
  58. package/dist/utils/index.js.map +1 -0
  59. package/dist/utils/validation.d.ts +27 -0
  60. package/dist/utils/validation.d.ts.map +1 -0
  61. package/dist/utils/validation.js +133 -0
  62. package/dist/utils/validation.js.map +1 -0
  63. package/package.json +8 -2
@@ -1,11 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listSchemas = listSchemas;
4
- exports.listObjects = listObjects;
5
- exports.getObjectDetails = getObjectDetails;
6
- const db_manager_js_1 = require("../db-manager.js");
7
- async function listSchemas(args) {
8
- const dbManager = (0, db_manager_js_1.getDbManager)();
1
+ import { getDbManager } from '../db-manager.js';
2
+ import { validateIdentifier } from '../utils/validation.js';
3
+ export async function listSchemas(args) {
4
+ const dbManager = getDbManager();
9
5
  let query = `
10
6
  SELECT
11
7
  schema_name,
@@ -22,8 +18,25 @@ async function listSchemas(args) {
22
18
  const result = await dbManager.query(query);
23
19
  return result.rows;
24
20
  }
25
- async function listObjects(args) {
26
- const dbManager = (0, db_manager_js_1.getDbManager)();
21
+ export async function listObjects(args) {
22
+ // Validate required parameters
23
+ if (!args.schema) {
24
+ throw new Error('schema parameter is required');
25
+ }
26
+ // Validate schema name to prevent SQL injection
27
+ validateIdentifier(args.schema, 'schema');
28
+ // Validate filter if provided
29
+ if (args.filter) {
30
+ // Allow more characters in filter since it's used with ILIKE and parameterized
31
+ if (args.filter.length > 128) {
32
+ throw new Error('filter must be 128 characters or less');
33
+ }
34
+ // Only allow safe characters in filter
35
+ if (!/^[a-zA-Z0-9_% ]+$/.test(args.filter)) {
36
+ throw new Error('filter contains invalid characters');
37
+ }
38
+ }
39
+ const dbManager = getDbManager();
27
40
  const objectType = args.objectType || 'all';
28
41
  const objects = [];
29
42
  // List tables
@@ -47,14 +60,16 @@ async function listObjects(args) {
47
60
  if (objectType === 'all' || objectType === 'view') {
48
61
  const viewsQuery = `
49
62
  SELECT
50
- table_name as name,
63
+ v.table_name as name,
51
64
  'view' as type,
52
- table_schema as schema,
53
- '' as owner
54
- FROM information_schema.views
55
- WHERE table_schema = $1
56
- ${args.filter ? "AND table_name ILIKE '%' || $2 || '%'" : ''}
57
- ORDER BY table_name
65
+ v.table_schema as schema,
66
+ COALESCE(c.relowner::regrole::text, '') as owner
67
+ FROM information_schema.views v
68
+ LEFT JOIN pg_class c ON c.relname = v.table_name
69
+ LEFT JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = v.table_schema
70
+ WHERE v.table_schema = $1
71
+ ${args.filter ? "AND v.table_name ILIKE '%' || $2 || '%'" : ''}
72
+ ORDER BY v.table_name
58
73
  `;
59
74
  const params = args.filter ? [args.schema, args.filter] : [args.schema];
60
75
  const views = await dbManager.query(viewsQuery, params);
@@ -64,14 +79,16 @@ async function listObjects(args) {
64
79
  if (objectType === 'all' || objectType === 'sequence') {
65
80
  const sequencesQuery = `
66
81
  SELECT
67
- sequence_name as name,
82
+ s.sequence_name as name,
68
83
  'sequence' as type,
69
- sequence_schema as schema,
70
- '' as owner
71
- FROM information_schema.sequences
72
- WHERE sequence_schema = $1
73
- ${args.filter ? "AND sequence_name ILIKE '%' || $2 || '%'" : ''}
74
- ORDER BY sequence_name
84
+ s.sequence_schema as schema,
85
+ COALESCE(c.relowner::regrole::text, '') as owner
86
+ FROM information_schema.sequences s
87
+ LEFT JOIN pg_class c ON c.relname = s.sequence_name
88
+ LEFT JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = s.sequence_schema
89
+ WHERE s.sequence_schema = $1
90
+ ${args.filter ? "AND s.sequence_name ILIKE '%' || $2 || '%'" : ''}
91
+ ORDER BY s.sequence_name
75
92
  `;
76
93
  const params = args.filter ? [args.schema, args.filter] : [args.schema];
77
94
  const sequences = await dbManager.query(sequencesQuery, params);
@@ -84,7 +101,7 @@ async function listObjects(args) {
84
101
  extname as name,
85
102
  'extension' as type,
86
103
  n.nspname as schema,
87
- '' as owner
104
+ COALESCE(extowner::regrole::text, '') as owner
88
105
  FROM pg_extension e
89
106
  JOIN pg_namespace n ON e.extnamespace = n.oid
90
107
  WHERE n.nspname = $1
@@ -97,10 +114,20 @@ async function listObjects(args) {
97
114
  }
98
115
  return objects;
99
116
  }
100
- async function getObjectDetails(args) {
101
- const dbManager = (0, db_manager_js_1.getDbManager)();
117
+ export async function getObjectDetails(args) {
118
+ // Validate required parameters
119
+ if (!args.schema) {
120
+ throw new Error('schema parameter is required');
121
+ }
122
+ if (!args.objectName) {
123
+ throw new Error('objectName parameter is required');
124
+ }
125
+ // Validate identifiers to prevent SQL injection
126
+ validateIdentifier(args.schema, 'schema');
127
+ validateIdentifier(args.objectName, 'objectName');
128
+ const dbManager = getDbManager();
102
129
  const result = {};
103
- // Get columns
130
+ // Get columns - using parameterized query
104
131
  const columnsQuery = `
105
132
  SELECT
106
133
  column_name,
@@ -114,7 +141,7 @@ async function getObjectDetails(args) {
114
141
  `;
115
142
  const columns = await dbManager.query(columnsQuery, [args.schema, args.objectName]);
116
143
  result.columns = columns.rows;
117
- // Get constraints
144
+ // Get constraints - using parameterized query
118
145
  const constraintsQuery = `
119
146
  SELECT
120
147
  tc.constraint_name,
@@ -135,7 +162,7 @@ async function getObjectDetails(args) {
135
162
  `;
136
163
  const constraints = await dbManager.query(constraintsQuery, [args.schema, args.objectName]);
137
164
  result.constraints = constraints.rows;
138
- // Get indexes
165
+ // Get indexes - using parameterized query
139
166
  const indexesQuery = `
140
167
  SELECT
141
168
  i.relname as index_name,
@@ -151,31 +178,35 @@ async function getObjectDetails(args) {
151
178
  `;
152
179
  const indexes = await dbManager.query(indexesQuery, [args.schema, args.objectName]);
153
180
  result.indexes = indexes.rows;
154
- // Get table size and row count (approximate)
181
+ // Get table size and row count using safe approach
155
182
  try {
156
183
  const sizeQuery = `
157
184
  SELECT
158
- pg_size_pretty(pg_total_relation_size($1::regclass)) as size,
159
- (SELECT reltuples::bigint FROM pg_class WHERE oid = $1::regclass) as row_count
185
+ pg_size_pretty(pg_total_relation_size(c.oid)) as size,
186
+ c.reltuples::bigint as row_count
187
+ FROM pg_class c
188
+ JOIN pg_namespace n ON n.oid = c.relnamespace
189
+ WHERE n.nspname = $1 AND c.relname = $2
160
190
  `;
161
- const fullName = `"${args.schema}"."${args.objectName}"`;
162
- const sizeResult = await dbManager.query(sizeQuery, [fullName]);
191
+ const sizeResult = await dbManager.query(sizeQuery, [args.schema, args.objectName]);
163
192
  if (sizeResult.rows.length > 0) {
164
193
  result.size = sizeResult.rows[0].size;
165
194
  result.rowCount = sizeResult.rows[0].row_count;
166
195
  }
167
196
  }
168
197
  catch (error) {
169
- // Size query might fail for views
198
+ // Size query might fail for views or non-existent objects
170
199
  }
171
- // Get view definition if it's a view
200
+ // Get view definition if it's a view - using safe parameterized approach
172
201
  if (args.objectType === 'view') {
173
202
  try {
174
203
  const viewDefQuery = `
175
- SELECT pg_get_viewdef($1::regclass, true) as definition
204
+ SELECT pg_get_viewdef(c.oid, true) as definition
205
+ FROM pg_class c
206
+ JOIN pg_namespace n ON n.oid = c.relnamespace
207
+ WHERE n.nspname = $1 AND c.relname = $2 AND c.relkind = 'v'
176
208
  `;
177
- const fullName = `"${args.schema}"."${args.objectName}"`;
178
- const viewDef = await dbManager.query(viewDefQuery, [fullName]);
209
+ const viewDef = await dbManager.query(viewDefQuery, [args.schema, args.objectName]);
179
210
  if (viewDef.rows.length > 0) {
180
211
  result.definition = viewDef.rows[0].definition;
181
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema-tools.js","sourceRoot":"","sources":["../../src/tools/schema-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-tools.js","sourceRoot":"","sources":["../../src/tools/schema-tools.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
- import { DatabaseInfo } from '../types.js';
1
+ import { DatabaseInfo, ConnectionInfo } from '../types.js';
2
2
  interface ListServersResult {
3
3
  servers: {
4
4
  name: string;
5
5
  host: string;
6
6
  port: string;
7
7
  isConnected: boolean;
8
+ isDefault: boolean;
9
+ defaultDatabase?: string;
10
+ defaultSchema?: string;
8
11
  databases?: DatabaseInfo[];
9
12
  }[];
10
13
  currentServer: string | null;
11
14
  currentDatabase: string | null;
15
+ currentSchema: string | null;
12
16
  }
13
17
  export declare function listServersAndDbs(args: {
14
18
  filter?: string;
@@ -18,11 +22,17 @@ export declare function listServersAndDbs(args: {
18
22
  export declare function switchServerDb(args: {
19
23
  server: string;
20
24
  database?: string;
25
+ schema?: string;
21
26
  }): Promise<{
22
27
  success: boolean;
23
28
  message: string;
24
29
  currentServer: string;
25
30
  currentDatabase: string;
31
+ currentSchema: string;
26
32
  }>;
33
+ /**
34
+ * Gets the current connection details including server, database, schema, and access mode.
35
+ */
36
+ export declare function getCurrentConnection(): Promise<ConnectionInfo>;
27
37
  export {};
28
38
  //# sourceMappingURL=server-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-tools.d.ts","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,UAAU,iBAAiB;IACzB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;KAC5B,EAAE,CAAC;IACJ,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8D7B;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjG"}
1
+ {"version":3,"file":"server-tools.d.ts","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D,UAAU,iBAAiB;IACzB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;KAC5B,EAAE,CAAC;IACJ,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoE7B;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBxH;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAGpE"}
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listServersAndDbs = listServersAndDbs;
4
- exports.switchServerDb = switchServerDb;
5
- const db_manager_js_1 = require("../db-manager.js");
6
- async function listServersAndDbs(args) {
7
- const dbManager = (0, db_manager_js_1.getDbManager)();
1
+ import { getDbManager } from '../db-manager.js';
2
+ export async function listServersAndDbs(args) {
3
+ const dbManager = getDbManager();
8
4
  const serversConfig = dbManager.getServersConfig();
9
5
  const currentState = dbManager.getCurrentState();
10
6
  let serverNames = Object.keys(serversConfig);
@@ -15,6 +11,7 @@ async function listServersAndDbs(args) {
15
11
  serversConfig[name].host.toLowerCase().includes(filterLower));
16
12
  }
17
13
  const servers = [];
14
+ const defaultServerName = dbManager.getDefaultServerName();
18
15
  for (const name of serverNames) {
19
16
  const config = serversConfig[name];
20
17
  const isConnected = currentState.currentServer === name;
@@ -22,7 +19,10 @@ async function listServersAndDbs(args) {
22
19
  name,
23
20
  host: config.host,
24
21
  port: config.port || '5432',
25
- isConnected
22
+ isConnected,
23
+ isDefault: config.isDefault === true || name === defaultServerName,
24
+ defaultDatabase: config.defaultDatabase,
25
+ defaultSchema: config.defaultSchema
26
26
  };
27
27
  // Fetch databases only if requested and connected to this server
28
28
  if (args.fetchDatabases && isConnected) {
@@ -49,23 +49,32 @@ async function listServersAndDbs(args) {
49
49
  return {
50
50
  servers,
51
51
  currentServer: currentState.currentServer,
52
- currentDatabase: currentState.currentDatabase
52
+ currentDatabase: currentState.currentDatabase,
53
+ currentSchema: currentState.currentSchema
53
54
  };
54
55
  }
55
- async function switchServerDb(args) {
56
- const dbManager = (0, db_manager_js_1.getDbManager)();
56
+ export async function switchServerDb(args) {
57
+ const dbManager = getDbManager();
57
58
  try {
58
- await dbManager.switchServer(args.server, args.database);
59
+ await dbManager.switchServer(args.server, args.database, args.schema);
59
60
  const state = dbManager.getCurrentState();
60
61
  return {
61
62
  success: true,
62
- message: `Successfully connected to server '${args.server}'${args.database ? ` and database '${args.database}'` : ''}`,
63
+ message: `Successfully connected to server '${args.server}'${args.database ? `, database '${args.database}'` : ''}${args.schema ? `, schema '${args.schema}'` : ''}`,
63
64
  currentServer: state.currentServer,
64
- currentDatabase: state.currentDatabase
65
+ currentDatabase: state.currentDatabase,
66
+ currentSchema: state.currentSchema
65
67
  };
66
68
  }
67
69
  catch (error) {
68
70
  throw new Error(`Failed to switch: ${error}`);
69
71
  }
70
72
  }
73
+ /**
74
+ * Gets the current connection details including server, database, schema, and access mode.
75
+ */
76
+ export async function getCurrentConnection() {
77
+ const dbManager = getDbManager();
78
+ return dbManager.getConnectionInfo();
79
+ }
71
80
  //# sourceMappingURL=server-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-tools.js","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-tools.js","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sql-tools.d.ts","sourceRoot":"","sources":["../../src/tools/sql-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS1D,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0C5B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC1C,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ,GAAG,OAAO,CAAC,SAAS,CAAC,CA2DrB"}
1
+ {"version":3,"file":"sql-tools.d.ts","sourceRoot":"","sources":["../../src/tools/sql-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW1D,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmD5B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC1C,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ,GAAG,OAAO,CAAC,SAAS,CAAC,CA8HrB"}
@@ -1,68 +1,40 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.executeSql = executeSql;
37
- exports.explainQuery = explainQuery;
38
- const db_manager_js_1 = require("../db-manager.js");
39
- const fs = __importStar(require("fs"));
40
- const path = __importStar(require("path"));
41
- const os = __importStar(require("os"));
42
- const uuid_1 = require("uuid");
1
+ import { getDbManager } from '../db-manager.js';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ import { validateIdentifier, validateIndexType, isReadOnlySql, validatePositiveInteger } from '../utils/validation.js';
43
7
  const MAX_OUTPUT_CHARS = 50000; // Maximum characters before writing to file
44
8
  const MAX_ROWS_IN_RESPONSE = 1000; // Maximum rows to include in direct response
45
- async function executeSql(args) {
46
- const dbManager = (0, db_manager_js_1.getDbManager)();
47
- const maxRows = args.maxRows || MAX_ROWS_IN_RESPONSE;
9
+ const MAX_SQL_LENGTH = 100000; // Maximum SQL query length
10
+ export async function executeSql(args) {
11
+ // Validate SQL input
12
+ if (!args.sql || typeof args.sql !== 'string') {
13
+ throw new Error('sql parameter is required and must be a string');
14
+ }
15
+ if (args.sql.length > MAX_SQL_LENGTH) {
16
+ throw new Error(`SQL query exceeds maximum length of ${MAX_SQL_LENGTH} characters`);
17
+ }
18
+ const dbManager = getDbManager();
19
+ const maxRows = validatePositiveInteger(args.maxRows, 'maxRows', 1, 100000) || MAX_ROWS_IN_RESPONSE;
48
20
  const result = await dbManager.query(args.sql);
49
21
  const fields = result.fields?.map(f => f.name) || [];
50
22
  const totalRows = result.rows.length;
51
- // Serialize the result to check size
52
- const serialized = JSON.stringify(result.rows, null, 2);
53
- if (serialized.length > MAX_OUTPUT_CHARS || totalRows > maxRows) {
23
+ // Check if output is too large - estimate size first without full serialization
24
+ const estimatedSize = totalRows * (fields.length * 50); // rough estimate
25
+ if (estimatedSize > MAX_OUTPUT_CHARS || totalRows > maxRows) {
54
26
  // Write to temp file
55
27
  const tempDir = os.tmpdir();
56
- const fileName = `postgres-mcp-output-${(0, uuid_1.v4)()}.json`;
28
+ const fileName = `postgres-mcp-output-${uuidv4()}.json`;
57
29
  const filePath = path.join(tempDir, fileName);
58
30
  const outputData = {
59
31
  totalRows,
60
32
  fields,
61
33
  rows: result.rows,
62
34
  generatedAt: new Date().toISOString(),
63
- query: args.sql
35
+ // Don't include the query in output file for security
64
36
  };
65
- fs.writeFileSync(filePath, JSON.stringify(outputData, null, 2));
37
+ fs.writeFileSync(filePath, JSON.stringify(outputData, null, 2), { mode: 0o600 });
66
38
  return {
67
39
  rows: [],
68
40
  rowCount: totalRows,
@@ -77,12 +49,30 @@ async function executeSql(args) {
77
49
  fields
78
50
  };
79
51
  }
80
- async function explainQuery(args) {
81
- const dbManager = (0, db_manager_js_1.getDbManager)();
52
+ export async function explainQuery(args) {
53
+ // Validate SQL input
54
+ if (!args.sql || typeof args.sql !== 'string') {
55
+ throw new Error('sql parameter is required and must be a string');
56
+ }
57
+ if (args.sql.length > MAX_SQL_LENGTH) {
58
+ throw new Error(`SQL query exceeds maximum length of ${MAX_SQL_LENGTH} characters`);
59
+ }
60
+ // SECURITY: Block EXPLAIN ANALYZE on write queries to prevent bypassing read-only mode
61
+ if (args.analyze) {
62
+ const { isReadOnly, reason } = isReadOnlySql(args.sql);
63
+ if (!isReadOnly) {
64
+ throw new Error(`EXPLAIN ANALYZE is not allowed for write queries. ${reason}`);
65
+ }
66
+ }
67
+ const dbManager = getDbManager();
82
68
  const client = await dbManager.getClient();
83
69
  try {
84
- // If hypothetical indexes are specified, create them as hypothetical
70
+ // If hypothetical indexes are specified, validate and create them
85
71
  if (args.hypotheticalIndexes && args.hypotheticalIndexes.length > 0) {
72
+ // Limit number of hypothetical indexes
73
+ if (args.hypotheticalIndexes.length > 10) {
74
+ throw new Error('Maximum 10 hypothetical indexes allowed');
75
+ }
86
76
  // Check if hypopg extension is available
87
77
  const hypopgCheck = await client.query(`
88
78
  SELECT EXISTS (
@@ -90,16 +80,51 @@ async function explainQuery(args) {
90
80
  ) as has_hypopg
91
81
  `);
92
82
  if (hypopgCheck.rows[0].has_hypopg) {
93
- // Create hypothetical indexes
83
+ // Create hypothetical indexes with validated inputs
94
84
  for (const idx of args.hypotheticalIndexes) {
95
- const indexType = idx.indexType || 'btree';
96
- const columns = idx.columns.join(', ');
97
- await client.query(`SELECT hypopg_create_index('CREATE INDEX ON ${idx.table} USING ${indexType} (${columns})')`);
85
+ // Validate table name
86
+ if (!idx.table) {
87
+ throw new Error('hypotheticalIndexes: table is required');
88
+ }
89
+ // Handle schema.table format
90
+ let schemaName = 'public';
91
+ let tableName = idx.table;
92
+ if (idx.table.includes('.')) {
93
+ const parts = idx.table.split('.');
94
+ if (parts.length !== 2) {
95
+ throw new Error(`hypotheticalIndexes: invalid table format '${idx.table}'`);
96
+ }
97
+ schemaName = parts[0];
98
+ tableName = parts[1];
99
+ validateIdentifier(schemaName, 'schema');
100
+ }
101
+ validateIdentifier(tableName, 'table');
102
+ // Validate columns
103
+ if (!idx.columns || !Array.isArray(idx.columns) || idx.columns.length === 0) {
104
+ throw new Error('hypotheticalIndexes: columns array is required and must not be empty');
105
+ }
106
+ if (idx.columns.length > 32) {
107
+ throw new Error('hypotheticalIndexes: maximum 32 columns per index');
108
+ }
109
+ for (const col of idx.columns) {
110
+ validateIdentifier(col, 'column');
111
+ }
112
+ // Validate index type
113
+ const indexType = validateIndexType(idx.indexType || 'btree');
114
+ // Build safe index creation string
115
+ const safeTableName = schemaName !== 'public'
116
+ ? `"${schemaName}"."${tableName}"`
117
+ : `"${tableName}"`;
118
+ const safeColumns = idx.columns.map(c => `"${c}"`).join(', ');
119
+ // Use parameterized approach via hypopg
120
+ const indexDef = `CREATE INDEX ON ${safeTableName} USING ${indexType} (${safeColumns})`;
121
+ await client.query('SELECT hypopg_create_index($1)', [indexDef]);
98
122
  }
99
123
  }
100
124
  }
101
125
  // Build EXPLAIN query
102
- const format = args.format || 'json';
126
+ const validFormats = ['text', 'json', 'yaml', 'xml'];
127
+ const format = validFormats.includes(args.format || '') ? args.format : 'json';
103
128
  const options = [`FORMAT ${format.toUpperCase()}`];
104
129
  if (args.analyze) {
105
130
  options.push('ANALYZE');
@@ -107,8 +132,10 @@ async function explainQuery(args) {
107
132
  if (args.buffers) {
108
133
  options.push('BUFFERS');
109
134
  }
110
- const explainQuery = `EXPLAIN (${options.join(', ')}) ${args.sql}`;
111
- const result = await client.query(explainQuery);
135
+ // Use the validated SQL - it will be checked by the db-manager's read-only check
136
+ // EXPLAIN itself is read-only, EXPLAIN ANALYZE executes but we validated above
137
+ const explainSql = `EXPLAIN (${options.join(', ')}) ${args.sql}`;
138
+ const result = await client.query(explainSql);
112
139
  // Clean up hypothetical indexes if created
113
140
  if (args.hypotheticalIndexes && args.hypotheticalIndexes.length > 0) {
114
141
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"sql-tools.js","sourceRoot":"","sources":["../../src/tools/sql-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-tools.js","sourceRoot":"","sources":["../../src/tools/sql-tools.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -3,6 +3,9 @@ export interface ServerConfig {
3
3
  port: string;
4
4
  username: string;
5
5
  password: string;
6
+ defaultDatabase?: string;
7
+ defaultSchema?: string;
8
+ isDefault?: boolean;
6
9
  }
7
10
  export interface ServersConfig {
8
11
  [serverName: string]: ServerConfig;
@@ -10,6 +13,16 @@ export interface ServersConfig {
10
13
  export interface ConnectionState {
11
14
  currentServer: string | null;
12
15
  currentDatabase: string | null;
16
+ currentSchema: string | null;
17
+ }
18
+ export interface ConnectionInfo {
19
+ isConnected: boolean;
20
+ server: string | null;
21
+ database: string | null;
22
+ schema: string | null;
23
+ host: string | null;
24
+ port: string | null;
25
+ accessMode: 'full' | 'readonly';
13
26
  }
14
27
  export interface DatabaseInfo {
15
28
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
@@ -0,0 +1,2 @@
1
+ export * from './validation.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './validation.js';
2
+ //# sourceMappingURL=index.js.map