@neverinfamous/postgres-mcp 1.0.1 → 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.
- package/README.md +46 -25
- package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
- package/dist/__tests__/mocks/adapter.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 +73 -52
- 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 +48 -3
- package/dist/adapters/postgresql/PostgresAdapter.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 +27 -0
- package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/core.js +62 -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 +453 -0
- 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 +57 -0
- package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/partitioning.js +84 -0
- 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 +123 -0
- package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
- package/dist/adapters/postgresql/schemas/performance.js +221 -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 -0
- 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 +62 -0
- 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 +14 -2
- 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 +6 -0
- 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 +6 -0
- 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 +7 -2
- 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 +3 -0
- package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.d.ts +164 -0
- package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/core/schemas.js +238 -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 +5 -0
- 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 +10 -1
- 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 +11 -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 +14 -1
- 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 +9 -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 +8 -1
- 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 +8 -1
- 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 +9 -0
- 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 +12 -3
- 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 +7 -1
- 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 +11 -1
- 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 +15 -1
- 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 +43 -26
- 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 +29 -5
- package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
- package/dist/adapters/postgresql/tools/vector/basic.js +81 -28
- package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
- package/dist/codemode/api.d.ts.map +1 -1
- package/dist/codemode/api.js +4 -0
- 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 +13 -7
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/filtering/ToolConstants.d.ts +3 -3
- package/dist/filtering/ToolConstants.d.ts.map +1 -1
- package/dist/filtering/ToolConstants.js +4 -3
- 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 +71 -14
- 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 +9 -8
package/README.md
CHANGED
|
@@ -2,23 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- mcp-name: io.github.neverinfamous/postgres-mcp -->
|
|
4
4
|
|
|
5
|
-
**Last updated January
|
|
5
|
+
**Last updated January 29, 2026**
|
|
6
6
|
|
|
7
7
|
**PostgreSQL MCP Server** enabling AI assistants (AntiGravity, Claude, Cursor, etc.) to interact with PostgreSQL databases through the Model Context Protocol. Features connection pooling, HTTP/SSE Transport, OAuth 2.1 authentication, Code Mode, tool filtering, and extension support for citext, ltree, pgcrypto, pg_cron, pg_stat_kcache, pgvector, PostGIS, and HypoPG.
|
|
8
8
|
|
|
9
|
-
**
|
|
9
|
+
**204 specialized tools** · **20 resources** · **19 AI-powered prompts**
|
|
10
10
|
|
|
11
|
-
[](https://github.com/neverinfamous/
|
|
12
|
-
](https://github.com/neverinfamous/postgresql-mcp)
|
|
12
|
+

|
|
13
13
|
[](https://hub.docker.com/r/writenotenow/postgres-mcp)
|
|
14
14
|
[](https://opensource.org/licenses/MIT)
|
|
15
|
-
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/postgres-mcp)
|
|
16
16
|
[](https://www.npmjs.com/package/@neverinfamous/postgres-mcp)
|
|
17
|
-
[](https://github.com/neverinfamous/
|
|
17
|
+
[](https://github.com/neverinfamous/postgresql-mcp/blob/master/SECURITY.md)
|
|
18
18
|

|
|
19
|
-
[](https://github.com/neverinfamous/
|
|
20
|
-
[](https://github.com/neverinfamous/postgresql-mcp)
|
|
20
|
+
[](https://github.com/neverinfamous/postgresql-mcp)
|
|
21
|
+
[](https://github.com/neverinfamous/postgresql-mcp)
|
|
22
|
+
|
|
23
|
+
**[Docker Hub](https://hub.docker.com/r/writenotenow/postgres-mcp)** • **[npm Package](https://www.npmjs.com/package/@neverinfamous/postgres-mcp)** • **[MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/postgres-mcp)** • **[Wiki](https://github.com/neverinfamous/postgresql-mcp/wiki)**
|
|
22
24
|
|
|
23
25
|
## 🚀 Quick Start
|
|
24
26
|
|
|
@@ -31,7 +33,7 @@
|
|
|
31
33
|
### Installation
|
|
32
34
|
|
|
33
35
|
```bash
|
|
34
|
-
git clone https://github.com/neverinfamous/
|
|
36
|
+
git clone https://github.com/neverinfamous/postgresql-mcp.git
|
|
35
37
|
cd postgres-mcp
|
|
36
38
|
npm install
|
|
37
39
|
npm run build
|
|
@@ -42,19 +44,29 @@ node dist/cli.js --transport stdio --postgres postgres://user:password@localhost
|
|
|
42
44
|
|
|
43
45
|
## Development
|
|
44
46
|
|
|
47
|
+
**Clone and install:**
|
|
48
|
+
|
|
45
49
|
```bash
|
|
46
|
-
|
|
47
|
-
git clone https://github.com/neverinfamous/postgres-mcp.git
|
|
50
|
+
git clone https://github.com/neverinfamous/postgresql-mcp.git
|
|
48
51
|
cd postgres-mcp
|
|
49
52
|
npm install
|
|
53
|
+
```
|
|
50
54
|
|
|
51
|
-
|
|
55
|
+
**Build:**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
52
58
|
npm run build
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Run checks:**
|
|
53
62
|
|
|
54
|
-
|
|
63
|
+
```bash
|
|
55
64
|
npm run lint && npm run typecheck
|
|
65
|
+
```
|
|
56
66
|
|
|
57
|
-
|
|
67
|
+
**Test CLI:**
|
|
68
|
+
|
|
69
|
+
```bash
|
|
58
70
|
node dist/cli.js info
|
|
59
71
|
node dist/cli.js list-tools
|
|
60
72
|
```
|
|
@@ -160,12 +172,15 @@ The `vm` mode is fully functional and is the default. No configuration needed.
|
|
|
160
172
|
|
|
161
173
|
📖 **Full documentation:** [docs/CODE_MODE.md](docs/CODE_MODE.md)
|
|
162
174
|
|
|
175
|
+
> [!NOTE]
|
|
176
|
+
> **AntiGravity Users:** Server instructions are automatically sent to MCP clients during initialization. However, AntiGravity does not currently support MCP server instructions. For optimal Code Mode usage in AntiGravity, manually provide the contents of [`src/constants/ServerInstructions.ts`](src/constants/ServerInstructions.ts) to the agent in your prompt or user rules.
|
|
177
|
+
|
|
163
178
|
---
|
|
164
179
|
|
|
165
180
|
## 🛠️ Tool Filtering
|
|
166
181
|
|
|
167
182
|
> [!IMPORTANT]
|
|
168
|
-
> AI IDEs like Cursor have tool limits. With
|
|
183
|
+
> AI IDEs like Cursor have tool limits. With 204 tools available, you MUST use tool filtering to stay within your IDE's limits. We recommend `starter` (58 tools) as a starting point. Code Mode is included in all presets by default for 70-90% token savings on multi-step operations.
|
|
169
184
|
|
|
170
185
|
### What Can You Filter?
|
|
171
186
|
|
|
@@ -182,26 +197,30 @@ All shortcuts and tool groups include **Code Mode** (`pg_execute_code`) by defau
|
|
|
182
197
|
|
|
183
198
|
### Shortcuts (Predefined Bundles)
|
|
184
199
|
|
|
200
|
+
> Tool counts include Code Mode (`pg_execute_code`) which is included in all presets by default.
|
|
201
|
+
|
|
185
202
|
| Shortcut | Tools | Use Case | What's Included |
|
|
186
203
|
| -------------- | ------ | ------------------------ | -------------------------------------------------------- |
|
|
187
204
|
| `starter` | **58** | 🌟 **Recommended** | Core, trans, JSONB, schema, codemode |
|
|
188
205
|
| `essential` | 46 | Minimal footprint | Core, trans, JSONB, codemode |
|
|
189
206
|
| `dev-power` | 53 | Power Developer | Core, trans, schema, stats, part, codemode |
|
|
190
207
|
| `ai-data` | 59 | AI Data Analyst | Core, JSONB, text, trans, codemode |
|
|
191
|
-
| `ai-vector` |
|
|
208
|
+
| `ai-vector` | 48 | AI/ML with pgvector | Core, vector, trans, part, codemode |
|
|
192
209
|
| `dba-monitor` | 58 | DBA Monitoring | Core, monitoring, perf, trans, codemode |
|
|
193
210
|
| `dba-manage` | 57 | DBA Management | Core, admin, backup, part, schema, codemode |
|
|
194
211
|
| `dba-stats` | 56 | DBA Stats/Security | Core, admin, monitoring, trans, stats, codemode |
|
|
195
212
|
| `geo` | 42 | Geospatial Workloads | Core, PostGIS, trans, codemode |
|
|
196
213
|
| `base-core` | 58 | Base Building Block | Core, JSONB, trans, schema, codemode |
|
|
197
214
|
| `base-ops` | 51 | Operations Block | Admin, monitoring, backup, part, stats, citext, codemode |
|
|
198
|
-
| `ext-ai` |
|
|
215
|
+
| `ext-ai` | 25 | Extension: AI/Security | pgvector, pgcrypto, codemode |
|
|
199
216
|
| `ext-geo` | 24 | Extension: Spatial | PostGIS, ltree, codemode |
|
|
200
217
|
| `ext-schedule` | 19 | Extension: Scheduling | pg_cron, pg_partman, codemode |
|
|
201
218
|
| `ext-perf` | 28 | Extension: Perf/Analysis | pg_stat_kcache, performance, codemode |
|
|
202
219
|
|
|
203
220
|
### Tool Groups (20 Available)
|
|
204
221
|
|
|
222
|
+
> Tool counts include Code Mode (`pg_execute_code`) which is added to all groups by default.
|
|
223
|
+
|
|
205
224
|
| Group | Tools | Description |
|
|
206
225
|
| -------------- | ----- | ----------------------------------------------------------- |
|
|
207
226
|
| `core` | 21 | Read/write queries, tables, indexes, convenience/drop tools |
|
|
@@ -215,7 +234,7 @@ All shortcuts and tool groups include **Code Mode** (`pg_execute_code`) by defau
|
|
|
215
234
|
| `schema` | 13 | Schemas, views, sequences, functions, triggers |
|
|
216
235
|
| `partitioning` | 7 | Native partition management |
|
|
217
236
|
| `stats` | 9 | Statistical analysis |
|
|
218
|
-
| `vector` |
|
|
237
|
+
| `vector` | 16 | pgvector (AI/ML similarity search) |
|
|
219
238
|
| `postgis` | 16 | PostGIS (geospatial) |
|
|
220
239
|
| `cron` | 9 | pg_cron (job scheduling) |
|
|
221
240
|
| `partman` | 11 | pg_partman (auto-partitioning) |
|
|
@@ -259,7 +278,7 @@ Add one of these configurations to your IDE's MCP settings file:
|
|
|
259
278
|
}
|
|
260
279
|
```
|
|
261
280
|
|
|
262
|
-
#### Option 2: AI Vector (
|
|
281
|
+
#### Option 2: AI Vector (48 Tools + pgvector)
|
|
263
282
|
|
|
264
283
|
**Best for:** AI/ML workloads with semantic search and vector similarity.
|
|
265
284
|
|
|
@@ -332,15 +351,17 @@ node dist/cli.js \
|
|
|
332
351
|
--oauth-audience postgres-mcp-client
|
|
333
352
|
```
|
|
334
353
|
|
|
335
|
-
**Environment Variables:**
|
|
354
|
+
**Environment Variables (Required):**
|
|
336
355
|
|
|
337
356
|
```bash
|
|
338
|
-
# Required
|
|
339
357
|
OAUTH_ENABLED=true
|
|
340
358
|
OAUTH_ISSUER=http://localhost:8080/realms/postgres-mcp
|
|
341
359
|
OAUTH_AUDIENCE=postgres-mcp-client
|
|
360
|
+
```
|
|
342
361
|
|
|
343
|
-
|
|
362
|
+
**Environment Variables (Optional — auto-discovered from issuer):**
|
|
363
|
+
|
|
364
|
+
```bash
|
|
344
365
|
OAUTH_JWKS_URI=http://localhost:8080/realms/postgres-mcp/protocol/openid-connect/certs
|
|
345
366
|
OAUTH_CLOCK_TOLERANCE=60
|
|
346
367
|
```
|
|
@@ -453,7 +474,7 @@ This server provides **20 resources** for structured data access:
|
|
|
453
474
|
| `pg_trgm` | Text similarity | `pg_trigram_similarity` |
|
|
454
475
|
| `fuzzystrmatch` | Fuzzy matching | `pg_fuzzy_match` |
|
|
455
476
|
| `hypopg` | Hypothetical indexes | `pg_index_recommendations` |
|
|
456
|
-
| `pgvector` | Vector similarity search |
|
|
477
|
+
| `pgvector` | Vector similarity search | 15 vector tools |
|
|
457
478
|
| `PostGIS` | Geospatial operations | 15 postgis tools |
|
|
458
479
|
| `pg_cron` | Job scheduling | 8 cron tools |
|
|
459
480
|
| `pg_partman` | Automated partition management | 10 partman tools |
|
|
@@ -487,7 +508,7 @@ This server provides **20 resources** for structured data access:
|
|
|
487
508
|
## 🏆 Why Choose postgres-mcp?
|
|
488
509
|
|
|
489
510
|
✅ **TypeScript Native** - Full type safety with strict mode
|
|
490
|
-
✅ **
|
|
511
|
+
✅ **204 Specialized Tools** - Comprehensive PostgreSQL coverage
|
|
491
512
|
✅ **Tool Annotations** - UX hints for read-only, destructive, and idempotent operations
|
|
492
513
|
✅ **Connection Pooling** - Efficient PostgreSQL connection management
|
|
493
514
|
✅ **Extension Support** - pgvector, PostGIS, pg_stat_statements, pg_cron
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAO,EACpC,YAAY,SAAI,GACf,WAAW,CAMb;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,EACf,UAAU,UAAQ,GACjB,UAAU,CAQZ;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,SAAW,EACrB,QAAQ,SAAM,GACb,SAAS,CAiBX;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,GACpB,SAAS,CASX;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,CAMjD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,UAAO,GAAG,YAAY,CAarE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,eAAe,CAAC,GAAG;IACtE,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,gBAAgB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,iBAAiB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACrC,WAAW,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CACrC,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAO,EACpC,YAAY,SAAI,GACf,WAAW,CAMb;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,EACf,UAAU,UAAQ,GACjB,UAAU,CAQZ;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,SAAW,EACrB,QAAQ,SAAM,GACb,SAAS,CAiBX;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,GACpB,SAAS,CASX;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,CAMjD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,UAAO,GAAG,YAAY,CAarE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,eAAe,CAAC,GAAG;IACtE,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,gBAAgB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,iBAAiB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACrC,WAAW,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CACrC,CA8EA;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAKA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,EACrD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,UAAU,CAC1D,OAAO,yBAAyB,CACjC,CAaA;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,YAAY,SAA+B,GAC1C,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAY9C;AAED;;GAEG;AACH,wBAAgB,wCAAwC,IAAI,UAAU,CACpE,OAAO,yBAAyB,CACjC,GAAG;IACF,cAAc,EAAE;QACd,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACnC,CAAC;CACH,CAaA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/__tests__/mocks/adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/__tests__/mocks/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -98,13 +98,9 @@ export declare abstract class DatabaseAdapter {
|
|
|
98
98
|
registerTools(server: McpServer, enabledTools: Set<string>): void;
|
|
99
99
|
/**
|
|
100
100
|
* Register a single tool with the MCP server
|
|
101
|
+
* Uses modern registerTool() API for MCP 2025-11-25 compliance
|
|
101
102
|
*/
|
|
102
103
|
protected registerTool(server: McpServer, tool: ToolDefinition): void;
|
|
103
|
-
/**
|
|
104
|
-
* Extract the Zod shape from a schema, handling complex pipelines
|
|
105
|
-
* Traverses through: preprocess, transform, effects, refine, pipe
|
|
106
|
-
*/
|
|
107
|
-
private extractZodShape;
|
|
108
104
|
/**
|
|
109
105
|
* Register resources with the MCP server
|
|
110
106
|
*/
|
|
@@ -129,8 +125,11 @@ export declare abstract class DatabaseAdapter {
|
|
|
129
125
|
validateQuery(sql: string, isReadOnly: boolean): void;
|
|
130
126
|
/**
|
|
131
127
|
* Create a request context for tool execution
|
|
128
|
+
* @param requestId Optional request ID for tracing
|
|
129
|
+
* @param server Optional MCP Server instance for progress notifications
|
|
130
|
+
* @param progressToken Optional progress token from client request _meta
|
|
132
131
|
*/
|
|
133
|
-
createContext(requestId?: string): RequestContext;
|
|
132
|
+
createContext(requestId?: string, server?: unknown, progressToken?: string | number): RequestContext;
|
|
134
133
|
/**
|
|
135
134
|
* Get adapter info for logging/debugging
|
|
136
135
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/DatabaseAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,8BAAsB,eAAe;IACnC,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAErC,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAElC,uBAAuB;IACvB,SAAS,CAAC,SAAS,UAAS;IAM5B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAM3C;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CACvB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CACxB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAM5E;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAE3C;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAE7D;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMzC;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI,mBAAmB;IAE/C;;OAEG;IACH,QAAQ,CAAC,sBAAsB,IAAI,SAAS,EAAE;IAM9C;;OAEG;IACH,QAAQ,CAAC,kBAAkB,IAAI,cAAc,EAAE;IAE/C;;OAEG;IACH,QAAQ,CAAC,sBAAsB,IAAI,kBAAkB,EAAE;IAEvD;;OAEG;IACH,QAAQ,CAAC,oBAAoB,IAAI,gBAAgB,EAAE;IAEnD;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAiBjE
|
|
1
|
+
{"version":3,"file":"DatabaseAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/DatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,64 +36,75 @@ export class DatabaseAdapter {
|
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Register a single tool with the MCP server
|
|
39
|
+
* Uses modern registerTool() API for MCP 2025-11-25 compliance
|
|
39
40
|
*/
|
|
40
41
|
registerTool(server, tool) {
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const zodShape = this.extractZodShape(tool.inputSchema);
|
|
45
|
-
// Build metadata object with annotations and icons
|
|
46
|
-
const metadata = {
|
|
47
|
-
...(tool.annotations ?? {}),
|
|
42
|
+
// Build tool options for registerTool()
|
|
43
|
+
const toolOptions = {
|
|
44
|
+
description: tool.description,
|
|
48
45
|
};
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
// Pass full inputSchema (not just .shape) for proper validation
|
|
47
|
+
if (tool.inputSchema !== undefined) {
|
|
48
|
+
toolOptions["inputSchema"] = tool.inputSchema;
|
|
51
49
|
}
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
zodShape,
|
|
56
|
-
// Pass annotations and icons (SDK 1.25+)
|
|
57
|
-
metadata, async (params) => {
|
|
58
|
-
const context = this.createContext();
|
|
59
|
-
const result = await tool.handler(params, context);
|
|
60
|
-
return {
|
|
61
|
-
content: [
|
|
62
|
-
{
|
|
63
|
-
type: "text",
|
|
64
|
-
text: typeof result === "string"
|
|
65
|
-
? result
|
|
66
|
-
: JSON.stringify(result, null, 2),
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
};
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Extract the Zod shape from a schema, handling complex pipelines
|
|
74
|
-
* Traverses through: preprocess, transform, effects, refine, pipe
|
|
75
|
-
*/
|
|
76
|
-
extractZodShape(schema) {
|
|
77
|
-
if (schema === null || schema === undefined) {
|
|
78
|
-
return {};
|
|
50
|
+
// MCP 2025-11-25: Pass outputSchema for structured responses
|
|
51
|
+
if (tool.outputSchema !== undefined) {
|
|
52
|
+
toolOptions["outputSchema"] = tool.outputSchema;
|
|
79
53
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return s.shape;
|
|
54
|
+
// MCP 2025-11-25: Pass annotations for behavioral hints
|
|
55
|
+
if (tool.annotations) {
|
|
56
|
+
toolOptions["annotations"] = tool.annotations;
|
|
84
57
|
}
|
|
85
|
-
//
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
58
|
+
// Pass icons if defined (SDK 1.25+)
|
|
59
|
+
if (tool.icons && tool.icons.length > 0) {
|
|
60
|
+
toolOptions["icons"] = tool.icons;
|
|
61
|
+
}
|
|
62
|
+
// Track whether tool has outputSchema for response handling
|
|
63
|
+
const hasOutputSchema = Boolean(tool.outputSchema);
|
|
64
|
+
server.registerTool(tool.name, toolOptions, async (args, extra) => {
|
|
65
|
+
try {
|
|
66
|
+
// Extract progressToken from extra._meta (SDK passes RequestHandlerExtra)
|
|
67
|
+
const extraMeta = extra;
|
|
68
|
+
const progressToken = extraMeta?._meta?.progressToken;
|
|
69
|
+
// Create context with progress support
|
|
70
|
+
const context = this.createContext(undefined, server.server, progressToken);
|
|
71
|
+
const result = await tool.handler(args, context);
|
|
72
|
+
// MCP 2025-11-25: Return structuredContent if outputSchema present
|
|
73
|
+
if (hasOutputSchema) {
|
|
74
|
+
return {
|
|
75
|
+
content: [
|
|
76
|
+
{
|
|
77
|
+
type: "text",
|
|
78
|
+
text: JSON.stringify(result, null, 2),
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
structuredContent: result,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Standard text content response
|
|
85
|
+
return {
|
|
86
|
+
content: [
|
|
87
|
+
{
|
|
88
|
+
type: "text",
|
|
89
|
+
text: typeof result === "string"
|
|
90
|
+
? result
|
|
91
|
+
: JSON.stringify(result, null, 2),
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
};
|
|
90
95
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
catch (error) {
|
|
97
|
+
return {
|
|
98
|
+
content: [
|
|
99
|
+
{
|
|
100
|
+
type: "text",
|
|
101
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
isError: true,
|
|
105
|
+
};
|
|
94
106
|
}
|
|
95
|
-
}
|
|
96
|
-
return {};
|
|
107
|
+
});
|
|
97
108
|
}
|
|
98
109
|
/**
|
|
99
110
|
* Register resources with the MCP server
|
|
@@ -226,12 +237,22 @@ export class DatabaseAdapter {
|
|
|
226
237
|
}
|
|
227
238
|
/**
|
|
228
239
|
* Create a request context for tool execution
|
|
240
|
+
* @param requestId Optional request ID for tracing
|
|
241
|
+
* @param server Optional MCP Server instance for progress notifications
|
|
242
|
+
* @param progressToken Optional progress token from client request _meta
|
|
229
243
|
*/
|
|
230
|
-
createContext(requestId) {
|
|
231
|
-
|
|
244
|
+
createContext(requestId, server, progressToken) {
|
|
245
|
+
const context = {
|
|
232
246
|
timestamp: new Date(),
|
|
233
247
|
requestId: requestId ?? crypto.randomUUID(),
|
|
234
248
|
};
|
|
249
|
+
if (server !== undefined) {
|
|
250
|
+
context.server = server;
|
|
251
|
+
}
|
|
252
|
+
if (progressToken !== undefined) {
|
|
253
|
+
context.progressToken = progressToken;
|
|
254
|
+
}
|
|
255
|
+
return context;
|
|
235
256
|
}
|
|
236
257
|
/**
|
|
237
258
|
* Get adapter info for logging/debugging
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseAdapter.js","sourceRoot":"","sources":["../../src/adapters/DatabaseAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgB5C;;GAEG;AACH,MAAM,OAAgB,eAAe;IAUnC,uBAAuB;IACb,SAAS,GAAG,KAAK,CAAC;IAiB5B;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAgGD;;;;OAIG;IACH,aAAa,CAAC,MAAiB,EAAE,YAAyB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAChC,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CACT,cAAc,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,EAClF,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"DatabaseAdapter.js","sourceRoot":"","sources":["../../src/adapters/DatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,19 @@ export declare class PostgresAdapter extends DatabaseAdapter {
|
|
|
67
67
|
* Get connection for a transaction
|
|
68
68
|
*/
|
|
69
69
|
getTransactionConnection(transactionId: string): PoolClient | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Get all active transaction IDs
|
|
72
|
+
* Used by code mode to track transactions started during execution
|
|
73
|
+
*/
|
|
74
|
+
getActiveTransactionIds(): string[];
|
|
75
|
+
/**
|
|
76
|
+
* Rollback and cleanup a specific transaction by ID
|
|
77
|
+
* Used for cleaning up orphaned transactions after code mode errors
|
|
78
|
+
*
|
|
79
|
+
* @param transactionId - The transaction ID to cleanup
|
|
80
|
+
* @returns true if transaction was found and cleaned up, false if not found
|
|
81
|
+
*/
|
|
82
|
+
cleanupTransaction(transactionId: string): Promise<boolean>;
|
|
70
83
|
getSchema(): Promise<SchemaInfo>;
|
|
71
84
|
/**
|
|
72
85
|
* Get all indexes across all user tables in a single query
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgresql/PostgresAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,EAET,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACV,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PostgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgresql/PostgresAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,EAET,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAoD9B,qBAAa,eAAgB,SAAQ,eAAe;IAClD,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,kBAAkB,CAAiC;IAG3D,OAAO,CAAC,qBAAqB,CAAiC;IAG9D,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,UAAU,CAAwB;IAE1C;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAQpB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAelC,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC;IAKjB,iBAAiB,CACrB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC;IAKjB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAgCzE;;OAEG;IACG,mBAAmB,CACvB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC;IAuBvB;;OAEG;IACG,gBAAgB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBhE;;OAEG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D;;OAEG;IACG,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/D;;OAEG;IACG,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAShB;;OAEG;IACG,gBAAgB,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAShB;;OAEG;IACG,mBAAmB,CACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACH,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvE;;;OAGG;IACH,uBAAuB,IAAI,MAAM,EAAE;IAInC;;;;;;OAMG;IACG,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqC3D,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBtC;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAqD3C;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2BvB,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmDlC,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,GACpB,OAAO,CAAC,SAAS,CAAC;IAmQf,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYtC;;OAEG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC;IA+CvB;;OAEG;IACG,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBnE,eAAe,IAAI,mBAAmB;IAgBtC,sBAAsB,IAAI,SAAS,EAAE;IA6BrC,kBAAkB,IAAI,cAAc,EAAE;IAgCtC,sBAAsB,IAAI,kBAAkB,EAAE;IAI9C,oBAAoB,IAAI,gBAAgB,EAAE;IAQ1C;;OAEG;IACH,OAAO,IAAI,cAAc,GAAG,IAAI;CAGjC"}
|
|
@@ -8,6 +8,7 @@ import { DatabaseAdapter } from "../DatabaseAdapter.js";
|
|
|
8
8
|
import { ConnectionPool } from "../../pool/ConnectionPool.js";
|
|
9
9
|
import { ConnectionError, QueryError, TransactionError, } from "../../types/index.js";
|
|
10
10
|
import { logger } from "../../utils/logger.js";
|
|
11
|
+
import { quoteIdentifier } from "../../utils/identifiers.js";
|
|
11
12
|
// Import tool modules (will be created next)
|
|
12
13
|
import { getCoreTools } from "./tools/core/index.js";
|
|
13
14
|
import { getTransactionTools } from "./tools/transactions.js";
|
|
@@ -262,7 +263,7 @@ export class PostgresAdapter extends DatabaseAdapter {
|
|
|
262
263
|
if (!client) {
|
|
263
264
|
throw new TransactionError(`Transaction not found: ${transactionId}`);
|
|
264
265
|
}
|
|
265
|
-
await client.query(`SAVEPOINT ${savepointName}`);
|
|
266
|
+
await client.query(`SAVEPOINT ${quoteIdentifier(savepointName)}`);
|
|
266
267
|
}
|
|
267
268
|
/**
|
|
268
269
|
* Release a savepoint
|
|
@@ -272,7 +273,7 @@ export class PostgresAdapter extends DatabaseAdapter {
|
|
|
272
273
|
if (!client) {
|
|
273
274
|
throw new TransactionError(`Transaction not found: ${transactionId}`);
|
|
274
275
|
}
|
|
275
|
-
await client.query(`RELEASE SAVEPOINT ${savepointName}`);
|
|
276
|
+
await client.query(`RELEASE SAVEPOINT ${quoteIdentifier(savepointName)}`);
|
|
276
277
|
}
|
|
277
278
|
/**
|
|
278
279
|
* Rollback to a savepoint
|
|
@@ -282,7 +283,7 @@ export class PostgresAdapter extends DatabaseAdapter {
|
|
|
282
283
|
if (!client) {
|
|
283
284
|
throw new TransactionError(`Transaction not found: ${transactionId}`);
|
|
284
285
|
}
|
|
285
|
-
await client.query(`ROLLBACK TO SAVEPOINT ${savepointName}`);
|
|
286
|
+
await client.query(`ROLLBACK TO SAVEPOINT ${quoteIdentifier(savepointName)}`);
|
|
286
287
|
}
|
|
287
288
|
/**
|
|
288
289
|
* Get connection for a transaction
|
|
@@ -290,6 +291,50 @@ export class PostgresAdapter extends DatabaseAdapter {
|
|
|
290
291
|
getTransactionConnection(transactionId) {
|
|
291
292
|
return this.activeTransactions.get(transactionId);
|
|
292
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Get all active transaction IDs
|
|
296
|
+
* Used by code mode to track transactions started during execution
|
|
297
|
+
*/
|
|
298
|
+
getActiveTransactionIds() {
|
|
299
|
+
return Array.from(this.activeTransactions.keys());
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Rollback and cleanup a specific transaction by ID
|
|
303
|
+
* Used for cleaning up orphaned transactions after code mode errors
|
|
304
|
+
*
|
|
305
|
+
* @param transactionId - The transaction ID to cleanup
|
|
306
|
+
* @returns true if transaction was found and cleaned up, false if not found
|
|
307
|
+
*/
|
|
308
|
+
async cleanupTransaction(transactionId) {
|
|
309
|
+
const client = this.activeTransactions.get(transactionId);
|
|
310
|
+
if (!client) {
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
try {
|
|
314
|
+
await client.query("ROLLBACK");
|
|
315
|
+
client.release();
|
|
316
|
+
this.activeTransactions.delete(transactionId);
|
|
317
|
+
logger.warn(`Cleaned up orphaned transaction during code mode error recovery: ${transactionId}`, { module: "CODEMODE" });
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
// Best effort cleanup - log and continue
|
|
322
|
+
logger.error("Failed to cleanup orphaned transaction", {
|
|
323
|
+
module: "CODEMODE",
|
|
324
|
+
error: error instanceof Error ? error.message : String(error),
|
|
325
|
+
transactionId,
|
|
326
|
+
});
|
|
327
|
+
// Still try to release the client
|
|
328
|
+
try {
|
|
329
|
+
client.release(true); // Force release with error
|
|
330
|
+
this.activeTransactions.delete(transactionId);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Ignore - connection may be broken
|
|
334
|
+
}
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
293
338
|
// =========================================================================
|
|
294
339
|
// Schema Operations
|
|
295
340
|
// =========================================================================
|