@neverinfamous/postgres-mcp 1.0.2 → 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 (224) hide show
  1. package/README.md +38 -19
  2. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  3. package/dist/__tests__/mocks/adapter.js.map +1 -1
  4. package/dist/adapters/DatabaseAdapter.d.ts +5 -6
  5. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  6. package/dist/adapters/DatabaseAdapter.js +73 -52
  7. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  8. package/dist/adapters/postgresql/PostgresAdapter.d.ts +13 -0
  9. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  10. package/dist/adapters/postgresql/PostgresAdapter.js +48 -3
  11. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  12. package/dist/adapters/postgresql/schemas/admin.d.ts +42 -0
  13. package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -1
  14. package/dist/adapters/postgresql/schemas/admin.js +61 -0
  15. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  16. package/dist/adapters/postgresql/schemas/backup.d.ts +119 -0
  17. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  18. package/dist/adapters/postgresql/schemas/backup.js +169 -0
  19. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  20. package/dist/adapters/postgresql/schemas/core.d.ts +27 -0
  21. package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
  22. package/dist/adapters/postgresql/schemas/core.js +62 -0
  23. package/dist/adapters/postgresql/schemas/core.js.map +1 -1
  24. package/dist/adapters/postgresql/schemas/cron.d.ts +117 -0
  25. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  26. package/dist/adapters/postgresql/schemas/cron.js +148 -1
  27. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  28. package/dist/adapters/postgresql/schemas/extensions.d.ts +335 -0
  29. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -1
  30. package/dist/adapters/postgresql/schemas/extensions.js +453 -0
  31. package/dist/adapters/postgresql/schemas/extensions.js.map +1 -1
  32. package/dist/adapters/postgresql/schemas/index.d.ts +15 -15
  33. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  34. package/dist/adapters/postgresql/schemas/index.js +56 -16
  35. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  36. package/dist/adapters/postgresql/schemas/jsonb.d.ts +408 -21
  37. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -1
  38. package/dist/adapters/postgresql/schemas/jsonb.js +544 -23
  39. package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -1
  40. package/dist/adapters/postgresql/schemas/monitoring.d.ts +179 -0
  41. package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
  42. package/dist/adapters/postgresql/schemas/monitoring.js +240 -0
  43. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  44. package/dist/adapters/postgresql/schemas/partitioning.d.ts +57 -0
  45. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  46. package/dist/adapters/postgresql/schemas/partitioning.js +84 -0
  47. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  48. package/dist/adapters/postgresql/schemas/partman.d.ts +156 -0
  49. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  50. package/dist/adapters/postgresql/schemas/partman.js +203 -0
  51. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  52. package/dist/adapters/postgresql/schemas/performance.d.ts +123 -0
  53. package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
  54. package/dist/adapters/postgresql/schemas/performance.js +221 -0
  55. package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
  56. package/dist/adapters/postgresql/schemas/postgis.d.ts +173 -0
  57. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -1
  58. package/dist/adapters/postgresql/schemas/postgis.js +279 -0
  59. package/dist/adapters/postgresql/schemas/postgis.js.map +1 -1
  60. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +100 -0
  61. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  62. package/dist/adapters/postgresql/schemas/schema-mgmt.js +133 -0
  63. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  64. package/dist/adapters/postgresql/schemas/stats.d.ts +248 -4
  65. package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -1
  66. package/dist/adapters/postgresql/schemas/stats.js +362 -0
  67. package/dist/adapters/postgresql/schemas/stats.js.map +1 -1
  68. package/dist/adapters/postgresql/schemas/text-search.d.ts +47 -0
  69. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  70. package/dist/adapters/postgresql/schemas/text-search.js +62 -0
  71. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  72. package/dist/adapters/postgresql/schemas/vector.d.ts +252 -0
  73. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
  74. package/dist/adapters/postgresql/schemas/vector.js +373 -0
  75. package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
  76. package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
  77. package/dist/adapters/postgresql/tools/admin.js +37 -7
  78. package/dist/adapters/postgresql/tools/admin.js.map +1 -1
  79. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  80. package/dist/adapters/postgresql/tools/backup/dump.js +14 -2
  81. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  82. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  83. package/dist/adapters/postgresql/tools/backup/planning.js +6 -0
  84. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  85. package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -1
  86. package/dist/adapters/postgresql/tools/citext.js +9 -1
  87. package/dist/adapters/postgresql/tools/citext.js.map +1 -1
  88. package/dist/adapters/postgresql/tools/codemode/index.d.ts +11 -0
  89. package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -1
  90. package/dist/adapters/postgresql/tools/codemode/index.js +33 -0
  91. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  92. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  93. package/dist/adapters/postgresql/tools/core/convenience.js +6 -0
  94. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  95. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  96. package/dist/adapters/postgresql/tools/core/health.js +7 -2
  97. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  98. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  99. package/dist/adapters/postgresql/tools/core/indexes.js +4 -0
  100. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  101. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  102. package/dist/adapters/postgresql/tools/core/objects.js +4 -1
  103. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  104. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  105. package/dist/adapters/postgresql/tools/core/query.js +3 -0
  106. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  107. package/dist/adapters/postgresql/tools/core/schemas.d.ts +164 -0
  108. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  109. package/dist/adapters/postgresql/tools/core/schemas.js +238 -0
  110. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  111. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  112. package/dist/adapters/postgresql/tools/core/tables.js +5 -0
  113. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  114. package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -1
  115. package/dist/adapters/postgresql/tools/cron.js +12 -2
  116. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  117. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -1
  118. package/dist/adapters/postgresql/tools/jsonb/advanced.js +56 -46
  119. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -1
  120. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -1
  121. package/dist/adapters/postgresql/tools/jsonb/basic.js +114 -72
  122. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -1
  123. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  124. package/dist/adapters/postgresql/tools/kcache.js +10 -1
  125. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  126. package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
  127. package/dist/adapters/postgresql/tools/ltree.js +11 -1
  128. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  129. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -1
  130. package/dist/adapters/postgresql/tools/monitoring.js +14 -1
  131. package/dist/adapters/postgresql/tools/monitoring.js.map +1 -1
  132. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -1
  133. package/dist/adapters/postgresql/tools/partitioning.js +9 -1
  134. package/dist/adapters/postgresql/tools/partitioning.js.map +1 -1
  135. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  136. package/dist/adapters/postgresql/tools/partman/management.js +8 -1
  137. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  138. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  139. package/dist/adapters/postgresql/tools/partman/operations.js +8 -1
  140. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  141. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  142. package/dist/adapters/postgresql/tools/performance/analysis.js +4 -0
  143. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  144. package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -1
  145. package/dist/adapters/postgresql/tools/performance/explain.js +4 -1
  146. package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -1
  147. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  148. package/dist/adapters/postgresql/tools/performance/monitoring.js +10 -8
  149. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  150. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  151. package/dist/adapters/postgresql/tools/performance/optimization.js +4 -0
  152. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  153. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  154. package/dist/adapters/postgresql/tools/performance/stats.js +9 -0
  155. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  156. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  157. package/dist/adapters/postgresql/tools/pgcrypto.js +12 -3
  158. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  159. package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
  160. package/dist/adapters/postgresql/tools/postgis/advanced.js +7 -1
  161. package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
  162. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  163. package/dist/adapters/postgresql/tools/postgis/basic.js +11 -1
  164. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  165. package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -1
  166. package/dist/adapters/postgresql/tools/postgis/standalone.js +6 -1
  167. package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -1
  168. package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -1
  169. package/dist/adapters/postgresql/tools/schema.js +15 -1
  170. package/dist/adapters/postgresql/tools/schema.js.map +1 -1
  171. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  172. package/dist/adapters/postgresql/tools/stats/advanced.js +59 -20
  173. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  174. package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
  175. package/dist/adapters/postgresql/tools/stats/basic.js +35 -13
  176. package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
  177. package/dist/adapters/postgresql/tools/text.d.ts.map +1 -1
  178. package/dist/adapters/postgresql/tools/text.js +43 -26
  179. package/dist/adapters/postgresql/tools/text.js.map +1 -1
  180. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  181. package/dist/adapters/postgresql/tools/transactions.js +10 -1
  182. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  183. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -1
  184. package/dist/adapters/postgresql/tools/vector/advanced.js +29 -5
  185. package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
  186. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
  187. package/dist/adapters/postgresql/tools/vector/basic.js +81 -28
  188. package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
  189. package/dist/codemode/api.d.ts.map +1 -1
  190. package/dist/codemode/api.js +4 -0
  191. package/dist/codemode/api.js.map +1 -1
  192. package/dist/constants/ServerInstructions.d.ts +1 -1
  193. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  194. package/dist/constants/ServerInstructions.js +13 -7
  195. package/dist/constants/ServerInstructions.js.map +1 -1
  196. package/dist/filtering/ToolConstants.d.ts +3 -3
  197. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  198. package/dist/filtering/ToolConstants.js +4 -3
  199. package/dist/filtering/ToolConstants.js.map +1 -1
  200. package/dist/types/adapters.d.ts +2 -0
  201. package/dist/types/adapters.d.ts.map +1 -1
  202. package/dist/types/oauth.d.ts +4 -0
  203. package/dist/types/oauth.d.ts.map +1 -1
  204. package/dist/utils/fts-config.d.ts +38 -0
  205. package/dist/utils/fts-config.d.ts.map +1 -0
  206. package/dist/utils/fts-config.js +64 -0
  207. package/dist/utils/fts-config.js.map +1 -0
  208. package/dist/utils/identifiers.d.ts +21 -0
  209. package/dist/utils/identifiers.d.ts.map +1 -1
  210. package/dist/utils/identifiers.js +48 -0
  211. package/dist/utils/identifiers.js.map +1 -1
  212. package/dist/utils/logger.d.ts +22 -1
  213. package/dist/utils/logger.d.ts.map +1 -1
  214. package/dist/utils/logger.js +71 -14
  215. package/dist/utils/logger.js.map +1 -1
  216. package/dist/utils/progress-utils.d.ts +44 -0
  217. package/dist/utils/progress-utils.d.ts.map +1 -0
  218. package/dist/utils/progress-utils.js +75 -0
  219. package/dist/utils/progress-utils.js.map +1 -0
  220. package/dist/utils/where-clause.d.ts +39 -0
  221. package/dist/utils/where-clause.d.ts.map +1 -0
  222. package/dist/utils/where-clause.js +123 -0
  223. package/dist/utils/where-clause.js.map +1 -0
  224. package/package.json +5 -5
@@ -9,7 +9,9 @@ import {
9
9
  // Base schemas for MCP visibility
10
10
  StatsDescriptiveSchemaBase, StatsPercentilesSchemaBase, StatsCorrelationSchemaBase, StatsRegressionSchemaBase,
11
11
  // Preprocessed schemas for handler parsing
12
- StatsDescriptiveSchema, StatsPercentilesSchema, StatsCorrelationSchema, StatsRegressionSchema, } from "../../schemas/index.js";
12
+ StatsDescriptiveSchema, StatsPercentilesSchema, StatsCorrelationSchema, StatsRegressionSchema,
13
+ // Output schemas for MCP structured content
14
+ DescriptiveOutputSchema, PercentilesOutputSchema, CorrelationOutputSchema, RegressionOutputSchema, } from "../../schemas/index.js";
13
15
  // =============================================================================
14
16
  // Tool Implementations
15
17
  // =============================================================================
@@ -22,10 +24,11 @@ export function createStatsDescriptiveTool(adapter) {
22
24
  description: "Calculate descriptive statistics (count, min, max, avg, stddev, variance, sum) for a numeric column. Use groupBy to get statistics per category.",
23
25
  group: "stats",
24
26
  inputSchema: StatsDescriptiveSchemaBase, // Base schema for MCP visibility
27
+ outputSchema: DescriptiveOutputSchema,
25
28
  annotations: readOnly("Descriptive Statistics"),
26
29
  icons: getToolIcons("stats", readOnly("Descriptive Statistics")),
27
30
  handler: async (params, _context) => {
28
- const { table, column, schema, where, groupBy } = StatsDescriptiveSchema.parse(params);
31
+ const { table, column, schema, where, params: queryParams, groupBy, } = StatsDescriptiveSchema.parse(params);
29
32
  const schemaPrefix = schema ? `"${schema}".` : "";
30
33
  const whereClause = where ? `WHERE ${where}` : "";
31
34
  // Validate column is numeric type
@@ -94,7 +97,9 @@ export function createStatsDescriptiveTool(adapter) {
94
97
  GROUP BY "${groupBy}"
95
98
  ORDER BY "${groupBy}"
96
99
  `;
97
- const result = await adapter.executeQuery(sql);
100
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
101
+ ? [queryParams]
102
+ : []));
98
103
  const rows = result.rows ?? [];
99
104
  const groups = rows.map((row) => ({
100
105
  groupKey: row["group_key"],
@@ -122,7 +127,9 @@ export function createStatsDescriptiveTool(adapter) {
122
127
  FROM ${schemaPrefix}"${table}"
123
128
  ${whereClause}
124
129
  `;
125
- const result = await adapter.executeQuery(sql);
130
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
131
+ ? [queryParams]
132
+ : []));
126
133
  const stats = result.rows?.[0];
127
134
  if (!stats)
128
135
  throw new Error("No stats found");
@@ -183,11 +190,12 @@ export function createStatsPercentilesTool(adapter) {
183
190
  description: "Calculate percentiles (quartiles, custom percentiles) for a numeric column. Use groupBy to get percentiles per category.",
184
191
  group: "stats",
185
192
  inputSchema: StatsPercentilesSchemaBase, // Base schema for MCP visibility
193
+ outputSchema: PercentilesOutputSchema,
186
194
  annotations: readOnly("Percentiles"),
187
195
  icons: getToolIcons("stats", readOnly("Percentiles")),
188
196
  handler: async (params, _context) => {
189
197
  const parsed = StatsPercentilesSchema.parse(params);
190
- const { table, column, percentiles, schema, where, groupBy, _percentileScaleWarning, } = parsed;
198
+ const { table, column, percentiles, schema, where, params: queryParams, groupBy, _percentileScaleWarning, } = parsed;
191
199
  const schemaName = schema ?? "public";
192
200
  // Validate column exists and is numeric
193
201
  await validateNumericColumn(adapter, table, column, schemaName);
@@ -220,7 +228,9 @@ export function createStatsPercentilesTool(adapter) {
220
228
  GROUP BY "${groupBy}"
221
229
  ORDER BY "${groupBy}"
222
230
  `;
223
- const result = await adapter.executeQuery(sql);
231
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
232
+ ? [queryParams]
233
+ : []));
224
234
  const rows = result.rows ?? [];
225
235
  const groups = rows.map((row) => ({
226
236
  groupKey: row["group_key"],
@@ -246,7 +256,9 @@ export function createStatsPercentilesTool(adapter) {
246
256
  FROM ${schemaPrefix}"${table}"
247
257
  ${whereClause}
248
258
  `;
249
- const result = await adapter.executeQuery(sql);
259
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
260
+ ? [queryParams]
261
+ : []));
250
262
  const row = result.rows?.[0] ?? {};
251
263
  const response = {
252
264
  table: `${schema ?? "public"}.${table}`,
@@ -270,11 +282,12 @@ export function createStatsCorrelationTool(adapter) {
270
282
  description: "Calculate Pearson correlation coefficient between two numeric columns. Use groupBy to get correlation per category.",
271
283
  group: "stats",
272
284
  inputSchema: StatsCorrelationSchemaBase, // Base schema for MCP visibility
285
+ outputSchema: CorrelationOutputSchema,
273
286
  annotations: readOnly("Correlation Analysis"),
274
287
  icons: getToolIcons("stats", readOnly("Correlation Analysis")),
275
288
  handler: async (params, _context) => {
276
289
  const parsed = StatsCorrelationSchema.parse(params);
277
- const { table, column1, column2, schema, where, groupBy } = parsed;
290
+ const { table, column1, column2, schema, where, params: queryParams, groupBy, } = parsed;
278
291
  const schemaPrefix = schema ? `"${schema}".` : "";
279
292
  const whereClause = where ? `WHERE ${where}` : "";
280
293
  // Validate both columns are numeric types
@@ -353,7 +366,9 @@ export function createStatsCorrelationTool(adapter) {
353
366
  GROUP BY "${groupBy}"
354
367
  ORDER BY "${groupBy}"
355
368
  `;
356
- const result = await adapter.executeQuery(sql);
369
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
370
+ ? [queryParams]
371
+ : []));
357
372
  const rows = result.rows ?? [];
358
373
  const groups = rows.map((row) => ({
359
374
  groupKey: row["group_key"],
@@ -377,7 +392,9 @@ export function createStatsCorrelationTool(adapter) {
377
392
  FROM ${schemaPrefix}"${table}"
378
393
  ${whereClause}
379
394
  `;
380
- const result = await adapter.executeQuery(sql);
395
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
396
+ ? [queryParams]
397
+ : []));
381
398
  const row = result.rows?.[0];
382
399
  if (!row)
383
400
  throw new Error("No correlation data found");
@@ -403,11 +420,12 @@ export function createStatsRegressionTool(adapter) {
403
420
  description: "Perform linear regression analysis (y = mx + b) between two columns. Use groupBy to get regression per category.",
404
421
  group: "stats",
405
422
  inputSchema: StatsRegressionSchemaBase, // Base schema for MCP visibility
423
+ outputSchema: RegressionOutputSchema,
406
424
  annotations: readOnly("Linear Regression"),
407
425
  icons: getToolIcons("stats", readOnly("Linear Regression")),
408
426
  handler: async (params, _context) => {
409
427
  const parsed = StatsRegressionSchema.parse(params);
410
- const { table, xColumn, yColumn, schema, where, groupBy } = parsed;
428
+ const { table, xColumn, yColumn, schema, where, params: queryParams, groupBy, } = parsed;
411
429
  const schemaName = schema ?? "public";
412
430
  const schemaPrefix = schema ? `"${schema}".` : "";
413
431
  const whereClause = where ? `WHERE ${where}` : "";
@@ -450,7 +468,9 @@ export function createStatsRegressionTool(adapter) {
450
468
  GROUP BY "${groupBy}"
451
469
  ORDER BY "${groupBy}"
452
470
  `;
453
- const result = await adapter.executeQuery(sql);
471
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
472
+ ? [queryParams]
473
+ : []));
454
474
  const rows = result.rows ?? [];
455
475
  const groups = rows.map((row) => ({
456
476
  groupKey: row["group_key"],
@@ -480,7 +500,9 @@ export function createStatsRegressionTool(adapter) {
480
500
  FROM ${schemaPrefix}"${table}"
481
501
  ${whereClause}
482
502
  `;
483
- const result = await adapter.executeQuery(sql);
503
+ const result = await adapter.executeQuery(sql, ...(queryParams !== undefined && queryParams.length > 0
504
+ ? [queryParams]
505
+ : []));
484
506
  const row = result.rows?.[0];
485
507
  if (!row)
486
508
  return { error: "No regression data found" };
@@ -1 +1 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/stats/basic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/stats/basic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAwB9E;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAgBvE"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAmC9E;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAgBvE"}
@@ -7,8 +7,12 @@
7
7
  import { z } from "zod";
8
8
  import { readOnly, write } from "../../../utils/annotations.js";
9
9
  import { getToolIcons } from "../../../utils/icons.js";
10
- import { sanitizeIdentifier, sanitizeIdentifiers, } from "../../../utils/identifiers.js";
11
- import { TextSearchSchema, TextSearchSchemaBase, TrigramSimilaritySchema, TrigramSimilaritySchemaBase, RegexpMatchSchema, RegexpMatchSchemaBase, preprocessTextParams, } from "../schemas/index.js";
10
+ import { sanitizeIdentifier, sanitizeIdentifiers, sanitizeTableName, } from "../../../utils/identifiers.js";
11
+ import { sanitizeFtsConfig } from "../../../utils/fts-config.js";
12
+ import { sanitizeWhereClause } from "../../../utils/where-clause.js";
13
+ import { TextSearchSchema, TextSearchSchemaBase, TrigramSimilaritySchema, TrigramSimilaritySchemaBase, RegexpMatchSchema, RegexpMatchSchemaBase, preprocessTextParams,
14
+ // Output schemas
15
+ TextRowsOutputSchema, FtsIndexOutputSchema, TextNormalizeOutputSchema, TextSentimentOutputSchema, TextToVectorOutputSchema, TextToQueryOutputSchema, TextSearchConfigOutputSchema, } from "../schemas/index.js";
12
16
  /**
13
17
  * Get all text processing tools
14
18
  */
@@ -35,11 +39,12 @@ function createTextSearchTool(adapter) {
35
39
  description: "Full-text search using tsvector and tsquery.",
36
40
  group: "text",
37
41
  inputSchema: TextSearchSchemaBase, // Base schema for MCP visibility
42
+ outputSchema: TextRowsOutputSchema,
38
43
  annotations: readOnly("Full-Text Search"),
39
44
  icons: getToolIcons("text", readOnly("Full-Text Search")),
40
45
  handler: async (params, _context) => {
41
46
  const parsed = TextSearchSchema.parse(params);
42
- const cfg = parsed.config ?? "english";
47
+ const cfg = sanitizeFtsConfig(parsed.config ?? "english");
43
48
  // Handle both column (string) and columns (array) parameters
44
49
  // The preprocessor converts column → columns, but we handle both for safety
45
50
  let cols;
@@ -54,12 +59,11 @@ function createTextSearchTool(adapter) {
54
59
  }
55
60
  // Build qualified table name with schema support
56
61
  // The preprocessor guarantees table is set (converts tableName → table)
57
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
58
62
  const resolvedTable = parsed.table ?? parsed.tableName;
59
63
  if (!resolvedTable) {
60
64
  throw new Error("Either 'table' or 'tableName' is required");
61
65
  }
62
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
66
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
63
67
  const sanitizedCols = sanitizeIdentifiers(cols);
64
68
  const selectCols = parsed.select !== undefined && parsed.select.length > 0
65
69
  ? sanitizeIdentifiers(parsed.select).join(", ")
@@ -107,11 +111,12 @@ function createTextRankTool(adapter) {
107
111
  description: "Get relevance ranking for full-text search results. Returns matching rows only with rank score.",
108
112
  group: "text",
109
113
  inputSchema: TextRankSchemaBase, // Base schema for MCP visibility
114
+ outputSchema: TextRowsOutputSchema,
110
115
  annotations: readOnly("Text Rank"),
111
116
  icons: getToolIcons("text", readOnly("Text Rank")),
112
117
  handler: async (params, _context) => {
113
118
  const parsed = TextRankSchema.parse(params);
114
- const cfg = parsed.config ?? "english";
119
+ const cfg = sanitizeFtsConfig(parsed.config ?? "english");
115
120
  const norm = parsed.normalization ?? 0;
116
121
  // Handle both column (string) and columns (array) parameters
117
122
  let cols;
@@ -125,12 +130,11 @@ function createTextRankTool(adapter) {
125
130
  throw new Error("Either column or columns parameter is required");
126
131
  }
127
132
  // The preprocessor guarantees table is set (converts tableName → table)
128
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
129
133
  const resolvedTable = parsed.table ?? parsed.tableName;
130
134
  if (!resolvedTable) {
131
135
  throw new Error("Either 'table' or 'tableName' is required");
132
136
  }
133
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
137
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
134
138
  const sanitizedCols = sanitizeIdentifiers(cols);
135
139
  const selectCols = parsed.select !== undefined && parsed.select.length > 0
136
140
  ? sanitizeIdentifiers(parsed.select).join(", ")
@@ -156,6 +160,7 @@ function createTrigramSimilarityTool(adapter) {
156
160
  description: "Find similar strings using pg_trgm trigram matching. Returns similarity score (0-1). Default threshold 0.3; use lower (e.g., 0.1) for partial matches.",
157
161
  group: "text",
158
162
  inputSchema: TrigramSimilaritySchemaBase, // Base schema for MCP visibility
163
+ outputSchema: TextRowsOutputSchema,
159
164
  annotations: readOnly("Trigram Similarity"),
160
165
  icons: getToolIcons("text", readOnly("Trigram Similarity")),
161
166
  handler: async (params, _context) => {
@@ -164,17 +169,18 @@ function createTrigramSimilarityTool(adapter) {
164
169
  // Default limit to 100 to prevent large payloads
165
170
  const limitVal = parsed.limit !== undefined && parsed.limit > 0 ? parsed.limit : 100;
166
171
  // The preprocessor guarantees table is set (converts tableName → table)
167
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
168
172
  const resolvedTable = parsed.table ?? parsed.tableName;
169
173
  if (!resolvedTable) {
170
174
  throw new Error("Either 'table' or 'tableName' is required");
171
175
  }
172
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
176
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
173
177
  const columnName = sanitizeIdentifier(parsed.column);
174
178
  const selectCols = parsed.select !== undefined && parsed.select.length > 0
175
179
  ? sanitizeIdentifiers(parsed.select).join(", ")
176
180
  : "*";
177
- const additionalWhere = parsed.where ? ` AND (${parsed.where})` : "";
181
+ const additionalWhere = parsed.where
182
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
183
+ : "";
178
184
  const sql = `SELECT ${selectCols}, similarity(${columnName}, $1) as similarity
179
185
  FROM ${tableName}
180
186
  WHERE similarity(${columnName}, $1) > ${String(thresh)}${additionalWhere}
@@ -215,6 +221,7 @@ function createFuzzyMatchTool(adapter) {
215
221
  description: "Fuzzy string matching using fuzzystrmatch extension. Levenshtein (default): returns distance; use maxDistance=5+ for longer strings. Soundex/metaphone: returns phonetic code for exact matches only.",
216
222
  group: "text",
217
223
  inputSchema: FuzzyMatchSchemaBase, // Base schema for MCP visibility
224
+ outputSchema: TextRowsOutputSchema,
218
225
  annotations: readOnly("Fuzzy Match"),
219
226
  icons: getToolIcons("text", readOnly("Fuzzy Match")),
220
227
  handler: async (params, _context) => {
@@ -225,17 +232,18 @@ function createFuzzyMatchTool(adapter) {
225
232
  // Default limit to 100 to prevent large payloads
226
233
  const limitVal = parsed.limit !== undefined && parsed.limit > 0 ? parsed.limit : 100;
227
234
  // The preprocessor guarantees table is set (converts tableName → table)
228
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
229
235
  const resolvedTable = parsed.table ?? parsed.tableName;
230
236
  if (!resolvedTable) {
231
237
  throw new Error("Either 'table' or 'tableName' is required");
232
238
  }
233
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
239
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
234
240
  const columnName = sanitizeIdentifier(parsed.column);
235
241
  const selectCols = parsed.select !== undefined && parsed.select.length > 0
236
242
  ? sanitizeIdentifiers(parsed.select).join(", ")
237
243
  : "*";
238
- const additionalWhere = parsed.where ? ` AND (${parsed.where})` : "";
244
+ const additionalWhere = parsed.where
245
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
246
+ : "";
239
247
  let sql;
240
248
  if (method === "soundex") {
241
249
  sql = `SELECT ${selectCols}, soundex(${columnName}) as code FROM ${tableName} WHERE soundex(${columnName}) = soundex($1)${additionalWhere} LIMIT ${String(limitVal)}`;
@@ -257,23 +265,25 @@ function createRegexpMatchTool(adapter) {
257
265
  description: "Match text using POSIX regular expressions.",
258
266
  group: "text",
259
267
  inputSchema: RegexpMatchSchemaBase, // Base schema for MCP visibility
268
+ outputSchema: TextRowsOutputSchema,
260
269
  annotations: readOnly("Regexp Match"),
261
270
  icons: getToolIcons("text", readOnly("Regexp Match")),
262
271
  handler: async (params, _context) => {
263
272
  const parsed = RegexpMatchSchema.parse(params);
264
273
  // The preprocessor guarantees table is set (converts tableName → table)
265
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
266
274
  const resolvedTable = parsed.table ?? parsed.tableName;
267
275
  if (!resolvedTable) {
268
276
  throw new Error("Either 'table' or 'tableName' is required");
269
277
  }
270
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
278
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
271
279
  const columnName = sanitizeIdentifier(parsed.column);
272
280
  const selectCols = parsed.select !== undefined && parsed.select.length > 0
273
281
  ? sanitizeIdentifiers(parsed.select).join(", ")
274
282
  : "*";
275
283
  const op = parsed.flags?.includes("i") ? "~*" : "~";
276
- const additionalWhere = parsed.where ? ` AND (${parsed.where})` : "";
284
+ const additionalWhere = parsed.where
285
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
286
+ : "";
277
287
  const limitClause = parsed.limit !== undefined ? ` LIMIT ${String(parsed.limit)}` : "";
278
288
  const sql = `SELECT ${selectCols} FROM ${tableName} WHERE ${columnName} ${op} $1${additionalWhere}${limitClause}`;
279
289
  const result = await adapter.executeQuery(sql, [parsed.pattern]);
@@ -308,23 +318,25 @@ function createLikeSearchTool(adapter) {
308
318
  description: "Search text using LIKE patterns. Case-insensitive (ILIKE) by default.",
309
319
  group: "text",
310
320
  inputSchema: LikeSearchSchemaBase, // Base schema for MCP visibility
321
+ outputSchema: TextRowsOutputSchema,
311
322
  annotations: readOnly("LIKE Search"),
312
323
  icons: getToolIcons("text", readOnly("LIKE Search")),
313
324
  handler: async (params, _context) => {
314
325
  const parsed = LikeSearchSchema.parse(params);
315
326
  // The preprocessor guarantees table is set (converts tableName → table)
316
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
317
327
  const resolvedTable = parsed.table ?? parsed.tableName;
318
328
  if (!resolvedTable) {
319
329
  throw new Error("Either 'table' or 'tableName' is required");
320
330
  }
321
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
331
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
322
332
  const columnName = sanitizeIdentifier(parsed.column);
323
333
  const selectCols = parsed.select !== undefined && parsed.select.length > 0
324
334
  ? sanitizeIdentifiers(parsed.select).join(", ")
325
335
  : "*";
326
336
  const op = parsed.caseSensitive === true ? "LIKE" : "ILIKE";
327
- const additionalWhere = parsed.where ? ` AND (${parsed.where})` : "";
337
+ const additionalWhere = parsed.where
338
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
339
+ : "";
328
340
  const limitClause = parsed.limit !== undefined && parsed.limit > 0
329
341
  ? ` LIMIT ${String(parsed.limit)}`
330
342
  : "";
@@ -374,11 +386,12 @@ function createTextHeadlineTool(adapter) {
374
386
  description: "Generate highlighted snippets from full-text search matches. Use select param for stable row identification (e.g., primary key).",
375
387
  group: "text",
376
388
  inputSchema: HeadlineSchemaBase, // Base schema for MCP visibility
389
+ outputSchema: TextRowsOutputSchema,
377
390
  annotations: readOnly("Text Headline"),
378
391
  icons: getToolIcons("text", readOnly("Text Headline")),
379
392
  handler: async (params, _context) => {
380
393
  const parsed = HeadlineSchema.parse(params);
381
- const cfg = parsed.config ?? "english";
394
+ const cfg = sanitizeFtsConfig(parsed.config ?? "english");
382
395
  // Build options string from individual params or use provided options
383
396
  let opts;
384
397
  if (parsed.options) {
@@ -393,12 +406,11 @@ function createTextHeadlineTool(adapter) {
393
406
  opts = optParts.join(", ");
394
407
  }
395
408
  // The preprocessor guarantees table is set (converts tableName → table)
396
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
397
409
  const resolvedTable = parsed.table ?? parsed.tableName;
398
410
  if (!resolvedTable) {
399
411
  throw new Error("Either 'table' or 'tableName' is required");
400
412
  }
401
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
413
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
402
414
  const columnName = sanitizeIdentifier(parsed.column);
403
415
  // Use provided select columns, or default to * (user should specify PK for stable identification)
404
416
  const selectCols = parsed.select !== undefined && parsed.select.length > 0
@@ -440,11 +452,12 @@ function createFtsIndexTool(adapter) {
440
452
  description: "Create a GIN index for full-text search on a column.",
441
453
  group: "text",
442
454
  inputSchema: FtsIndexSchemaBase, // Base schema for MCP visibility
455
+ outputSchema: FtsIndexOutputSchema,
443
456
  annotations: write("Create FTS Index"),
444
457
  icons: getToolIcons("text", write("Create FTS Index")),
445
458
  handler: async (params, _context) => {
446
459
  const parsed = FtsIndexSchema.parse(params);
447
- const cfg = parsed.config ?? "english";
460
+ const cfg = sanitizeFtsConfig(parsed.config ?? "english");
448
461
  // The preprocessor guarantees table is set (converts tableName → table)
449
462
  const resolvedTable = parsed.table ?? parsed.tableName;
450
463
  if (!resolvedTable) {
@@ -457,8 +470,7 @@ function createFtsIndexTool(adapter) {
457
470
  const useIfNotExists = parsed.ifNotExists !== false;
458
471
  const ifNotExists = useIfNotExists ? "IF NOT EXISTS " : "";
459
472
  // Build qualified table name with schema support
460
- const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
461
- const tableName = `${schemaPrefix}"${resolvedTable}"`;
473
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
462
474
  const columnName = sanitizeIdentifier(parsed.column);
463
475
  // Check if index exists before creation (to accurately report 'skipped')
464
476
  let existedBefore = false;
@@ -486,6 +498,7 @@ function createTextNormalizeTool(adapter) {
486
498
  description: "Remove accent marks (diacritics) from text using PostgreSQL unaccent extension. Note: Does NOT lowercase or trim—use LOWER()/TRIM() in a query for those operations.",
487
499
  group: "text",
488
500
  inputSchema: NormalizeSchema,
501
+ outputSchema: TextNormalizeOutputSchema,
489
502
  annotations: readOnly("Text Normalize"),
490
503
  icons: getToolIcons("text", readOnly("Text Normalize")),
491
504
  handler: async (params, _context) => {
@@ -513,6 +526,7 @@ function createTextSentimentTool(_adapter) {
513
526
  description: "Perform basic sentiment analysis on text using keyword matching.",
514
527
  group: "text",
515
528
  inputSchema: SentimentSchema,
529
+ outputSchema: TextSentimentOutputSchema,
516
530
  annotations: readOnly("Text Sentiment"),
517
531
  icons: getToolIcons("text", readOnly("Text Sentiment")),
518
532
  // eslint-disable-next-line @typescript-eslint/require-await
@@ -625,6 +639,7 @@ function createTextToVectorTool(adapter) {
625
639
  description: "Convert text to tsvector representation for full-text search operations.",
626
640
  group: "text",
627
641
  inputSchema: ToVectorSchema,
642
+ outputSchema: TextToVectorOutputSchema,
628
643
  annotations: readOnly("Text to Vector"),
629
644
  icons: getToolIcons("text", readOnly("Text to Vector")),
630
645
  handler: async (params, _context) => {
@@ -655,6 +670,7 @@ function createTextToQueryTool(adapter) {
655
670
  description: "Convert text to tsquery for full-text search. Modes: plain (default), phrase (proximity matching), websearch (Google-like syntax with AND/OR/-).",
656
671
  group: "text",
657
672
  inputSchema: ToQuerySchema,
673
+ outputSchema: TextToQueryOutputSchema,
658
674
  annotations: readOnly("Text to Query"),
659
675
  icons: getToolIcons("text", readOnly("Text to Query")),
660
676
  handler: async (params, _context) => {
@@ -686,6 +702,7 @@ function createTextSearchConfigTool(adapter) {
686
702
  description: "List available full-text search configurations (e.g., english, german, simple).",
687
703
  group: "text",
688
704
  inputSchema: z.object({}).default({}),
705
+ outputSchema: TextSearchConfigOutputSchema,
689
706
  annotations: readOnly("Search Configurations"),
690
707
  icons: getToolIcons("text", readOnly("Search Configurations")),
691
708
  handler: async (_params, _context) => {