@neverinfamous/postgres-mcp 1.0.2 → 1.2.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 +65 -38
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
- package/dist/__tests__/mocks/adapter.js +0 -1
- package/dist/__tests__/mocks/adapter.js.map +1 -1
- package/dist/__tests__/mocks/pool.d.ts.map +1 -1
- package/dist/__tests__/mocks/pool.js +0 -1
- package/dist/__tests__/mocks/pool.js.map +1 -1
- package/dist/adapters/DatabaseAdapter.d.ts +5 -6
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
- package/dist/adapters/DatabaseAdapter.js +74 -53
- package/dist/adapters/DatabaseAdapter.js.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.d.ts +13 -0
- package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresql/PostgresAdapter.js +73 -8
- package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
- package/dist/adapters/postgresql/prompts/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/backup.js +2 -3
- package/dist/adapters/postgresql/prompts/backup.js.map +1 -1
- package/dist/adapters/postgresql/prompts/citext.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/citext.js +3 -4
- package/dist/adapters/postgresql/prompts/citext.js.map +1 -1
- package/dist/adapters/postgresql/prompts/extensionSetup.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/extensionSetup.js +2 -3
- package/dist/adapters/postgresql/prompts/extensionSetup.js.map +1 -1
- package/dist/adapters/postgresql/prompts/health.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/health.js +2 -3
- package/dist/adapters/postgresql/prompts/health.js.map +1 -1
- package/dist/adapters/postgresql/prompts/index.js +20 -27
- package/dist/adapters/postgresql/prompts/index.js.map +1 -1
- package/dist/adapters/postgresql/prompts/indexTuning.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/indexTuning.js +2 -3
- package/dist/adapters/postgresql/prompts/indexTuning.js.map +1 -1
- package/dist/adapters/postgresql/prompts/kcache.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/kcache.js +3 -4
- package/dist/adapters/postgresql/prompts/kcache.js.map +1 -1
- package/dist/adapters/postgresql/prompts/ltree.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/ltree.js +3 -4
- package/dist/adapters/postgresql/prompts/ltree.js.map +1 -1
- package/dist/adapters/postgresql/prompts/partman.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/partman.js +2 -3
- package/dist/adapters/postgresql/prompts/partman.js.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcron.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcron.js +2 -3
- package/dist/adapters/postgresql/prompts/pgcron.js.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcrypto.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/pgcrypto.js +3 -4
- package/dist/adapters/postgresql/prompts/pgcrypto.js.map +1 -1
- package/dist/adapters/postgresql/prompts/pgvector.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/pgvector.js +3 -4
- package/dist/adapters/postgresql/prompts/pgvector.js.map +1 -1
- package/dist/adapters/postgresql/prompts/postgis.d.ts.map +1 -1
- package/dist/adapters/postgresql/prompts/postgis.js +2 -3
- package/dist/adapters/postgresql/prompts/postgis.js.map +1 -1
- package/dist/adapters/postgresql/schemas/admin.d.ts +42 -0
- package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/admin.js +61 -0
- package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.d.ts +119 -0
- package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/backup.js +169 -0
- package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
- package/dist/adapters/postgresql/schemas/core.d.ts +28 -0
- package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/core.js +66 -0
- package/dist/adapters/postgresql/schemas/core.js.map +1 -1
- package/dist/adapters/postgresql/schemas/cron.d.ts +117 -0
- package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/cron.js +148 -1
- package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions.d.ts +335 -0
- package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/extensions.js +455 -2
- package/dist/adapters/postgresql/schemas/extensions.js.map +1 -1
- package/dist/adapters/postgresql/schemas/index.d.ts +15 -15
- package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/index.js +56 -16
- package/dist/adapters/postgresql/schemas/index.js.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb.d.ts +408 -21
- package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/jsonb.js +544 -23
- package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.d.ts +179 -0
- package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/monitoring.js +240 -0
- package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.d.ts +60 -0
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.js +89 -2
- package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.d.ts +156 -0
- package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partman.js +203 -0
- package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.d.ts +124 -0
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.js +220 -0
- package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
- package/dist/adapters/postgresql/schemas/postgis.d.ts +173 -0
- package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/postgis.js +279 -3
- package/dist/adapters/postgresql/schemas/postgis.js.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +100 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/schema-mgmt.js +133 -0
- package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
- package/dist/adapters/postgresql/schemas/stats.d.ts +248 -4
- package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/stats.js +362 -0
- package/dist/adapters/postgresql/schemas/stats.js.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.d.ts +47 -0
- package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/text-search.js +66 -1
- package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
- package/dist/adapters/postgresql/schemas/vector.d.ts +252 -0
- package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/vector.js +373 -0
- package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
- package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/admin.js +37 -7
- package/dist/adapters/postgresql/tools/admin.js.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/backup/dump.js +64 -52
- package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
- package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/backup/planning.js +181 -172
- package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
- package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/citext.js +9 -1
- package/dist/adapters/postgresql/tools/citext.js.map +1 -1
- package/dist/adapters/postgresql/tools/codemode/index.d.ts +11 -0
- package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/codemode/index.js +33 -0
- package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/convenience.js +31 -5
- package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/health.js +12 -4
- package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/indexes.js +4 -0
- package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/objects.js +4 -1
- package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/query.js +6 -3
- package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.d.ts +165 -0
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.js +242 -0
- package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/tables.js +11 -2
- package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
- package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/cron.js +12 -2
- package/dist/adapters/postgresql/tools/cron.js.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/advanced.js +56 -46
- package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/jsonb/basic.js +114 -72
- package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/kcache.js +55 -16
- package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/ltree.js +16 -1
- package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
- package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/monitoring.js +19 -7
- package/dist/adapters/postgresql/tools/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partitioning.js +80 -1
- package/dist/adapters/postgresql/tools/partitioning.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/management.js +9 -2
- package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/partman/operations.js +11 -4
- package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/analysis.js +4 -0
- package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/explain.js +4 -1
- package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/monitoring.js +10 -8
- package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/optimization.js +4 -0
- package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
- package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/performance/stats.js +13 -1
- package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
- package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/pgcrypto.js +18 -9
- package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/advanced.js +41 -6
- package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/basic.js +13 -3
- package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/postgis/standalone.js +6 -1
- package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -1
- package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/schema.js +33 -3
- package/dist/adapters/postgresql/tools/schema.js.map +1 -1
- package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/stats/advanced.js +59 -20
- package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/stats/basic.js +35 -13
- package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
- package/dist/adapters/postgresql/tools/text.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/text.js +54 -33
- package/dist/adapters/postgresql/tools/text.js.map +1 -1
- package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/transactions.js +10 -1
- package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/advanced.js +81 -43
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.d.ts +8 -0
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.js +175 -57
- package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +15 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli.js +7 -6
- package/dist/cli.js.map +1 -1
- package/dist/codemode/api.d.ts.map +1 -1
- package/dist/codemode/api.js +7 -2
- package/dist/codemode/api.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +1 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +45 -35
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/filtering/ToolConstants.d.ts +29 -13
- package/dist/filtering/ToolConstants.d.ts.map +1 -1
- package/dist/filtering/ToolConstants.js +45 -27
- package/dist/filtering/ToolConstants.js.map +1 -1
- package/dist/types/adapters.d.ts +2 -0
- package/dist/types/adapters.d.ts.map +1 -1
- package/dist/types/oauth.d.ts +4 -0
- package/dist/types/oauth.d.ts.map +1 -1
- package/dist/utils/fts-config.d.ts +38 -0
- package/dist/utils/fts-config.d.ts.map +1 -0
- package/dist/utils/fts-config.js +64 -0
- package/dist/utils/fts-config.js.map +1 -0
- package/dist/utils/identifiers.d.ts +21 -0
- package/dist/utils/identifiers.d.ts.map +1 -1
- package/dist/utils/identifiers.js +48 -0
- package/dist/utils/identifiers.js.map +1 -1
- package/dist/utils/logger.d.ts +22 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +73 -16
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/progress-utils.d.ts +44 -0
- package/dist/utils/progress-utils.d.ts.map +1 -0
- package/dist/utils/progress-utils.js +75 -0
- package/dist/utils/progress-utils.js.map +1 -0
- package/dist/utils/where-clause.d.ts +39 -0
- package/dist/utils/where-clause.d.ts.map +1 -0
- package/dist/utils/where-clause.js +123 -0
- package/dist/utils/where-clause.js.map +1 -0
- package/package.json +8 -8
|
@@ -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,
|
|
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":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO;AACL,kCAAkC;AAClC,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB;AACzB,2CAA2C;AAC3C,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB;AACrB,4CAA4C;AAC5C,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAwB;IAExB,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,kJAAkJ;QACpJ,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0BAA0B,EAAE,iCAAiC;QAC1E,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,CAAC;QAC/C,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EAAE,WAAW,EACnB,OAAO,GACR,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAOtC,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,kCAAkC;YAClC,MAAM,cAAc,GAAG;;;wCAGW,MAAM,IAAI,QAAQ;oCACtB,KAAK;qCACJ,MAAM;aAC9B,CAAC;YACR,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAsC,CAAC;YAE1E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,wBAAwB;gBACxB,MAAM,eAAe,GAAG;;4CAEY,MAAM,IAAI,QAAQ,uBAAuB,KAAK;iBACzE,CAAC;gBACV,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;gBAChE,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,IAAI,QAAQ,IAAI,KAAK,aAAa,CAAC,CAAC;gBACtE,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,yBAAyB,MAAM,IAAI,QAAQ,IAAI,KAAK,GAAG,CACzE,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG;gBACnB,SAAS;gBACT,QAAQ;gBACR,UAAU;gBACV,SAAS;gBACT,SAAS;gBACT,MAAM;gBACN,kBAAkB;gBAClB,OAAO;aACR,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,cAAc,OAAO,CAAC,SAAS,uDAAuD,CACxG,CAAC;YACJ,CAAC;YAED,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,CACf,GAA4B,EAU5B,EAAE,CAAC,CAAC;gBACJ,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpD,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpD,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpD,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpD,IAAI,EACF,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS;oBAC/C,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACrB,CAAC,CAAC,IAAI;aACX,CAAC,CAAC;YAEH,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,qBAAqB;gBACrB,MAAM,GAAG,GAAG;;2BAEO,OAAO;iCACD,MAAM;+BACR,MAAM;+BACN,MAAM;+BACN,MAAM;kCACH,MAAM;oCACJ,MAAM;+BACX,MAAM;yDACoB,MAAM;2BACpC,YAAY,IAAI,KAAK;sBAC1B,WAAW;gCACD,OAAO;gCACP,OAAO;iBACtB,CAAC;gBAEV,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;oBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;oBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAChC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;oBAC1B,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;iBAC1B,CAAC,CAAC,CAAC;gBAEJ,OAAO;oBACL,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;oBACvC,MAAM;oBACN,OAAO;oBACP,MAAM;oBACN,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB,CAAC;YACJ,CAAC;YAED,2CAA2C;YAC3C,MAAM,GAAG,GAAG;;6BAEW,MAAM;2BACR,MAAM;2BACN,MAAM;2BACN,MAAM;8BACH,MAAM;gCACJ,MAAM;2BACX,MAAM;6DAC4B,MAAM,WAAW,YAAY,IAAI,KAAK,KAAK,WAAW;uBAC5F,YAAY,IAAI,KAAK;kBAC1B,WAAW;aAChB,CAAC;YAER,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;gBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAE9C,OAAO;gBACL,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;gBACvC,MAAM;gBACN,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC;aAC5B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAClC,OAAwB,EACxB,KAAa,EACb,MAAc,EACd,MAAc;IAEd,MAAM,YAAY,GAAG;QACnB,SAAS;QACT,QAAQ;QACR,UAAU;QACV,SAAS;QACT,SAAS;QACT,MAAM;QACN,kBAAkB;QAClB,OAAO;KACR,CAAC;IAEF,MAAM,cAAc,GAAG;;;4BAGG,MAAM;wBACV,KAAK;yBACJ,MAAM;GAC5B,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAsC,CAAC;IAE1E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,wBAAwB;QACxB,MAAM,eAAe,GAAG;;8BAEE,MAAM,uBAAuB,KAAK;KAC3D,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAChE,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,IAAI,KAAK,aAAa,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,yBAAyB,MAAM,IAAI,KAAK,GAAG,CAC7D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,cAAc,OAAO,CAAC,SAAS,uDAAuD,CACxG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAwB;IAExB,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,0HAA0H;QAC5H,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0BAA0B,EAAE,iCAAiC;QAC1E,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;QACpC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CASjD,CAAC;YACF,MAAM,EACJ,KAAK,EACL,MAAM,EACN,WAAW,EACX,MAAM,EACN,KAAK,EACL,MAAM,EAAE,WAAW,EACnB,OAAO,EACP,uBAAuB,GACxB,GAAG,MAAM,CAAC;YAEX,MAAM,UAAU,GAAG,MAAM,IAAI,QAAQ,CAAC;YAEtC,wCAAwC;YACxC,MAAM,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,WAAW,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,MAAM,iBAAiB,GAAG,OAAO;iBAC9B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,mBAAmB,MAAM,CAAC,CAAC,CAAC,6BAA6B,MAAM,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CACzG;iBACA,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAEnC,wGAAwG;YACxG,MAAM,cAAc,GAAG,CACrB,GAA4B,EACG,EAAE;gBACjC,MAAM,MAAM,GAAkC,EAAE,CAAC;gBACjD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC9C,MAAM,GAAG,GACP,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;wBACzC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAClB,CAAC,CAAC,IAAI,CAAC;oBACX,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClE,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;YAEF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,sBAAsB;gBACtB,MAAM,GAAG,GAAG;;2BAEO,OAAO;0BACR,iBAAiB;2BAChB,YAAY,IAAI,KAAK;sBAC1B,WAAW;gCACD,OAAO;gCACP,OAAO;iBACtB,CAAC;gBAEV,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;oBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;oBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAChC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;oBAC1B,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC;iBACjC,CAAC,CAAC,CAAC;gBAEJ,MAAM,QAAQ,GAA4B;oBACxC,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;oBACvC,MAAM;oBACN,OAAO;oBACP,MAAM;oBACN,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB,CAAC;gBAEF,gDAAgD;gBAChD,IAAI,uBAAuB,EAAE,CAAC;oBAC5B,QAAQ,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC;gBAChD,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,wBAAwB;YACxB,MAAM,GAAG,GAAG;;sBAEI,iBAAiB;uBAChB,YAAY,IAAI,KAAK;kBAC1B,WAAW;aAChB,CAAC;YAER,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;gBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEnC,MAAM,QAAQ,GAA4B;gBACxC,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;gBACvC,MAAM;gBACN,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC;aACjC,CAAC;YAEF,gDAAgD;YAChD,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,QAAQ,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC;YAChD,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAwB;IAExB,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,qHAAqH;QACvH,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0BAA0B,EAAE,iCAAiC;QAC1E,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE,QAAQ,CAAC,sBAAsB,CAAC;QAC7C,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAQjD,CAAC;YACF,MAAM,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EAAE,WAAW,EACnB,OAAO,GACR,GAAG,MAAM,CAAC;YAEX,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,0CAA0C;YAC1C,MAAM,YAAY,GAAG;gBACnB,SAAS;gBACT,QAAQ;gBACR,UAAU;gBACV,SAAS;gBACT,SAAS;gBACT,MAAM;gBACN,kBAAkB;gBAClB,OAAO;aACR,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrC,MAAM,cAAc,GAAG;;;4CAGa,MAAM,IAAI,QAAQ;wCACtB,KAAK;yCACJ,GAAG;iBAC3B,CAAC;gBACV,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAEtB,CAAC;gBAEd,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CACb,WAAW,GAAG,yBAAyB,MAAM,IAAI,QAAQ,IAAI,KAAK,GAAG,CACtE,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9C,MAAM,IAAI,KAAK,CACb,WAAW,GAAG,cAAc,OAAO,CAAC,SAAS,gDAAgD,CAC9F,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,MAAM,aAAa,GAAG,CAAC,IAAmB,EAAU,EAAE;gBACpD,IAAI,IAAI,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,cAAsB,CAAC;gBAC3B,IAAI,OAAO,IAAI,GAAG;oBAAE,cAAc,GAAG,aAAa,CAAC;qBAC9C,IAAI,OAAO,IAAI,GAAG;oBAAE,cAAc,GAAG,QAAQ,CAAC;qBAC9C,IAAI,OAAO,IAAI,GAAG;oBAAE,cAAc,GAAG,UAAU,CAAC;qBAChD,IAAI,OAAO,IAAI,GAAG;oBAAE,cAAc,GAAG,MAAM,CAAC;;oBAC5C,cAAc,GAAG,6BAA6B,CAAC;gBACpD,cAAc,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC3D,OAAO,cAAc,CAAC;YACxB,CAAC,CAAC;YAEF,0CAA0C;YAC1C,MAAM,cAAc,GAAG,CACrB,GAA4B,EAO5B,EAAE;gBACF,MAAM,IAAI,GACR,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClE,OAAO;oBACL,WAAW,EAAE,IAAI;oBACjB,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC;oBACnC,oBAAoB,EAClB,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI;wBAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC/B,CAAC,CAAC,IAAI;oBACV,gBAAgB,EACd,GAAG,CAAC,mBAAmB,CAAC,KAAK,IAAI;wBAC/B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;wBAClC,CAAC,CAAC,IAAI;oBACV,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;iBACvC,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,sBAAsB;gBACtB,MAAM,GAAG,GAAG;;2BAEO,OAAO;gCACF,OAAO,OAAO,OAAO;qCAChB,OAAO,OAAO,OAAO;sCACpB,OAAO,OAAO,OAAO;;2BAEhC,YAAY,IAAI,KAAK;sBAC1B,WAAW;gCACD,OAAO;gCACP,OAAO;iBACtB,CAAC;gBAEV,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;oBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;oBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAChC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;oBAC1B,GAAG,cAAc,CAAC,GAAG,CAAC;iBACvB,CAAC,CAAC,CAAC;gBAEJ,OAAO;oBACL,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;oBACvC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;oBAC3B,OAAO;oBACP,MAAM;oBACN,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB,CAAC;YACJ,CAAC;YAED,wBAAwB;YACxB,MAAM,GAAG,GAAG;;4BAEU,OAAO,OAAO,OAAO;iCAChB,OAAO,OAAO,OAAO;kCACpB,OAAO,OAAO,OAAO;;uBAEhC,YAAY,IAAI,KAAK;kBAC1B,WAAW;aAChB,CAAC;YAER,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;gBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAEvD,MAAM,QAAQ,GAA4B;gBACxC,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;gBACvC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC3B,GAAG,cAAc,CAAC,GAAG,CAAC;aACvB,CAAC;YAEF,gCAAgC;YAChC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,QAAQ,CAAC,MAAM,CAAC,GAAG,oCAAoC,CAAC;YAC1D,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAwB;IAExB,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,kHAAkH;QACpH,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yBAAyB,EAAE,iCAAiC;QACzE,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,QAAQ,CAAC,mBAAmB,CAAC;QAC1C,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAC3D,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAQhD,CAAC;YACF,MAAM,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EAAE,WAAW,EACnB,OAAO,GACR,GAAG,MAAM,CAAC;YAEX,MAAM,UAAU,GAAG,MAAM,IAAI,QAAQ,CAAC;YACtC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,8CAA8C;YAC9C,MAAM,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YACjE,MAAM,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAEjE,yCAAyC;YACzC,MAAM,aAAa,GAAG,CACpB,GAA4B,EAS5B,EAAE;gBACF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClE,MAAM,SAAS,GACb,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9D,MAAM,QAAQ,GACZ,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAE9D,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACzC,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACxC,QAAQ,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,CAAC;gBAED,OAAO;oBACL,KAAK;oBACL,SAAS;oBACT,QAAQ;oBACR,QAAQ;oBACR,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;oBACzD,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;oBACzD,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;iBACvC,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,qBAAqB;gBACrB,MAAM,GAAG,GAAG;;2BAEO,OAAO;sCACI,OAAO,OAAO,OAAO;0CACjB,OAAO,OAAO,OAAO;mCAC5B,OAAO,OAAO,OAAO;qCACnB,OAAO,OAAO,OAAO;qCACrB,OAAO,OAAO,OAAO;sCACpB,OAAO,OAAO,OAAO;2BAChC,YAAY,IAAI,KAAK;sBAC1B,WAAW;gCACD,OAAO;gCACP,OAAO;iBACtB,CAAC;gBAEV,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;oBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;oBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAChC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;oBAC1B,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC;iBAC/B,CAAC,CAAC,CAAC;gBAEJ,OAAO;oBACL,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;oBACvC,OAAO;oBACP,OAAO;oBACP,OAAO;oBACP,MAAM;oBACN,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,MAAM,GAAG,GAAG;;kCAEgB,OAAO,OAAO,OAAO;sCACjB,OAAO,OAAO,OAAO;+BAC5B,OAAO,OAAO,OAAO;iCACnB,OAAO,OAAO,OAAO;iCACrB,OAAO,OAAO,OAAO;kCACpB,OAAO,OAAO,OAAO;gCACvB,OAAO,OAAO,OAAO;gCACrB,OAAO,OAAO,OAAO;gCACrB,OAAO,OAAO,OAAO;uBAC9B,YAAY,IAAI,KAAK;kBAC1B,WAAW;aAChB,CAAC;YAER,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,GAAG,EACH,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBACrD,CAAC,CAAC,CAAC,WAAW,CAAC;gBACf,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;YAEvD,MAAM,QAAQ,GAA4B;gBACxC,KAAK,EAAE,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;gBACvC,OAAO;gBACP,OAAO;gBACP,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC;aAC/B,CAAC;YAEF,+BAA+B;YAC/B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,QAAQ,CAAC,MAAM,CAAC,GAAG,8CAA8C,CAAC;YACpE,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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;
|
|
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 {
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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,24 +265,28 @@ 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 =
|
|
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
|
|
277
|
-
|
|
284
|
+
const additionalWhere = parsed.where
|
|
285
|
+
? ` AND (${sanitizeWhereClause(parsed.where)})`
|
|
286
|
+
: "";
|
|
287
|
+
// Default limit to 100 to prevent large payloads
|
|
288
|
+
const limitVal = parsed.limit !== undefined && parsed.limit > 0 ? parsed.limit : 100;
|
|
289
|
+
const limitClause = ` LIMIT ${String(limitVal)}`;
|
|
278
290
|
const sql = `SELECT ${selectCols} FROM ${tableName} WHERE ${columnName} ${op} $1${additionalWhere}${limitClause}`;
|
|
279
291
|
const result = await adapter.executeQuery(sql, [parsed.pattern]);
|
|
280
292
|
return { rows: result.rows, count: result.rows?.length ?? 0 };
|
|
@@ -294,7 +306,10 @@ function createLikeSearchTool(adapter) {
|
|
|
294
306
|
.optional()
|
|
295
307
|
.describe("Use case-sensitive LIKE (default: false, uses ILIKE)"),
|
|
296
308
|
select: z.array(z.string()).optional(),
|
|
297
|
-
limit: z
|
|
309
|
+
limit: z
|
|
310
|
+
.number()
|
|
311
|
+
.optional()
|
|
312
|
+
.describe("Max results (default: 100 to prevent large payloads)"),
|
|
298
313
|
where: z.string().optional().describe("Additional WHERE clause filter"),
|
|
299
314
|
schema: z.string().optional().describe("Schema name (default: public)"),
|
|
300
315
|
})
|
|
@@ -308,26 +323,28 @@ function createLikeSearchTool(adapter) {
|
|
|
308
323
|
description: "Search text using LIKE patterns. Case-insensitive (ILIKE) by default.",
|
|
309
324
|
group: "text",
|
|
310
325
|
inputSchema: LikeSearchSchemaBase, // Base schema for MCP visibility
|
|
326
|
+
outputSchema: TextRowsOutputSchema,
|
|
311
327
|
annotations: readOnly("LIKE Search"),
|
|
312
328
|
icons: getToolIcons("text", readOnly("LIKE Search")),
|
|
313
329
|
handler: async (params, _context) => {
|
|
314
330
|
const parsed = LikeSearchSchema.parse(params);
|
|
315
331
|
// The preprocessor guarantees table is set (converts tableName → table)
|
|
316
|
-
const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
|
|
317
332
|
const resolvedTable = parsed.table ?? parsed.tableName;
|
|
318
333
|
if (!resolvedTable) {
|
|
319
334
|
throw new Error("Either 'table' or 'tableName' is required");
|
|
320
335
|
}
|
|
321
|
-
const tableName =
|
|
336
|
+
const tableName = sanitizeTableName(resolvedTable, parsed.schema);
|
|
322
337
|
const columnName = sanitizeIdentifier(parsed.column);
|
|
323
338
|
const selectCols = parsed.select !== undefined && parsed.select.length > 0
|
|
324
339
|
? sanitizeIdentifiers(parsed.select).join(", ")
|
|
325
340
|
: "*";
|
|
326
341
|
const op = parsed.caseSensitive === true ? "LIKE" : "ILIKE";
|
|
327
|
-
const additionalWhere = parsed.where
|
|
328
|
-
|
|
329
|
-
? ` LIMIT ${String(parsed.limit)}`
|
|
342
|
+
const additionalWhere = parsed.where
|
|
343
|
+
? ` AND (${sanitizeWhereClause(parsed.where)})`
|
|
330
344
|
: "";
|
|
345
|
+
// Default limit to 100 to prevent large payloads
|
|
346
|
+
const limitVal = parsed.limit !== undefined && parsed.limit > 0 ? parsed.limit : 100;
|
|
347
|
+
const limitClause = ` LIMIT ${String(limitVal)}`;
|
|
331
348
|
const sql = `SELECT ${selectCols} FROM ${tableName} WHERE ${columnName} ${op} $1${additionalWhere}${limitClause}`;
|
|
332
349
|
const result = await adapter.executeQuery(sql, [parsed.pattern]);
|
|
333
350
|
return { rows: result.rows, count: result.rows?.length ?? 0 };
|
|
@@ -374,11 +391,12 @@ function createTextHeadlineTool(adapter) {
|
|
|
374
391
|
description: "Generate highlighted snippets from full-text search matches. Use select param for stable row identification (e.g., primary key).",
|
|
375
392
|
group: "text",
|
|
376
393
|
inputSchema: HeadlineSchemaBase, // Base schema for MCP visibility
|
|
394
|
+
outputSchema: TextRowsOutputSchema,
|
|
377
395
|
annotations: readOnly("Text Headline"),
|
|
378
396
|
icons: getToolIcons("text", readOnly("Text Headline")),
|
|
379
397
|
handler: async (params, _context) => {
|
|
380
398
|
const parsed = HeadlineSchema.parse(params);
|
|
381
|
-
const cfg = parsed.config ?? "english";
|
|
399
|
+
const cfg = sanitizeFtsConfig(parsed.config ?? "english");
|
|
382
400
|
// Build options string from individual params or use provided options
|
|
383
401
|
let opts;
|
|
384
402
|
if (parsed.options) {
|
|
@@ -393,12 +411,11 @@ function createTextHeadlineTool(adapter) {
|
|
|
393
411
|
opts = optParts.join(", ");
|
|
394
412
|
}
|
|
395
413
|
// The preprocessor guarantees table is set (converts tableName → table)
|
|
396
|
-
const schemaPrefix = parsed.schema ? `"${parsed.schema}".` : "";
|
|
397
414
|
const resolvedTable = parsed.table ?? parsed.tableName;
|
|
398
415
|
if (!resolvedTable) {
|
|
399
416
|
throw new Error("Either 'table' or 'tableName' is required");
|
|
400
417
|
}
|
|
401
|
-
const tableName =
|
|
418
|
+
const tableName = sanitizeTableName(resolvedTable, parsed.schema);
|
|
402
419
|
const columnName = sanitizeIdentifier(parsed.column);
|
|
403
420
|
// Use provided select columns, or default to * (user should specify PK for stable identification)
|
|
404
421
|
const selectCols = parsed.select !== undefined && parsed.select.length > 0
|
|
@@ -440,11 +457,12 @@ function createFtsIndexTool(adapter) {
|
|
|
440
457
|
description: "Create a GIN index for full-text search on a column.",
|
|
441
458
|
group: "text",
|
|
442
459
|
inputSchema: FtsIndexSchemaBase, // Base schema for MCP visibility
|
|
460
|
+
outputSchema: FtsIndexOutputSchema,
|
|
443
461
|
annotations: write("Create FTS Index"),
|
|
444
462
|
icons: getToolIcons("text", write("Create FTS Index")),
|
|
445
463
|
handler: async (params, _context) => {
|
|
446
464
|
const parsed = FtsIndexSchema.parse(params);
|
|
447
|
-
const cfg = parsed.config ?? "english";
|
|
465
|
+
const cfg = sanitizeFtsConfig(parsed.config ?? "english");
|
|
448
466
|
// The preprocessor guarantees table is set (converts tableName → table)
|
|
449
467
|
const resolvedTable = parsed.table ?? parsed.tableName;
|
|
450
468
|
if (!resolvedTable) {
|
|
@@ -457,8 +475,7 @@ function createFtsIndexTool(adapter) {
|
|
|
457
475
|
const useIfNotExists = parsed.ifNotExists !== false;
|
|
458
476
|
const ifNotExists = useIfNotExists ? "IF NOT EXISTS " : "";
|
|
459
477
|
// Build qualified table name with schema support
|
|
460
|
-
const
|
|
461
|
-
const tableName = `${schemaPrefix}"${resolvedTable}"`;
|
|
478
|
+
const tableName = sanitizeTableName(resolvedTable, parsed.schema);
|
|
462
479
|
const columnName = sanitizeIdentifier(parsed.column);
|
|
463
480
|
// Check if index exists before creation (to accurately report 'skipped')
|
|
464
481
|
let existedBefore = false;
|
|
@@ -486,6 +503,7 @@ function createTextNormalizeTool(adapter) {
|
|
|
486
503
|
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
504
|
group: "text",
|
|
488
505
|
inputSchema: NormalizeSchema,
|
|
506
|
+
outputSchema: TextNormalizeOutputSchema,
|
|
489
507
|
annotations: readOnly("Text Normalize"),
|
|
490
508
|
icons: getToolIcons("text", readOnly("Text Normalize")),
|
|
491
509
|
handler: async (params, _context) => {
|
|
@@ -513,10 +531,10 @@ function createTextSentimentTool(_adapter) {
|
|
|
513
531
|
description: "Perform basic sentiment analysis on text using keyword matching.",
|
|
514
532
|
group: "text",
|
|
515
533
|
inputSchema: SentimentSchema,
|
|
534
|
+
outputSchema: TextSentimentOutputSchema,
|
|
516
535
|
annotations: readOnly("Text Sentiment"),
|
|
517
536
|
icons: getToolIcons("text", readOnly("Text Sentiment")),
|
|
518
|
-
|
|
519
|
-
handler: async (params, _context) => {
|
|
537
|
+
handler: (params, _context) => {
|
|
520
538
|
const parsed = SentimentSchema.parse(params ?? {});
|
|
521
539
|
const text = parsed.text.toLowerCase();
|
|
522
540
|
const positiveWords = [
|
|
@@ -605,7 +623,7 @@ function createTextSentimentTool(_adapter) {
|
|
|
605
623
|
result.matchedPositive = matchedPositive;
|
|
606
624
|
result.matchedNegative = matchedNegative;
|
|
607
625
|
}
|
|
608
|
-
return result;
|
|
626
|
+
return Promise.resolve(result);
|
|
609
627
|
},
|
|
610
628
|
};
|
|
611
629
|
}
|
|
@@ -625,6 +643,7 @@ function createTextToVectorTool(adapter) {
|
|
|
625
643
|
description: "Convert text to tsvector representation for full-text search operations.",
|
|
626
644
|
group: "text",
|
|
627
645
|
inputSchema: ToVectorSchema,
|
|
646
|
+
outputSchema: TextToVectorOutputSchema,
|
|
628
647
|
annotations: readOnly("Text to Vector"),
|
|
629
648
|
icons: getToolIcons("text", readOnly("Text to Vector")),
|
|
630
649
|
handler: async (params, _context) => {
|
|
@@ -655,6 +674,7 @@ function createTextToQueryTool(adapter) {
|
|
|
655
674
|
description: "Convert text to tsquery for full-text search. Modes: plain (default), phrase (proximity matching), websearch (Google-like syntax with AND/OR/-).",
|
|
656
675
|
group: "text",
|
|
657
676
|
inputSchema: ToQuerySchema,
|
|
677
|
+
outputSchema: TextToQueryOutputSchema,
|
|
658
678
|
annotations: readOnly("Text to Query"),
|
|
659
679
|
icons: getToolIcons("text", readOnly("Text to Query")),
|
|
660
680
|
handler: async (params, _context) => {
|
|
@@ -686,6 +706,7 @@ function createTextSearchConfigTool(adapter) {
|
|
|
686
706
|
description: "List available full-text search configurations (e.g., english, german, simple).",
|
|
687
707
|
group: "text",
|
|
688
708
|
inputSchema: z.object({}).default({}),
|
|
709
|
+
outputSchema: TextSearchConfigOutputSchema,
|
|
689
710
|
annotations: readOnly("Search Configurations"),
|
|
690
711
|
icons: getToolIcons("text", readOnly("Search Configurations")),
|
|
691
712
|
handler: async (_params, _context) => {
|