@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,18 +1,23 @@
1
1
  import { PoolClient, QueryResult, QueryResultRow } from 'pg';
2
- import { ServerConfig, ServersConfig, ConnectionState, DatabaseInfo } from './types.js';
2
+ import { ServerConfig, ServersConfig, ConnectionState, ConnectionInfo, DatabaseInfo } from './types.js';
3
3
  export declare class DatabaseManager {
4
4
  private serversConfig;
5
5
  private connectionState;
6
6
  private currentPool;
7
7
  private readOnlyMode;
8
- constructor(readOnlyMode?: boolean);
8
+ private queryTimeoutMs;
9
+ constructor(readOnlyMode?: boolean, queryTimeoutMs?: number);
9
10
  private loadServersConfig;
10
11
  getServersConfig(): ServersConfig;
11
12
  getServerNames(): string[];
12
13
  getServerConfig(serverName: string): ServerConfig | null;
13
14
  getCurrentState(): ConnectionState;
14
15
  isConnected(): boolean;
15
- switchServer(serverName: string, database?: string): Promise<void>;
16
+ getDefaultServerName(): string | null;
17
+ switchServer(serverName: string, database?: string, schema?: string): Promise<void>;
18
+ setCurrentSchema(schema: string): void;
19
+ getConnectionInfo(): ConnectionInfo;
20
+ connectToDefault(): Promise<boolean>;
16
21
  switchDatabase(database: string): Promise<void>;
17
22
  listDatabases(): Promise<DatabaseInfo[]>;
18
23
  query<T extends QueryResultRow = any>(sql: string, params?: any[]): Promise<QueryResult<T>>;
@@ -20,6 +25,14 @@ export declare class DatabaseManager {
20
25
  close(): Promise<void>;
21
26
  isReadOnly(): boolean;
22
27
  setReadOnlyMode(readOnly: boolean): void;
28
+ setQueryTimeout(timeoutMs: number): void;
23
29
  }
24
- export declare function getDbManager(readOnlyMode?: boolean): DatabaseManager;
30
+ /**
31
+ * Gets the singleton DatabaseManager instance.
32
+ * The access mode is determined by the POSTGRES_ACCESS_MODE environment variable:
33
+ * - 'readonly', 'read-only', 'ro': Read-only mode (prevents write operations)
34
+ * - 'full' (default): Full access mode (allows all operations)
35
+ */
36
+ export declare function getDbManager(): DatabaseManager;
37
+ export declare function resetDbManager(): void;
25
38
  //# sourceMappingURL=db-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-manager.d.ts","sourceRoot":"","sources":["../src/db-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAKpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAU;gBAElB,YAAY,GAAE,OAAc;IASxC,OAAO,CAAC,iBAAiB;IAelB,gBAAgB,IAAI,aAAa;IAIjC,cAAc,IAAI,MAAM,EAAE;IAI1B,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIxD,eAAe,IAAI,eAAe;IAIlC,WAAW,IAAI,OAAO;IAIhB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqClE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAcxC,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAoB3F,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAOhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,UAAU,IAAI,OAAO;IAIrB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;CAGhD;AAKD,wBAAgB,YAAY,CAAC,YAAY,GAAE,OAAc,GAAG,eAAe,CAK1E"}
1
+ {"version":3,"file":"db-manager.d.ts","sourceRoot":"","sources":["../src/db-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AAsBpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,cAAc,CAAS;gBAEnB,YAAY,GAAE,OAAc,EAAE,cAAc,GAAE,MAAiC;IAW3F,OAAO,CAAC,iBAAiB;IAgClB,gBAAgB,IAAI,aAAa;IAKjC,cAAc,IAAI,MAAM,EAAE;IAI1B,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAOxD,eAAe,IAAI,eAAe;IAIlC,WAAW,IAAI,OAAO;IAItB,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAW/B,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDzF,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOtC,iBAAiB,IAAI,cAAc;IAgB7B,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAepC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAcxC,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA4B3F,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAOhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,UAAU,IAAI,OAAO;IAIrB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIxC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGhD;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,eAAe,CAO9C;AAED,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
@@ -1,22 +1,37 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatabaseManager = void 0;
4
- exports.getDbManager = getDbManager;
5
- const pg_1 = require("pg");
1
+ import { Pool } from 'pg';
2
+ import { isReadOnlySql } from './utils/validation.js';
6
3
  const DEFAULT_PORT = '5432';
7
4
  const DEFAULT_DATABASE = 'postgres';
8
- class DatabaseManager {
5
+ const DEFAULT_SCHEMA = 'public';
6
+ const DEFAULT_QUERY_TIMEOUT_MS = 30000; // 30 seconds
7
+ const MAX_QUERY_TIMEOUT_MS = 300000; // 5 minutes
8
+ /**
9
+ * Determines the access mode from environment variable.
10
+ * POSTGRES_ACCESS_MODE can be 'readonly' or 'full' (default).
11
+ */
12
+ function getAccessModeFromEnv() {
13
+ const mode = process.env.POSTGRES_ACCESS_MODE?.toLowerCase().trim();
14
+ if (mode === 'readonly' || mode === 'read-only' || mode === 'ro') {
15
+ return true; // read-only mode
16
+ }
17
+ // Default is 'full' access (read-only = false)
18
+ return false;
19
+ }
20
+ export class DatabaseManager {
9
21
  serversConfig;
10
22
  connectionState;
11
23
  currentPool = null;
12
24
  readOnlyMode;
13
- constructor(readOnlyMode = true) {
25
+ queryTimeoutMs;
26
+ constructor(readOnlyMode = true, queryTimeoutMs = DEFAULT_QUERY_TIMEOUT_MS) {
14
27
  this.serversConfig = this.loadServersConfig();
15
28
  this.connectionState = {
16
29
  currentServer: null,
17
- currentDatabase: null
30
+ currentDatabase: null,
31
+ currentSchema: null
18
32
  };
19
33
  this.readOnlyMode = readOnlyMode;
34
+ this.queryTimeoutMs = Math.min(queryTimeoutMs, MAX_QUERY_TIMEOUT_MS);
20
35
  }
21
36
  loadServersConfig() {
22
37
  const configEnv = process.env.POSTGRES_SERVERS;
@@ -25,7 +40,21 @@ class DatabaseManager {
25
40
  return {};
26
41
  }
27
42
  try {
28
- return JSON.parse(configEnv);
43
+ const parsed = JSON.parse(configEnv);
44
+ // Validate the structure
45
+ if (typeof parsed !== 'object' || parsed === null) {
46
+ throw new Error('POSTGRES_SERVERS must be a JSON object');
47
+ }
48
+ for (const [name, config] of Object.entries(parsed)) {
49
+ if (!config || typeof config !== 'object') {
50
+ throw new Error(`Server '${name}' configuration is invalid`);
51
+ }
52
+ const serverConfig = config;
53
+ if (!serverConfig.host || typeof serverConfig.host !== 'string') {
54
+ throw new Error(`Server '${name}' must have a valid 'host' string`);
55
+ }
56
+ }
57
+ return parsed;
29
58
  }
30
59
  catch (error) {
31
60
  console.error('Error parsing POSTGRES_SERVERS:', error);
@@ -33,13 +62,18 @@ class DatabaseManager {
33
62
  }
34
63
  }
35
64
  getServersConfig() {
36
- return this.serversConfig;
65
+ // Return a copy to prevent mutation
66
+ return JSON.parse(JSON.stringify(this.serversConfig));
37
67
  }
38
68
  getServerNames() {
39
69
  return Object.keys(this.serversConfig);
40
70
  }
41
71
  getServerConfig(serverName) {
42
- return this.serversConfig[serverName] || null;
72
+ const config = this.serversConfig[serverName];
73
+ if (!config)
74
+ return null;
75
+ // Return a copy to prevent mutation
76
+ return { ...config };
43
77
  }
44
78
  getCurrentState() {
45
79
  return { ...this.connectionState };
@@ -47,7 +81,17 @@ class DatabaseManager {
47
81
  isConnected() {
48
82
  return this.currentPool !== null;
49
83
  }
50
- async switchServer(serverName, database) {
84
+ getDefaultServerName() {
85
+ for (const [name, config] of Object.entries(this.serversConfig)) {
86
+ if (config.isDefault) {
87
+ return name;
88
+ }
89
+ }
90
+ // If no default is set, return the first server
91
+ const names = this.getServerNames();
92
+ return names.length > 0 ? names[0] : null;
93
+ }
94
+ async switchServer(serverName, database, schema) {
51
95
  const serverConfig = this.getServerConfig(serverName);
52
96
  if (!serverConfig) {
53
97
  throw new Error(`Server '${serverName}' not found in configuration`);
@@ -55,9 +99,15 @@ class DatabaseManager {
55
99
  // Close existing pool if any
56
100
  if (this.currentPool) {
57
101
  await this.currentPool.end();
102
+ this.currentPool = null;
58
103
  }
59
- const dbName = database || DEFAULT_DATABASE;
60
- this.currentPool = new pg_1.Pool({
104
+ // Use provided database, server's default, or system default
105
+ const dbName = database || serverConfig.defaultDatabase || DEFAULT_DATABASE;
106
+ // Validate database name
107
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(dbName)) {
108
+ throw new Error('Invalid database name. Only alphanumeric characters and underscores are allowed.');
109
+ }
110
+ this.currentPool = new Pool({
61
111
  host: serverConfig.host,
62
112
  port: parseInt(serverConfig.port || DEFAULT_PORT, 10),
63
113
  user: serverConfig.username,
@@ -65,7 +115,12 @@ class DatabaseManager {
65
115
  database: dbName,
66
116
  max: 10,
67
117
  idleTimeoutMillis: 30000,
68
- connectionTimeoutMillis: 10000
118
+ connectionTimeoutMillis: 10000,
119
+ statement_timeout: this.queryTimeoutMs
120
+ });
121
+ // Handle pool errors
122
+ this.currentPool.on('error', (err) => {
123
+ console.error('Unexpected pool error:', err);
69
124
  });
70
125
  // Test connection
71
126
  try {
@@ -73,11 +128,47 @@ class DatabaseManager {
73
128
  client.release();
74
129
  this.connectionState.currentServer = serverName;
75
130
  this.connectionState.currentDatabase = dbName;
131
+ // Use provided schema, server's default, or system default
132
+ this.connectionState.currentSchema = schema || serverConfig.defaultSchema || DEFAULT_SCHEMA;
76
133
  }
77
134
  catch (error) {
78
135
  await this.currentPool.end();
79
136
  this.currentPool = null;
80
- throw new Error(`Failed to connect to server '${serverName}': ${error}`);
137
+ throw new Error(`Failed to connect to server '${serverName}': ${error instanceof Error ? error.message : String(error)}`);
138
+ }
139
+ }
140
+ setCurrentSchema(schema) {
141
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(schema)) {
142
+ throw new Error('Invalid schema name. Only alphanumeric characters and underscores are allowed.');
143
+ }
144
+ this.connectionState.currentSchema = schema;
145
+ }
146
+ getConnectionInfo() {
147
+ const serverConfig = this.connectionState.currentServer
148
+ ? this.getServerConfig(this.connectionState.currentServer)
149
+ : null;
150
+ return {
151
+ isConnected: this.isConnected(),
152
+ server: this.connectionState.currentServer,
153
+ database: this.connectionState.currentDatabase,
154
+ schema: this.connectionState.currentSchema,
155
+ host: serverConfig?.host || null,
156
+ port: serverConfig?.port || null,
157
+ accessMode: this.readOnlyMode ? 'readonly' : 'full'
158
+ };
159
+ }
160
+ async connectToDefault() {
161
+ const defaultServer = this.getDefaultServerName();
162
+ if (!defaultServer) {
163
+ return false;
164
+ }
165
+ try {
166
+ await this.switchServer(defaultServer);
167
+ return true;
168
+ }
169
+ catch (error) {
170
+ console.error(`Failed to connect to default server: ${error}`);
171
+ return false;
81
172
  }
82
173
  }
83
174
  async switchDatabase(database) {
@@ -103,17 +194,26 @@ class DatabaseManager {
103
194
  if (!this.currentPool) {
104
195
  throw new Error('No database connection. Please switch to a server and database first.');
105
196
  }
106
- // Check for read-only mode violations
197
+ if (!sql || typeof sql !== 'string') {
198
+ throw new Error('SQL query is required and must be a string');
199
+ }
200
+ // Check for read-only mode violations using improved validation
107
201
  if (this.readOnlyMode) {
108
- const upperSql = sql.trim().toUpperCase();
109
- const writeOperations = ['INSERT', 'UPDATE', 'DELETE', 'DROP', 'CREATE', 'ALTER', 'TRUNCATE', 'GRANT', 'REVOKE'];
110
- for (const op of writeOperations) {
111
- if (upperSql.startsWith(op)) {
112
- throw new Error(`Write operation '${op}' is not allowed in read-only mode`);
113
- }
202
+ const { isReadOnly, reason } = isReadOnlySql(sql);
203
+ if (!isReadOnly) {
204
+ throw new Error(`Read-only mode violation: ${reason}`);
114
205
  }
115
206
  }
116
- return this.currentPool.query(sql, params);
207
+ try {
208
+ return await this.currentPool.query(sql, params);
209
+ }
210
+ catch (error) {
211
+ // Provide more context in error messages
212
+ if (error instanceof Error) {
213
+ throw new Error(`Query failed: ${error.message}`);
214
+ }
215
+ throw error;
216
+ }
117
217
  }
118
218
  async getClient() {
119
219
  if (!this.currentPool) {
@@ -127,6 +227,7 @@ class DatabaseManager {
127
227
  this.currentPool = null;
128
228
  this.connectionState.currentServer = null;
129
229
  this.connectionState.currentDatabase = null;
230
+ this.connectionState.currentSchema = null;
130
231
  }
131
232
  }
132
233
  isReadOnly() {
@@ -135,14 +236,30 @@ class DatabaseManager {
135
236
  setReadOnlyMode(readOnly) {
136
237
  this.readOnlyMode = readOnly;
137
238
  }
239
+ setQueryTimeout(timeoutMs) {
240
+ this.queryTimeoutMs = Math.min(Math.max(1000, timeoutMs), MAX_QUERY_TIMEOUT_MS);
241
+ }
138
242
  }
139
- exports.DatabaseManager = DatabaseManager;
140
243
  // Singleton instance
141
244
  let dbManager = null;
142
- function getDbManager(readOnlyMode = true) {
245
+ /**
246
+ * Gets the singleton DatabaseManager instance.
247
+ * The access mode is determined by the POSTGRES_ACCESS_MODE environment variable:
248
+ * - 'readonly', 'read-only', 'ro': Read-only mode (prevents write operations)
249
+ * - 'full' (default): Full access mode (allows all operations)
250
+ */
251
+ export function getDbManager() {
143
252
  if (!dbManager) {
253
+ const readOnlyMode = getAccessModeFromEnv();
144
254
  dbManager = new DatabaseManager(readOnlyMode);
255
+ console.error(`PostgreSQL MCP: Access mode = ${readOnlyMode ? 'readonly' : 'full'}`);
145
256
  }
146
257
  return dbManager;
147
258
  }
259
+ export function resetDbManager() {
260
+ if (dbManager) {
261
+ dbManager.close().catch(console.error);
262
+ dbManager = null;
263
+ }
264
+ }
148
265
  //# sourceMappingURL=db-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-manager.js","sourceRoot":"","sources":["../src/db-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-manager.js","sourceRoot":"","sources":["../src/db-manager.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,10 +1,9 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
- const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
- const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
7
- const index_js_2 = require("./tools/index.js");
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
+ import { resetDbManager } from './db-manager.js';
6
+ import { listServersAndDbs, switchServerDb, getCurrentConnection, listSchemas, listObjects, getObjectDetails, executeSql, explainQuery, getTopQueries, analyzeWorkloadIndexes, analyzeQueryIndexes, analyzeDbHealth } from './tools/index.js';
8
7
  // Tool definitions
9
8
  const tools = [
10
9
  {
@@ -32,7 +31,7 @@ const tools = [
32
31
  },
33
32
  {
34
33
  name: 'switch_server_db',
35
- description: 'Switch to a different PostgreSQL server and optionally a specific database. Must be called before using other database tools.',
34
+ description: 'Switch to a different PostgreSQL server and optionally a specific database and schema. Must be called before using other database tools. Uses server defaults if not specified.',
36
35
  inputSchema: {
37
36
  type: 'object',
38
37
  properties: {
@@ -42,12 +41,24 @@ const tools = [
42
41
  },
43
42
  database: {
44
43
  type: 'string',
45
- description: 'Name of the database to connect to (defaults to "postgres")'
44
+ description: 'Name of the database to connect to (uses server default or "postgres")'
45
+ },
46
+ schema: {
47
+ type: 'string',
48
+ description: 'Name of the default schema (uses server default or "public")'
46
49
  }
47
50
  },
48
51
  required: ['server']
49
52
  }
50
53
  },
54
+ {
55
+ name: 'get_current_connection',
56
+ description: 'Returns details about the current database connection including server, database, schema, host, port, and access mode (readonly/full).',
57
+ inputSchema: {
58
+ type: 'object',
59
+ properties: {}
60
+ }
61
+ },
51
62
  {
52
63
  name: 'list_schemas',
53
64
  description: 'Lists all database schemas available in the current PostgreSQL database.',
@@ -140,7 +151,7 @@ const tools = [
140
151
  },
141
152
  analyze: {
142
153
  type: 'boolean',
143
- description: 'Actually execute the query to get real timing (default: false)',
154
+ description: 'Actually execute the query to get real timing (default: false). Only allowed for SELECT queries.',
144
155
  default: false
145
156
  },
146
157
  buffers: {
@@ -190,7 +201,7 @@ const tools = [
190
201
  properties: {
191
202
  limit: {
192
203
  type: 'number',
193
- description: 'Number of queries to return',
204
+ description: 'Number of queries to return (1-100)',
194
205
  default: 10
195
206
  },
196
207
  orderBy: {
@@ -215,7 +226,7 @@ const tools = [
215
226
  properties: {
216
227
  topQueriesCount: {
217
228
  type: 'number',
218
- description: 'Number of top queries to analyze',
229
+ description: 'Number of top queries to analyze (1-50)',
219
230
  default: 20
220
231
  },
221
232
  includeHypothetical: {
@@ -252,7 +263,7 @@ const tools = [
252
263
  }
253
264
  ];
254
265
  // Create MCP server
255
- const server = new index_js_1.Server({
266
+ const server = new Server({
256
267
  name: 'postgres-mcp-server',
257
268
  version: '1.0.0',
258
269
  }, {
@@ -261,32 +272,35 @@ const server = new index_js_1.Server({
261
272
  },
262
273
  });
263
274
  // Handle list_tools request
264
- server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
275
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
265
276
  return { tools };
266
277
  });
267
278
  // Handle tool calls
268
- server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
279
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
269
280
  const { name, arguments: args } = request.params;
270
281
  try {
271
282
  let result;
272
283
  switch (name) {
273
284
  case 'list_servers_and_dbs':
274
- result = await (0, index_js_2.listServersAndDbs)(args);
285
+ result = await listServersAndDbs(args);
275
286
  break;
276
287
  case 'switch_server_db':
277
- result = await (0, index_js_2.switchServerDb)(args);
288
+ result = await switchServerDb(args);
289
+ break;
290
+ case 'get_current_connection':
291
+ result = await getCurrentConnection();
278
292
  break;
279
293
  case 'list_schemas':
280
- result = await (0, index_js_2.listSchemas)(args);
294
+ result = await listSchemas(args);
281
295
  break;
282
296
  case 'list_objects':
283
- result = await (0, index_js_2.listObjects)(args);
297
+ result = await listObjects(args);
284
298
  break;
285
299
  case 'get_object_details':
286
- result = await (0, index_js_2.getObjectDetails)(args);
300
+ result = await getObjectDetails(args);
287
301
  break;
288
302
  case 'execute_sql':
289
- result = await (0, index_js_2.executeSql)(args);
303
+ result = await executeSql(args);
290
304
  // Special handling for large output
291
305
  if (result.outputFile) {
292
306
  return {
@@ -306,19 +320,19 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
306
320
  }
307
321
  break;
308
322
  case 'explain_query':
309
- result = await (0, index_js_2.explainQuery)(args);
323
+ result = await explainQuery(args);
310
324
  break;
311
325
  case 'get_top_queries':
312
- result = await (0, index_js_2.getTopQueries)(args);
326
+ result = await getTopQueries(args);
313
327
  break;
314
328
  case 'analyze_workload_indexes':
315
- result = await (0, index_js_2.analyzeWorkloadIndexes)(args);
329
+ result = await analyzeWorkloadIndexes(args);
316
330
  break;
317
331
  case 'analyze_query_indexes':
318
- result = await (0, index_js_2.analyzeQueryIndexes)(args);
332
+ result = await analyzeQueryIndexes(args);
319
333
  break;
320
334
  case 'analyze_db_health':
321
- result = await (0, index_js_2.analyzeDbHealth)();
335
+ result = await analyzeDbHealth();
322
336
  break;
323
337
  default:
324
338
  throw new Error(`Unknown tool: ${name}`);
@@ -345,9 +359,31 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
345
359
  };
346
360
  }
347
361
  });
362
+ // Graceful shutdown handling
363
+ async function shutdown() {
364
+ console.error('Shutting down PostgreSQL MCP Server...');
365
+ try {
366
+ resetDbManager();
367
+ }
368
+ catch (error) {
369
+ console.error('Error during shutdown:', error);
370
+ }
371
+ process.exit(0);
372
+ }
373
+ process.on('SIGINT', shutdown);
374
+ process.on('SIGTERM', shutdown);
375
+ process.on('SIGHUP', shutdown);
376
+ // Handle uncaught errors
377
+ process.on('uncaughtException', (error) => {
378
+ console.error('Uncaught exception:', error);
379
+ shutdown();
380
+ });
381
+ process.on('unhandledRejection', (reason, promise) => {
382
+ console.error('Unhandled rejection at:', promise, 'reason:', reason);
383
+ });
348
384
  // Start server
349
385
  async function main() {
350
- const transport = new stdio_js_1.StdioServerTransport();
386
+ const transport = new StdioServerTransport();
351
387
  await server.connect(transport);
352
388
  console.error('PostgreSQL MCP Server started');
353
389
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare function analyzeQueryIndexes(args: {
17
17
  queryAnalysis: Array<{
18
18
  query: string;
19
19
  recommendations: IndexRecommendation[];
20
+ error?: string;
20
21
  }>;
21
22
  summary: IndexRecommendation[];
22
23
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"analysis-tools.d.ts","sourceRoot":"","sources":["../../src/tools/analysis-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhF,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAqDvB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,mBAAmB,EAAE,CAAC;CACxC,CAAC,CAsBD;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,KAAK,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,mBAAmB,EAAE,CAAC;KACxC,CAAC,CAAC;IACH,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC,CAkBD;AAyGD,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA+QpE"}
1
+ {"version":3,"file":"analysis-tools.d.ts","sourceRoot":"","sources":["../../src/tools/analysis-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKhF,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAoEvB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,mBAAmB,EAAE,CAAC;CACxC,CAAC,CA6BD;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,KAAK,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,mBAAmB,EAAE,CAAC;QACvC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC,CA8CD;AAyID,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4RpE"}