@tejasanik/postgres-mcp-server 1.7.1 → 2.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.
- package/README.md +427 -9
- package/dist/__tests__/db-manager.test.js +44 -0
- package/dist/__tests__/db-manager.test.js.map +1 -1
- package/dist/__tests__/sql-tools.test.js +1459 -0
- package/dist/__tests__/sql-tools.test.js.map +1 -1
- package/dist/db-manager.d.ts +31 -1
- package/dist/db-manager.d.ts.map +1 -1
- package/dist/db-manager.js +111 -2
- package/dist/db-manager.js.map +1 -1
- package/dist/index.js +216 -11
- package/dist/index.js.map +1 -1
- package/dist/tools/server-tools.d.ts +2 -0
- package/dist/tools/server-tools.d.ts.map +1 -1
- package/dist/tools/server-tools.js +2 -1
- package/dist/tools/server-tools.js.map +1 -1
- package/dist/tools/sql-tools.d.ts +143 -2
- package/dist/tools/sql-tools.d.ts.map +1 -1
- package/dist/tools/sql-tools.js +1267 -39
- package/dist/tools/sql-tools.js.map +1 -1
- package/dist/types.d.ts +291 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +60 -60
- package/dist/utils/masking.d.ts +0 -18
- package/dist/utils/masking.d.ts.map +0 -1
- package/dist/utils/masking.js +0 -68
- package/dist/utils/masking.js.map +0 -1
package/dist/utils/masking.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility functions for masking sensitive data in responses.
|
|
3
|
-
* Only used for output - actual connections use real values.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Masks sensitive host URLs to prevent exposure of infrastructure details.
|
|
7
|
-
* Examples:
|
|
8
|
-
* - "pgbouncer-xxx.elb.us-east-1.amazonaws.com" -> "***.elb.us-east-1.amazonaws.com"
|
|
9
|
-
* - "my-db.xxx.rds.amazonaws.com" -> "***.rds.amazonaws.com"
|
|
10
|
-
* - "192.168.1.100" -> "***.***.***.***"
|
|
11
|
-
* - "localhost" -> "localhost" (unchanged)
|
|
12
|
-
*/
|
|
13
|
-
export function maskHost(host) {
|
|
14
|
-
if (!host)
|
|
15
|
-
return host;
|
|
16
|
-
// Don't mask localhost or simple hostnames
|
|
17
|
-
if (host === 'localhost' || host === '127.0.0.1' || !host.includes('.')) {
|
|
18
|
-
return host;
|
|
19
|
-
}
|
|
20
|
-
// Mask AWS RDS/ELB endpoints
|
|
21
|
-
if (host.includes('.amazonaws.com')) {
|
|
22
|
-
const parts = host.split('.');
|
|
23
|
-
const awsIndex = parts.findIndex(p => p === 'amazonaws');
|
|
24
|
-
if (awsIndex > 0) {
|
|
25
|
-
const suffix = parts.slice(awsIndex - 1).join('.');
|
|
26
|
-
return `***.${suffix}`;
|
|
27
|
-
}
|
|
28
|
-
return '***.amazonaws.com';
|
|
29
|
-
}
|
|
30
|
-
// Mask Azure endpoints
|
|
31
|
-
if (host.includes('.database.windows.net'))
|
|
32
|
-
return '***.database.windows.net';
|
|
33
|
-
if (host.includes('.azure.com'))
|
|
34
|
-
return '***.azure.com';
|
|
35
|
-
// Mask GCP endpoints
|
|
36
|
-
if (host.includes('.cloudsql.') || host.includes('.googleapis.com'))
|
|
37
|
-
return '***.googleapis.com';
|
|
38
|
-
// Mask IP addresses
|
|
39
|
-
if (/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(host))
|
|
40
|
-
return '***.***.***.***';
|
|
41
|
-
// For other hosts, mask subdomain but keep domain
|
|
42
|
-
const parts = host.split('.');
|
|
43
|
-
if (parts.length >= 2)
|
|
44
|
-
return `***.${parts.slice(-2).join('.')}`;
|
|
45
|
-
return host;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Masks sensitive data in response objects before sending to client.
|
|
49
|
-
*/
|
|
50
|
-
export function maskResponseData(data) {
|
|
51
|
-
if (!data || typeof data !== 'object')
|
|
52
|
-
return data;
|
|
53
|
-
// Deep clone to avoid mutating original
|
|
54
|
-
const masked = JSON.parse(JSON.stringify(data));
|
|
55
|
-
// Mask host in server listings
|
|
56
|
-
if (masked.servers && Array.isArray(masked.servers)) {
|
|
57
|
-
masked.servers = masked.servers.map((s) => ({
|
|
58
|
-
...s,
|
|
59
|
-
host: maskHost(s.host)
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
// Mask host in connection info
|
|
63
|
-
if (masked.host) {
|
|
64
|
-
masked.host = maskHost(masked.host);
|
|
65
|
-
}
|
|
66
|
-
return masked;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=masking.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"masking.js","sourceRoot":"","sources":["../../src/utils/masking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,IAA+B;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAc,CAAC;IAEjC,2CAA2C;IAC3C,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;QACzD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,OAAO,MAAM,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAAE,OAAO,0BAA0B,CAAC;IAC9E,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,eAAe,CAAC;IAExD,qBAAqB;IACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAEjG,oBAAoB;IACpB,IAAI,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAEhF,kDAAkD;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnD,wCAAwC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhD,+BAA+B;IAC/B,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,CAAC;YACJ,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,+BAA+B;IAC/B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|