awslabs.postgres-mcp-server 1.0.11__tar.gz → 1.0.13__tar.gz
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.
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/PKG-INFO +3 -3
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/__init__.py +1 -1
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/server.py +2 -2
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/kiro_power/POWER.md +17 -10
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/kiro_power/steering/aurora-postgres-mcp.md +0 -8
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/kiro_power/steering/aurora-postgres.md +0 -9
- awslabs_postgres_mcp_server-1.0.13/kiro_proj_steering/tech.md +168 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/pyproject.toml +3 -3
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/uv.lock +62 -7
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/.gitignore +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/.python-version +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/CHANGELOG.md +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/Dockerfile +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/LICENSE +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/NOTICE +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/README.md +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/__init__.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/connection/__init__.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/connection/abstract_db_connection.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/connection/cp_api_connection.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/connection/db_connection_map.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/connection/psycopg_pool_connection.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/connection/rds_api_connection.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/postgres_mcp_server/mutable_sql_detector.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/docker-healthcheck.sh +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/kiro_power/mcp.json +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/conftest.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_abstract_db_connection.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_cp_api_connection.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_cp_api_iam_policy.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_cp_api_simple_functions.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_db_connection_map.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_psycopg_connector.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_rds_api_connection.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_server.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_server_error_handling.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_server_helpers.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_server_internal_functions.py +0 -0
- {awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/uv-requirements.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: awslabs.postgres-mcp-server
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.13
|
|
4
4
|
Summary: An AWS Labs Model Context Protocol (MCP) server for postgres
|
|
5
5
|
Project-URL: homepage, https://awslabs.github.io/mcp/
|
|
6
6
|
Project-URL: docs, https://awslabs.github.io/mcp/servers/postgres-mcp-server/
|
|
@@ -25,8 +25,8 @@ Requires-Dist: aiorwlock
|
|
|
25
25
|
Requires-Dist: boto3>=1.42.4
|
|
26
26
|
Requires-Dist: botocore>1.42.4
|
|
27
27
|
Requires-Dist: loguru>=0.7.0
|
|
28
|
-
Requires-Dist: mcp[cli]>=1.
|
|
29
|
-
Requires-Dist: psycopg[pool]>=3.1.12
|
|
28
|
+
Requires-Dist: mcp[cli]>=1.23.0
|
|
29
|
+
Requires-Dist: psycopg[binary,pool]>=3.1.12
|
|
30
30
|
Requires-Dist: pydantic>=2.10.6
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
|
|
@@ -238,7 +238,7 @@ async def get_table_schema(
|
|
|
238
238
|
)
|
|
239
239
|
)
|
|
240
240
|
|
|
241
|
-
sql = """
|
|
241
|
+
sql = f"""
|
|
242
242
|
SELECT
|
|
243
243
|
a.attname AS column_name,
|
|
244
244
|
pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type,
|
|
@@ -246,7 +246,7 @@ async def get_table_schema(
|
|
|
246
246
|
FROM
|
|
247
247
|
pg_attribute a
|
|
248
248
|
WHERE
|
|
249
|
-
a.attrelid = to_regclass(
|
|
249
|
+
a.attrelid = to_regclass('{table_name}')
|
|
250
250
|
AND a.attnum > 0
|
|
251
251
|
AND NOT a.attisdropped
|
|
252
252
|
ORDER BY a.attnum
|
{awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/kiro_power/POWER.md
RENAMED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "aurora-
|
|
3
|
-
displayName: "Aurora
|
|
4
|
-
description: "
|
|
5
|
-
keywords: ["aurora", "postgresql", "database", "aws", "rds"]
|
|
6
|
-
author: "
|
|
2
|
+
name: "amazon-aurora-postgresql"
|
|
3
|
+
displayName: "Build applications with Aurora PostgreSQL"
|
|
4
|
+
description: "Build applications backed by Aurora PostgreSQL by leveraging this power. It bundles direct database connectivity through the Aurora PostgreSQL MCP server for data plane operations (queries, table creation, schema management), and control plane operations (cluster creation), The steering file helps with Aurora PostgreSQL specific best practices. When developers work on database tasks, the power dynamically loads relevant guidance - whether creating new Aurora clusters, designing schemas, or optimizing queries - so Kiro agent receives only the context needed for the specific task at hand."
|
|
5
|
+
keywords: ["aurora", "postgresql", "aurora-postgresql", "amazon", "serverless", "rds-postgresql", "postgres", "AWSforData", "Analytics", "database", "aws", "rds"]
|
|
6
|
+
author: "AWS"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Aurora Postgres Power
|
|
10
10
|
|
|
11
11
|
## Overview
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Build database-backed applications with Aurora PostgreSQL through seamless MCP server integration. This power provides:
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
- Data Plane Operations: Execute queries, create tables, and manage schemas through direct database connectivity
|
|
16
|
+
- Control Plane Operations: Create and manage Aurora clusters programmatically
|
|
17
|
+
- Context-Aware Guidance: The steering file dynamically loads Aurora PostgreSQL best practices relevant to your current task—whether designing schemas, optimizing queries, or provisioning clusters—ensuring Kiro receives only the context it needs
|
|
18
|
+
This power combines comprehensive guidance for database design, query optimization, schema management, and operational excellence with direct MCP integration for both provisioned instances and Aurora Serverless v2
|
|
16
19
|
|
|
17
20
|
## Available Steering Files
|
|
18
21
|
|
|
@@ -31,6 +34,8 @@ This power uses the **awslabs.postgres-mcp-server** MCP server to provide direct
|
|
|
31
34
|
|
|
32
35
|
The MCP server provides tools for:
|
|
33
36
|
- **Cluster Management**: Create clusters, monitor job status
|
|
37
|
+
-- database cluster creation take about 5 to 10 minutes after create_cluster tool call
|
|
38
|
+
-- get_job_status tool should be run every minute or so. Running it every few seconds is excessive and may feel like a stuck loop.
|
|
34
39
|
- **Database Connections**: Connect to databases, manage multiple connections
|
|
35
40
|
- **Query Execution**: Run SQL queries with safety guardrails
|
|
36
41
|
- **Schema Exploration**: Get table schemas and metadata
|
|
@@ -40,10 +45,10 @@ The MCP server provides tools for:
|
|
|
40
45
|
**Connecting to a Database:**
|
|
41
46
|
```
|
|
42
47
|
Call mcp_postgres_connect_to_database with:
|
|
43
|
-
- database_type: "APG" (Aurora Postgres)
|
|
48
|
+
- database_type: "APG" (Aurora Postgres) or "RPG" (RDS Postgres)
|
|
44
49
|
- connection_method: "rdsapi", "pgwire", or "pgwire_iam"
|
|
45
50
|
- cluster_identifier: your cluster name
|
|
46
|
-
- db_endpoint:
|
|
51
|
+
- db_endpoint: database instance endpoint, not needed when connection_method is rdsapi
|
|
47
52
|
- database: database name
|
|
48
53
|
- port: 5432
|
|
49
54
|
- region: AWS region
|
|
@@ -58,6 +63,7 @@ Call mcp_postgres_get_database_connection_info to see all active connections
|
|
|
58
63
|
|
|
59
64
|
**Running Queries:**
|
|
60
65
|
```
|
|
66
|
+
Call mcp_postgres_run_query using results from mcp_postgres_connect_to_database call
|
|
61
67
|
Call mcp_postgres_run_query with:
|
|
62
68
|
- connection_method: same as connection
|
|
63
69
|
- cluster_identifier: your cluster
|
|
@@ -68,10 +74,11 @@ Call mcp_postgres_run_query with:
|
|
|
68
74
|
```
|
|
69
75
|
|
|
70
76
|
**Safety Guidelines:**
|
|
71
|
-
- Read-only by default - writes
|
|
77
|
+
- Read-only by default - writes requires adding "--allow_write_query" to mcp.json and "RUN IT"
|
|
72
78
|
- Always use LIMIT on browsing queries
|
|
73
79
|
- Run EXPLAIN plans before heavy queries
|
|
74
80
|
- Bound queries with WHERE predicates
|
|
81
|
+
-
|
|
75
82
|
|
|
76
83
|
## Common Workflows
|
|
77
84
|
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
inclusion: always
|
|
3
|
-
---
|
|
4
|
-
<!------------------------------------------------------------------------------------
|
|
5
|
-
Add rules to this file or a short description that will apply across all your workspaces.
|
|
6
|
-
|
|
7
|
-
Learn about inclusion modes: https://kiro.dev/docs/steering/#inclusion-modes
|
|
8
|
-
------------------------------------------------------------------------------------->
|
|
9
1
|
# Aurora Postgres MCP — Steering
|
|
10
2
|
|
|
11
3
|
## Purpose
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
inclusion: always
|
|
3
|
-
---
|
|
4
|
-
<!------------------------------------------------------------------------------------
|
|
5
|
-
Add rules to this file or a short description that will apply across all your workspaces.
|
|
6
|
-
|
|
7
|
-
Learn about inclusion modes: https://kiro.dev/docs/steering/#inclusion-modes
|
|
8
|
-
------------------------------------------------------------------------------------->
|
|
9
|
-
|
|
10
1
|
# Aurora PostgreSQL Development Guide
|
|
11
2
|
|
|
12
3
|
Best practices for Aurora PostgreSQL development using MCP server. Covers provisioned instances and Aurora Serverless v2.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Technology Stack
|
|
2
|
+
|
|
3
|
+
## AWS Services
|
|
4
|
+
|
|
5
|
+
### Aurora PostgreSQL
|
|
6
|
+
|
|
7
|
+
**Cluster Creation:**
|
|
8
|
+
- Region: `us-east-2`
|
|
9
|
+
- DB cluster can take several minutes to create (5 to 7 minutes). Use get_job_status every minute, instead of every few seconds.
|
|
10
|
+
|
|
11
|
+
**Database Connection:**
|
|
12
|
+
- **PREFERRED**: Use RDS Data API (no network connectivity required, works through AWS API)
|
|
13
|
+
- **ALTERNATIVE**: Use IAM authentication with `pgwire` connection method (requires network access to cluster)
|
|
14
|
+
|
|
15
|
+
**RDS Data API Connection (Recommended):**
|
|
16
|
+
- Use `@aws-sdk/client-rds-data` for database operations
|
|
17
|
+
- Use `@aws-sdk/credential-providers` with `fromNodeProviderChain()` for credentials
|
|
18
|
+
- **CRITICAL**: `fromNodeProviderChain()` requires AWS credentials as environment variables
|
|
19
|
+
- **Preferred**: Use `.env` file with `dotenv` package for credentials: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`
|
|
20
|
+
- Add `dotenv` to dependencies and load at top of server: `import 'dotenv/config';`
|
|
21
|
+
- Create `.env.example` template for users to copy
|
|
22
|
+
- Store cluster ARN and secret ARN in `.env` file
|
|
23
|
+
|
|
24
|
+
**Environment Variables for RDS Data API:**
|
|
25
|
+
```bash
|
|
26
|
+
AWS_ACCESS_KEY_ID=your_access_key
|
|
27
|
+
AWS_SECRET_ACCESS_KEY=your_secret_key
|
|
28
|
+
AWS_SESSION_TOKEN=your_session_token
|
|
29
|
+
CLUSTER_ARN=arn:aws:rds:us-east-2:account-id:cluster:cluster-name
|
|
30
|
+
SECRET_ARN=arn:aws:secretsmanager:us-east-2:account-id:secret:secret-name
|
|
31
|
+
DATABASE=postgres
|
|
32
|
+
AWS_REGION=us-east-2
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Node.js RDS Data API Pattern:**
|
|
36
|
+
```javascript
|
|
37
|
+
import 'dotenv/config';
|
|
38
|
+
import { RDSDataClient, ExecuteStatementCommand } from '@aws-sdk/client-rds-data';
|
|
39
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
40
|
+
|
|
41
|
+
const rdsClient = new RDSDataClient({
|
|
42
|
+
region: process.env.AWS_REGION,
|
|
43
|
+
credentials: fromNodeProviderChain()
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const dbConfig = {
|
|
47
|
+
resourceArn: process.env.CLUSTER_ARN,
|
|
48
|
+
secretArn: process.env.SECRET_ARN,
|
|
49
|
+
database: process.env.DATABASE
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
async function executeQuery(sql, parameters = []) {
|
|
53
|
+
const command = new ExecuteStatementCommand({
|
|
54
|
+
...dbConfig,
|
|
55
|
+
sql,
|
|
56
|
+
parameters,
|
|
57
|
+
includeResultMetadata: true // CRITICAL: Required to get column names
|
|
58
|
+
});
|
|
59
|
+
return await rdsClient.send(command);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function formatRecords(records, columnMetadata) {
|
|
63
|
+
if (!records || !records.length || !columnMetadata) return [];
|
|
64
|
+
return records.map(record => {
|
|
65
|
+
const row = {};
|
|
66
|
+
record.forEach((field, index) => {
|
|
67
|
+
if (!columnMetadata[index]) return;
|
|
68
|
+
const columnName = columnMetadata[index].name;
|
|
69
|
+
if (field.stringValue !== undefined) row[columnName] = field.stringValue;
|
|
70
|
+
else if (field.longValue !== undefined) row[columnName] = field.longValue;
|
|
71
|
+
else if (field.doubleValue !== undefined) row[columnName] = field.doubleValue;
|
|
72
|
+
else if (field.booleanValue !== undefined) row[columnName] = field.booleanValue;
|
|
73
|
+
else if (field.isNull) row[columnName] = null;
|
|
74
|
+
else row[columnName] = null;
|
|
75
|
+
});
|
|
76
|
+
return row;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Example query
|
|
81
|
+
const result = await executeQuery('SELECT * FROM meals');
|
|
82
|
+
const rows = formatRecords(result.records, result.columnMetadata);
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**RDS Data API Important Notes:**
|
|
86
|
+
- Always set `includeResultMetadata: true` to get column names
|
|
87
|
+
- Parameters use named placeholders: `:param_name`
|
|
88
|
+
- Parameter format: `{ name: 'param_name', value: { stringValue: 'value' } }`
|
|
89
|
+
- Value types: `stringValue`, `longValue`, `doubleValue`, `booleanValue`
|
|
90
|
+
- Date columns need explicit casting: `CAST(:date_param AS DATE)`
|
|
91
|
+
- JSON aggregations return as strings - parse with `JSON.parse()`
|
|
92
|
+
- No connection pooling needed - serverless API
|
|
93
|
+
|
|
94
|
+
**Error Handling:**
|
|
95
|
+
- Always wrap queries in try-catch
|
|
96
|
+
- Add console.error logging to all API endpoints for debugging
|
|
97
|
+
- Handle empty result sets gracefully
|
|
98
|
+
|
|
99
|
+
**Required Dependencies:**
|
|
100
|
+
- `@aws-sdk/client-rds-data`, `@aws-sdk/credential-providers`
|
|
101
|
+
- `express`, `cors`, `dotenv` for backend
|
|
102
|
+
|
|
103
|
+
**Alternative: pgwire Connection (if network access available):**
|
|
104
|
+
- Use `@aws-sdk/rds-signer` to generate IAM auth tokens
|
|
105
|
+
- Use `pg` package for PostgreSQL client
|
|
106
|
+
- Requires network connectivity to cluster endpoint
|
|
107
|
+
- See previous pattern for implementation details
|
|
108
|
+
|
|
109
|
+
## Frontend Stack
|
|
110
|
+
|
|
111
|
+
### React + Vite
|
|
112
|
+
|
|
113
|
+
**Project Creation:**
|
|
114
|
+
- Non-interactive: `echo "n" | npm create vite@latest client -- --template react`
|
|
115
|
+
- Answer "No" to rolldown-vite prompt
|
|
116
|
+
|
|
117
|
+
**Configuration:**
|
|
118
|
+
- Configure proxy in `vite.config.js`:
|
|
119
|
+
```javascript
|
|
120
|
+
export default defineConfig({
|
|
121
|
+
plugins: [react()],
|
|
122
|
+
server: {
|
|
123
|
+
proxy: {
|
|
124
|
+
'/api': {
|
|
125
|
+
target: 'http://localhost:3001',
|
|
126
|
+
changeOrigin: true
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
})
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Error Handling:**
|
|
134
|
+
- Always wrap fetch calls in try-catch
|
|
135
|
+
- Ensure state arrays default to empty arrays: `setMeals(Array.isArray(data) ? data : [])`
|
|
136
|
+
- Prevents "undefined.map is not a function" errors
|
|
137
|
+
|
|
138
|
+
**Dependencies:**
|
|
139
|
+
- `react`, `react-dom`, `vite`, `@vitejs/plugin-react`
|
|
140
|
+
|
|
141
|
+
## Full Stack App Pattern
|
|
142
|
+
|
|
143
|
+
1. **Assume `.env` file already exists** with AWS credentials (ACCESS_KEY, SECRET_KEY, SESSION_TOKEN, AWS_REGION)
|
|
144
|
+
2. Create Aurora cluster with MCP tools
|
|
145
|
+
3. Wait for cluster creation to complete (check with `get_job_status` every minute)
|
|
146
|
+
4. **Get Secret ARN automatically** using AWS CLI:
|
|
147
|
+
```bash
|
|
148
|
+
aws rds describe-db-clusters --db-cluster-identifier CLUSTER_NAME --region us-east-2 --query 'DBClusters[0].MasterUserSecret.SecretArn' --output text
|
|
149
|
+
```
|
|
150
|
+
5. **Construct Cluster ARN** from cluster identifier and account ID:
|
|
151
|
+
- Format: `arn:aws:rds:us-east-2:ACCOUNT_ID:cluster:CLUSTER_NAME`
|
|
152
|
+
- Extract account ID from Secret ARN returned in step 4
|
|
153
|
+
6. **Update `.env` file** by appending:
|
|
154
|
+
- `CLUSTER_ARN=arn:aws:rds:us-east-2:ACCOUNT_ID:cluster:CLUSTER_NAME`
|
|
155
|
+
- `SECRET_ARN=<value from step 4>`
|
|
156
|
+
- `DATABASE=postgres`
|
|
157
|
+
7. Create database schema using RDS Data API (one table at a time to avoid injection warnings)
|
|
158
|
+
8. Create Express backend with RDS Data API connection
|
|
159
|
+
9. Create React frontend with Vite
|
|
160
|
+
10. Add sample data to database using RDS Data API
|
|
161
|
+
11. Install dependencies: `npm install` in root and `npm install` in client
|
|
162
|
+
12. Start backend with `controlBashProcess`: `npm run server`
|
|
163
|
+
13. Start frontend with `controlBashProcess` in client directory: `npm run dev`
|
|
164
|
+
|
|
165
|
+
**Key Points:**
|
|
166
|
+
- User already has `.env` with AWS credentials - don't ask for them
|
|
167
|
+
- Secret ARN is automatically retrieved from `describe-db-clusters` API call
|
|
168
|
+
- The `MasterUserSecret.SecretArn` field contains the Secrets Manager ARN for database credentials
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "awslabs.postgres-mcp-server"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.13"
|
|
4
4
|
description = "An AWS Labs Model Context Protocol (MCP) server for postgres"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
dependencies = [
|
|
8
8
|
"loguru>=0.7.0",
|
|
9
|
-
"mcp[cli]>=1.
|
|
9
|
+
"mcp[cli]>=1.23.0",
|
|
10
10
|
"pydantic>=2.10.6",
|
|
11
11
|
"boto3>=1.42.4",
|
|
12
12
|
"botocore>1.42.4",
|
|
13
|
-
"psycopg[pool]>=3.1.12",
|
|
13
|
+
"psycopg[binary,pool]>=3.1.12",
|
|
14
14
|
"aiorwlock"
|
|
15
15
|
]
|
|
16
16
|
license = {text = "Apache-2.0"}
|
|
@@ -55,7 +55,7 @@ wheels = [
|
|
|
55
55
|
|
|
56
56
|
[[package]]
|
|
57
57
|
name = "awslabs-postgres-mcp-server"
|
|
58
|
-
version = "1.0.
|
|
58
|
+
version = "1.0.13"
|
|
59
59
|
source = { editable = "." }
|
|
60
60
|
dependencies = [
|
|
61
61
|
{ name = "aiorwlock" },
|
|
@@ -63,7 +63,7 @@ dependencies = [
|
|
|
63
63
|
{ name = "botocore" },
|
|
64
64
|
{ name = "loguru" },
|
|
65
65
|
{ name = "mcp", extra = ["cli"] },
|
|
66
|
-
{ name = "psycopg", extra = ["pool"] },
|
|
66
|
+
{ name = "psycopg", extra = ["binary", "pool"] },
|
|
67
67
|
{ name = "pydantic" },
|
|
68
68
|
]
|
|
69
69
|
|
|
@@ -85,8 +85,8 @@ requires-dist = [
|
|
|
85
85
|
{ name = "boto3", specifier = ">=1.42.4" },
|
|
86
86
|
{ name = "botocore", specifier = ">1.42.4" },
|
|
87
87
|
{ name = "loguru", specifier = ">=0.7.0" },
|
|
88
|
-
{ name = "mcp", extras = ["cli"], specifier = ">=1.
|
|
89
|
-
{ name = "psycopg", extras = ["pool"], specifier = ">=3.1.12" },
|
|
88
|
+
{ name = "mcp", extras = ["cli"], specifier = ">=1.23.0" },
|
|
89
|
+
{ name = "psycopg", extras = ["binary", "pool"], specifier = ">=3.1.12" },
|
|
90
90
|
{ name = "pydantic", specifier = ">=2.10.6" },
|
|
91
91
|
]
|
|
92
92
|
|
|
@@ -826,7 +826,7 @@ wheels = [
|
|
|
826
826
|
|
|
827
827
|
[[package]]
|
|
828
828
|
name = "mcp"
|
|
829
|
-
version = "1.
|
|
829
|
+
version = "1.23.3"
|
|
830
830
|
source = { registry = "https://pypi.org/simple" }
|
|
831
831
|
dependencies = [
|
|
832
832
|
{ name = "anyio" },
|
|
@@ -844,9 +844,9 @@ dependencies = [
|
|
|
844
844
|
{ name = "typing-inspection" },
|
|
845
845
|
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
|
846
846
|
]
|
|
847
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
847
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a7/a4/d06a303f45997e266f2c228081abe299bbcba216cb806128e2e49095d25f/mcp-1.23.3.tar.gz", hash = "sha256:b3b0da2cc949950ce1259c7bfc1b081905a51916fcd7c8182125b85e70825201", size = 600697, upload-time = "2025-12-09T16:04:37.351Z" }
|
|
848
848
|
wheels = [
|
|
849
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
849
|
+
{ url = "https://files.pythonhosted.org/packages/32/c6/13c1a26b47b3f3a3b480783001ada4268917c9f42d78a079c336da2e75e5/mcp-1.23.3-py3-none-any.whl", hash = "sha256:32768af4b46a1b4f7df34e2bfdf5c6011e7b63d7f1b0e321d0fdef4cd6082031", size = 231570, upload-time = "2025-12-09T16:04:35.56Z" },
|
|
850
850
|
]
|
|
851
851
|
|
|
852
852
|
[package.optional-dependencies]
|
|
@@ -942,10 +942,65 @@ wheels = [
|
|
|
942
942
|
]
|
|
943
943
|
|
|
944
944
|
[package.optional-dependencies]
|
|
945
|
+
binary = [
|
|
946
|
+
{ name = "psycopg-binary", marker = "implementation_name != 'pypy'" },
|
|
947
|
+
]
|
|
945
948
|
pool = [
|
|
946
949
|
{ name = "psycopg-pool" },
|
|
947
950
|
]
|
|
948
951
|
|
|
952
|
+
[[package]]
|
|
953
|
+
name = "psycopg-binary"
|
|
954
|
+
version = "3.2.12"
|
|
955
|
+
source = { registry = "https://pypi.org/simple" }
|
|
956
|
+
wheels = [
|
|
957
|
+
{ url = "https://files.pythonhosted.org/packages/33/a0/96f75740b010e92ba95df1b40526d28b0ebb97347465974d7a23799cea79/psycopg_binary-3.2.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:13cd057f406d2c8063ae8b489395b089a7f23c39aff223b5ea39f0c4dd640550", size = 4031010, upload-time = "2025-10-26T00:11:16.252Z" },
|
|
958
|
+
{ url = "https://files.pythonhosted.org/packages/64/6a/88ebab6ca71a25a67c42b9ecb4707f69522f3c782184c60af13cbe122166/psycopg_binary-3.2.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef92d5ba6213de060d1390b1f71f5c3b2fbb00b4d55edee39f3b07234538b64a", size = 4090479, upload-time = "2025-10-26T00:11:52.052Z" },
|
|
959
|
+
{ url = "https://files.pythonhosted.org/packages/8e/62/917ae2e1a7ff10de3ffd43a65fc6b1536fbd3be6ef016375efc2efd268f3/psycopg_binary-3.2.12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:95f2806097a49bfd57e0c6a178f77b99487c53c157d9d507aee9c40dd58efdb4", size = 4641200, upload-time = "2025-10-26T00:12:30.626Z" },
|
|
960
|
+
{ url = "https://files.pythonhosted.org/packages/56/61/98486eff0a4b3313b9ad789003c89edc2424ba69efe4476ead690ffd219e/psycopg_binary-3.2.12-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:ce68839da386f137bc8d814fdbeede8f89916b8605e3593a85b504a859243af9", size = 4743095, upload-time = "2025-10-26T00:13:10.454Z" },
|
|
961
|
+
{ url = "https://files.pythonhosted.org/packages/29/90/764e0d67e21b19e9ad5121ee4b93910bd91aad362f4012f3e03f31eca65e/psycopg_binary-3.2.12-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:940ac69ef6e89c17b3d30f3297a2ad03efdd06a4b1857f81bc533a9108a90eb9", size = 4425175, upload-time = "2025-10-26T00:13:48.553Z" },
|
|
962
|
+
{ url = "https://files.pythonhosted.org/packages/98/78/744935118b434e81fc11a5c1fb69b29a7a809343c1277c79eb1a33f1613a/psycopg_binary-3.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:310c95a68a9b948b89d6d187622757d57b6c26cece3c3f7c2cbb645ee36531b2", size = 3885210, upload-time = "2025-10-26T00:14:21.382Z" },
|
|
963
|
+
{ url = "https://files.pythonhosted.org/packages/41/49/105f40a0632669a653a2ba28506de163ba5cce47fff0910d2d8912ea250e/psycopg_binary-3.2.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f7c81bc60560be9eb3c23601237765069ebfa9881097ce19ca6b5ea17c5faa8f", size = 3568097, upload-time = "2025-10-26T00:14:51.534Z" },
|
|
964
|
+
{ url = "https://files.pythonhosted.org/packages/2b/d6/8712ae92cd10ec6ddb0df35dc6d5d837db22af42dda1faf647a1a07d9996/psycopg_binary-3.2.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1c1dbeb8e97d00a33dfa9987776ce3d1c1e4cc251dfbd663b8f9e173f5c89d17", size = 3609179, upload-time = "2025-10-26T00:15:21.869Z" },
|
|
965
|
+
{ url = "https://files.pythonhosted.org/packages/45/a4/0053351b79cb81d1842581e51e7878e02055afa34de5b49b5ea07fb85fbd/psycopg_binary-3.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:8335d989a4e94df2ccd8a1acbba9d03c4157ea8d73b65b79d447c6dc10b001d8", size = 2918025, upload-time = "2025-10-26T00:15:47.622Z" },
|
|
966
|
+
{ url = "https://files.pythonhosted.org/packages/60/4d/980fdd0f75914c8b1f229a6e5a9c422b53e809166b96a7d0e1287b369796/psycopg_binary-3.2.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:16db2549a31ccd4887bef05570d95036813ce25fd9810b523ba1c16b0f6cfd90", size = 4037686, upload-time = "2025-10-26T00:16:22.041Z" },
|
|
967
|
+
{ url = "https://files.pythonhosted.org/packages/51/76/6b6ccd3fd31c67bec8608225407322f26a2a633c05b35c56b7c0638dcc67/psycopg_binary-3.2.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7b9a99ded7d19b24d3b6fa632b58e52bbdecde7e1f866c3b23d0c27b092af4e3", size = 4098526, upload-time = "2025-10-26T00:16:58.395Z" },
|
|
968
|
+
{ url = "https://files.pythonhosted.org/packages/91/d8/be5242efed4f57f74a27eb47cb3a01bebb04e43ca57e903fcbda23361e72/psycopg_binary-3.2.12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:385c7b5cfffac115f413b8e32c941c85ea0960e0b94a6ef43bb260f774c54893", size = 4646680, upload-time = "2025-10-26T00:17:36.967Z" },
|
|
969
|
+
{ url = "https://files.pythonhosted.org/packages/20/c1/96e42d39c0e75c4059f80e8fc9b286e2b6d9652f30b42698101d4be201cf/psycopg_binary-3.2.12-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:9c674887d1e0d4384c06c822bc7fcfede4952742e232ec1e76b5a6ae39a3ddd4", size = 4749345, upload-time = "2025-10-26T00:18:16.61Z" },
|
|
970
|
+
{ url = "https://files.pythonhosted.org/packages/78/00/0ee41e18bdb05b43a27ebf8a952343319554cd9bde7931f633343b5abbad/psycopg_binary-3.2.12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:72fd979e410ba7805462817ef8ed6f37dd75f9f4ae109bdb8503e013ccecb80b", size = 4432535, upload-time = "2025-10-26T00:18:53.823Z" },
|
|
971
|
+
{ url = "https://files.pythonhosted.org/packages/c5/77/580cc455ba909d9e3082b80bb1952f67c5b9692a56ecaf71816ce0e9aa69/psycopg_binary-3.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82fa5134517af44e28a30c38f34384773a0422ffd545fd298433ea9f2cc5a9", size = 3888888, upload-time = "2025-10-26T00:19:26.768Z" },
|
|
972
|
+
{ url = "https://files.pythonhosted.org/packages/cb/29/0d0d2aa4238fd57ddbd2f517c58cefb26d408d3e989cbca9ad43f4c48433/psycopg_binary-3.2.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:100fdfee763d701f6da694bde711e264aca4c2bc84fb81e1669fb491ce11d219", size = 3571385, upload-time = "2025-10-26T00:19:56.844Z" },
|
|
973
|
+
{ url = "https://files.pythonhosted.org/packages/b1/7d/eb11cd86339122c19c1039cb5ee5f87f88d6015dff564b1ed23d0c4a90e7/psycopg_binary-3.2.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:802bd01fb18a0acb0dea491f69a9a2da6034f33329a62876ab5b558a1fb66b45", size = 3614219, upload-time = "2025-10-26T00:20:27.135Z" },
|
|
974
|
+
{ url = "https://files.pythonhosted.org/packages/65/02/dff51dc1f88d9854405013e2cabbf7060c2b3993cb82d6e8ad21396081af/psycopg_binary-3.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:f33c9e12ed05e579b7fb3c8fdb10a165f41459394b8eb113e7c377b2bd027f61", size = 2919778, upload-time = "2025-10-26T00:20:51.974Z" },
|
|
975
|
+
{ url = "https://files.pythonhosted.org/packages/db/4a/b2779f74fdb0d661febe802fb3b770546a99f0a513ef108e8f9ed36b87cb/psycopg_binary-3.2.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ea9751310b840186379c949ede5a5129b31439acdb929f3003a8685372117ed8", size = 4019926, upload-time = "2025-10-26T00:21:25.599Z" },
|
|
976
|
+
{ url = "https://files.pythonhosted.org/packages/d5/af/df6c2beb44de456c4f025a61dfe611cf5b3eb3d3fa671144ce19ac7f1139/psycopg_binary-3.2.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9fdf3a0c24822401c60c93640da69b3dfd4d9f29c3a8d797244fe22bfe592823", size = 4092107, upload-time = "2025-10-26T00:22:00.043Z" },
|
|
977
|
+
{ url = "https://files.pythonhosted.org/packages/f6/3b/b16260c93a0a435000fd175f1abb8d12af5542bd9d35d17dd2b7f347dbd5/psycopg_binary-3.2.12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:49582c3b6d578bdaab2932b59f70b1bd93351ed4d594b2c97cea1611633c9de1", size = 4626849, upload-time = "2025-10-26T00:22:38.606Z" },
|
|
978
|
+
{ url = "https://files.pythonhosted.org/packages/cb/52/2c8d1c534777176e3e4832105f0b2f70c0ff3d63def0f1fda46833cc2dc1/psycopg_binary-3.2.12-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5b6e505618cb376a7a7d6af86833a8f289833fe4cc97541d7100745081dc31bd", size = 4719811, upload-time = "2025-10-26T00:23:18.23Z" },
|
|
979
|
+
{ url = "https://files.pythonhosted.org/packages/34/44/005ab6a42698489310f52f287b78c26560aeedb091ba12f034acdff4549b/psycopg_binary-3.2.12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6a898717ab560db393355c6ecf39b8c534f252afc3131480db1251e061090d3a", size = 4410950, upload-time = "2025-10-26T00:23:55.532Z" },
|
|
980
|
+
{ url = "https://files.pythonhosted.org/packages/a7/ba/c59303ed65659cd62da2b3f4ad2b8635ae10eb85e7645d063025277c953d/psycopg_binary-3.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bfd632f7038c76b0921f6d5621f5ba9ecabfad3042fa40e5875db11771d2a5de", size = 3861578, upload-time = "2025-10-26T00:24:28.482Z" },
|
|
981
|
+
{ url = "https://files.pythonhosted.org/packages/29/ce/d36f03b11959978b2c2522c87369fa8d75c1fa9b311805b39ce7678455ae/psycopg_binary-3.2.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3e9c9e64fb7cda688e9488402611c0be2c81083664117edcc709d15f37faa30f", size = 3534948, upload-time = "2025-10-26T00:24:58.657Z" },
|
|
982
|
+
{ url = "https://files.pythonhosted.org/packages/5a/cc/e0e5fc0d5f2d2650f85540cebd0d047e14b0933b99f713749b2ebc031047/psycopg_binary-3.2.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3c1e38b1eda54910628f68448598139a9818973755abf77950057372c1fe89a6", size = 3583525, upload-time = "2025-10-26T00:25:28.731Z" },
|
|
983
|
+
{ url = "https://files.pythonhosted.org/packages/13/27/e2b1afb9819835f85f1575f07fdfc871dd8b4ea7ed8244bfe86a2f6d6566/psycopg_binary-3.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:77690f0bf08356ca00fc357f50a5980c7a25f076c2c1f37d9d775a278234fefd", size = 2910254, upload-time = "2025-10-26T00:25:53.335Z" },
|
|
984
|
+
{ url = "https://files.pythonhosted.org/packages/b2/0b/9d480aba4a4864832c29e6fc94ddd34d9927c276448eb3b56ffe24ed064c/psycopg_binary-3.2.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:442f20153415f374ae5753ca618637611a41a3c58c56d16ce55f845d76a3cf7b", size = 4017829, upload-time = "2025-10-26T00:26:27.031Z" },
|
|
985
|
+
{ url = "https://files.pythonhosted.org/packages/a4/f3/0d294b30349bde24a46741a1f27a10e8ab81e9f4118d27c2fe592acfb42a/psycopg_binary-3.2.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:79de3cc5adbf51677009a8fda35ac9e9e3686d5595ab4b0c43ec7099ece6aeb5", size = 4089835, upload-time = "2025-10-26T00:27:01.392Z" },
|
|
986
|
+
{ url = "https://files.pythonhosted.org/packages/82/d4/ff82e318e5a55d6951b278d3af7b4c7c1b19344e3a3722b6613f156a38ea/psycopg_binary-3.2.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:095ccda59042a1239ac2fefe693a336cb5cecf8944a8d9e98b07f07e94e2b78d", size = 4625474, upload-time = "2025-10-26T00:27:40.34Z" },
|
|
987
|
+
{ url = "https://files.pythonhosted.org/packages/b1/e8/2c9df6475a5ab6d614d516f4497c568d84f7d6c21d0e11444468c9786c9f/psycopg_binary-3.2.12-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:efab679a2c7d1bf7d0ec0e1ecb47fe764945eff75bb4321f2e699b30a12db9b3", size = 4720350, upload-time = "2025-10-26T00:28:20.104Z" },
|
|
988
|
+
{ url = "https://files.pythonhosted.org/packages/74/f5/7aec81b0c41985dc006e2d5822486ad4b7c2a1a97a5a05e37dc2adaf1512/psycopg_binary-3.2.12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d369e79ad9647fc8217cbb51bbbf11f9a1ffca450be31d005340157ffe8e91b3", size = 4411621, upload-time = "2025-10-26T00:28:59.104Z" },
|
|
989
|
+
{ url = "https://files.pythonhosted.org/packages/fc/15/d3cb41b8fa9d5f14320ab250545fbb66f9ddb481e448e618902672a806c0/psycopg_binary-3.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eedc410f82007038030650aa58f620f9fe0009b9d6b04c3dc71cbd3bae5b2675", size = 3863081, upload-time = "2025-10-26T00:29:31.235Z" },
|
|
990
|
+
{ url = "https://files.pythonhosted.org/packages/69/8a/72837664e63e3cd3aa145cedcf29e5c21257579739aba78ab7eb668f7d9c/psycopg_binary-3.2.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f3bae4be7f6781bf6c9576eedcd5e1bb74468126fa6de991e47cdb1a8ea3a42a", size = 3537428, upload-time = "2025-10-26T00:30:01.465Z" },
|
|
991
|
+
{ url = "https://files.pythonhosted.org/packages/cc/7e/1b78ae38e7d69e6d7fb1e2dcce101493f5fa429480bac3a68b876c9b1635/psycopg_binary-3.2.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8ffe75fe6be902dadd439adf4228c98138a992088e073ede6dd34e7235f4e03e", size = 3585981, upload-time = "2025-10-26T00:30:31.635Z" },
|
|
992
|
+
{ url = "https://files.pythonhosted.org/packages/a3/f8/245b4868b2dac46c3fb6383b425754ae55df1910c826d305ed414da03777/psycopg_binary-3.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:2598d0e4f2f258da13df0560187b3f1dfc9b8688c46b9d90176360ae5212c3fc", size = 2912929, upload-time = "2025-10-26T00:30:56.413Z" },
|
|
993
|
+
{ url = "https://files.pythonhosted.org/packages/5c/5b/76fbb40b981b73b285a00dccafc38cf67b7a9b3f7d4f2025dda7b896e7ef/psycopg_binary-3.2.12-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:dc68094e00a5a7e8c20de1d3a0d5e404a27f522e18f8eb62bbbc9f865c3c81ef", size = 4016868, upload-time = "2025-10-26T00:31:29.974Z" },
|
|
994
|
+
{ url = "https://files.pythonhosted.org/packages/0e/08/8841ae3e2d1a3228e79eaaf5b7f991d15f0a231bb5031a114305b19724b1/psycopg_binary-3.2.12-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2d55009eeddbef54c711093c986daaf361d2c4210aaa1ee905075a3b97a62441", size = 4090508, upload-time = "2025-10-26T00:32:04.192Z" },
|
|
995
|
+
{ url = "https://files.pythonhosted.org/packages/05/de/a41f62230cf4095ae4547eceada218cf28c17e7f94376913c1c8dde9546f/psycopg_binary-3.2.12-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:66a031f22e4418016990446d3e38143826f03ad811b9f78f58e2afbc1d343f7a", size = 4629788, upload-time = "2025-10-26T00:32:43.28Z" },
|
|
996
|
+
{ url = "https://files.pythonhosted.org/packages/45/19/529d92134eae44475f781a86d58cdf3edd0953e17c69762abf387a9f2636/psycopg_binary-3.2.12-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:58ed30d33c25d7dc8d2f06285e88493147c2a660cc94713e4b563a99efb80a1f", size = 4724124, upload-time = "2025-10-26T00:33:22.594Z" },
|
|
997
|
+
{ url = "https://files.pythonhosted.org/packages/5c/f5/97344e87065f7c9713ce213a2cff7732936ec3af6622e4b2a88715a953f2/psycopg_binary-3.2.12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e0b5ccd03ca4749b8f66f38608ccbcb415cbd130d02de5eda80d042b83bee90e", size = 4411340, upload-time = "2025-10-26T00:34:00.759Z" },
|
|
998
|
+
{ url = "https://files.pythonhosted.org/packages/b1/c2/34bce068f6bfb4c2e7bb1187bb64a3f3be254702b158c4ad05eacc0055cf/psycopg_binary-3.2.12-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:909de94de7dd4d6086098a5755562207114c9638ec42c52d84c8a440c45fe084", size = 3867815, upload-time = "2025-10-26T00:34:33.181Z" },
|
|
999
|
+
{ url = "https://files.pythonhosted.org/packages/d1/a1/c647e01ab162e6bfa52380e23e486215e9d28ffd31e9cf3cb1e9ca59008b/psycopg_binary-3.2.12-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:7130effd0517881f3a852eff98729d51034128f0737f64f0d1c7ea8343d77bd7", size = 3541756, upload-time = "2025-10-26T00:35:08.622Z" },
|
|
1000
|
+
{ url = "https://files.pythonhosted.org/packages/6b/d0/795bdaa8c946a7b7126bf7ca8d4371eaaa613093e3ec341a0e50f52cbee2/psycopg_binary-3.2.12-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:89b3c5201ca616d69ca0c3c0003ca18f7170a679c445c7e386ebfb4f29aa738e", size = 3587950, upload-time = "2025-10-26T00:35:41.183Z" },
|
|
1001
|
+
{ url = "https://files.pythonhosted.org/packages/53/cf/10c3e95827a3ca8af332dfc471befec86e15a14dc83cee893c49a4910dad/psycopg_binary-3.2.12-cp314-cp314-win_amd64.whl", hash = "sha256:48a8e29f3e38fcf8d393b8fe460d83e39c107ad7e5e61cd3858a7569e0554a39", size = 3005787, upload-time = "2025-10-26T00:36:06.783Z" },
|
|
1002
|
+
]
|
|
1003
|
+
|
|
949
1004
|
[[package]]
|
|
950
1005
|
name = "psycopg-pool"
|
|
951
1006
|
version = "3.2.7"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/awslabs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/docker-healthcheck.sh
RENAMED
|
File without changes
|
{awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/kiro_power/mcp.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/tests/test_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awslabs_postgres_mcp_server-1.0.11 → awslabs_postgres_mcp_server-1.0.13}/uv-requirements.txt
RENAMED
|
File without changes
|