awslabs.cdk-mcp-server 0.0.10417__py3-none-any.whl
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/__init__.py +2 -0
- awslabs/cdk_mcp_server/__init__.py +8 -0
- awslabs/cdk_mcp_server/core/__init__.py +1 -0
- awslabs/cdk_mcp_server/core/resources.py +271 -0
- awslabs/cdk_mcp_server/core/search_utils.py +182 -0
- awslabs/cdk_mcp_server/core/server.py +74 -0
- awslabs/cdk_mcp_server/core/tools.py +324 -0
- awslabs/cdk_mcp_server/data/__init__.py +1 -0
- awslabs/cdk_mcp_server/data/cdk_nag_parser.py +331 -0
- awslabs/cdk_mcp_server/data/construct_descriptions.py +32 -0
- awslabs/cdk_mcp_server/data/genai_cdk_loader.py +423 -0
- awslabs/cdk_mcp_server/data/lambda_powertools_loader.py +48 -0
- awslabs/cdk_mcp_server/data/schema_generator.py +666 -0
- awslabs/cdk_mcp_server/data/solutions_constructs_parser.py +782 -0
- awslabs/cdk_mcp_server/server.py +7 -0
- awslabs/cdk_mcp_server/static/CDK_GENERAL_GUIDANCE.md +232 -0
- awslabs/cdk_mcp_server/static/CDK_NAG_GUIDANCE.md +192 -0
- awslabs/cdk_mcp_server/static/__init__.py +5 -0
- awslabs/cdk_mcp_server/static/bedrock/agent/actiongroups.md +137 -0
- awslabs/cdk_mcp_server/static/bedrock/agent/alias.md +39 -0
- awslabs/cdk_mcp_server/static/bedrock/agent/collaboration.md +91 -0
- awslabs/cdk_mcp_server/static/bedrock/agent/creation.md +149 -0
- awslabs/cdk_mcp_server/static/bedrock/agent/custom_orchestration.md +74 -0
- awslabs/cdk_mcp_server/static/bedrock/agent/overview.md +78 -0
- awslabs/cdk_mcp_server/static/bedrock/agent/prompt_override.md +70 -0
- awslabs/cdk_mcp_server/static/bedrock/bedrockguardrails.md +188 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/chunking.md +137 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/datasources.md +225 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/kendra.md +81 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/overview.md +116 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/parsing.md +36 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/transformation.md +30 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/aurora.md +185 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/creation.md +80 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/opensearch.md +56 -0
- awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/pinecone.md +66 -0
- awslabs/cdk_mcp_server/static/bedrock/profiles.md +153 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/actiongroups.md +137 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/alias.md +39 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/collaboration.md +91 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/creation.md +149 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/custom_orchestration.md +74 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/overview.md +78 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/prompt_override.md +70 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/bedrockguardrails.md +188 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/chunking.md +137 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/datasources.md +225 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/kendra.md +81 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/overview.md +116 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/parsing.md +36 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/transformation.md +30 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/aurora.md +185 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/creation.md +80 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/opensearch.md +56 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/pinecone.md +66 -0
- awslabs/cdk_mcp_server/static/genai_cdk/bedrock/profiles.md +153 -0
- awslabs/cdk_mcp_server/static/genai_cdk/opensearch-vectorindex/overview.md +135 -0
- awslabs/cdk_mcp_server/static/genai_cdk/opensearchserverless/overview.md +17 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/bedrock.md +127 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/cdk.md +99 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/dependencies.md +45 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/index.md +36 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/insights.md +95 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/logging.md +43 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/metrics.md +93 -0
- awslabs/cdk_mcp_server/static/lambda_powertools/tracing.md +63 -0
- awslabs/cdk_mcp_server/static/opensearch-vectorindex/overview.md +135 -0
- awslabs/cdk_mcp_server/static/opensearchserverless/overview.md +17 -0
- awslabs_cdk_mcp_server-0.0.10417.dist-info/METADATA +14 -0
- awslabs_cdk_mcp_server-0.0.10417.dist-info/RECORD +72 -0
- awslabs_cdk_mcp_server-0.0.10417.dist-info/WHEEL +4 -0
- awslabs_cdk_mcp_server-0.0.10417.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Lambda Insights
|
|
2
|
+
|
|
3
|
+
Enhanced monitoring and observability for AWS Lambda functions:
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Lambda Insights is an extension of CloudWatch that provides system-level metrics, custom dashboards, and enhanced logging for Lambda functions. It complements Lambda Powertools by focusing on infrastructure-level monitoring rather than application-level metrics.
|
|
8
|
+
|
|
9
|
+
## Key Benefits
|
|
10
|
+
|
|
11
|
+
- **Zero-Code Instrumentation**: No code changes required to get system-level metrics
|
|
12
|
+
- **Memory Utilization Tracking**: Monitor memory usage patterns to optimize function configuration
|
|
13
|
+
- **CPU Utilization**: Identify CPU-bound functions that might benefit from more memory allocation
|
|
14
|
+
- **Network Usage**: Track network I/O for functions that communicate with external services
|
|
15
|
+
- **Cold Start Analysis**: Detailed metrics on initialization times to optimize performance
|
|
16
|
+
- **Automatic Dashboards**: Pre-built dashboards for quick analysis
|
|
17
|
+
|
|
18
|
+
## CDK Integration
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { LambdaInsightsVersion } from 'aws-cdk-lib/aws-lambda';
|
|
22
|
+
import { PythonFunction } from '@aws-cdk/aws-lambda-python-alpha';
|
|
23
|
+
|
|
24
|
+
// Create Lambda function with Lambda Insights enabled
|
|
25
|
+
const function = new PythonFunction(this, 'MyFunction', {
|
|
26
|
+
entry: path.join(__dirname, '../src/my_function'),
|
|
27
|
+
runtime: Runtime.PYTHON_3_13,
|
|
28
|
+
|
|
29
|
+
// Enable Lambda Insights with specific version
|
|
30
|
+
insightsVersion: LambdaInsightsVersion.VERSION_1_0_119_0,
|
|
31
|
+
|
|
32
|
+
// Other configuration...
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Combining with Lambda Powertools
|
|
37
|
+
|
|
38
|
+
Lambda Insights works seamlessly alongside Lambda Powertools to provide a complete observability solution:
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { LambdaInsightsVersion } from 'aws-cdk-lib/aws-lambda';
|
|
42
|
+
import { PythonFunction } from '@aws-cdk/aws-lambda-python-alpha';
|
|
43
|
+
|
|
44
|
+
// Create Lambda function with both Lambda Insights and Powertools
|
|
45
|
+
const function = new PythonFunction(this, 'MyFunction', {
|
|
46
|
+
entry: path.join(__dirname, '../src/my_function'),
|
|
47
|
+
runtime: Runtime.PYTHON_3_13,
|
|
48
|
+
|
|
49
|
+
// Enable Lambda Insights
|
|
50
|
+
insightsVersion: LambdaInsightsVersion.VERSION_1_0_119_0,
|
|
51
|
+
|
|
52
|
+
// Configure Powertools for business metrics
|
|
53
|
+
environment: {
|
|
54
|
+
POWERTOOLS_SERVICE_NAME: "my-service",
|
|
55
|
+
POWERTOOLS_METRICS_NAMESPACE: "MyService",
|
|
56
|
+
LOG_LEVEL: "INFO",
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Observability Strategy
|
|
62
|
+
|
|
63
|
+
For a comprehensive observability strategy:
|
|
64
|
+
|
|
65
|
+
1. **System-Level Metrics** (Lambda Insights):
|
|
66
|
+
- Memory utilization
|
|
67
|
+
- CPU utilization
|
|
68
|
+
- Network I/O
|
|
69
|
+
- Cold start duration
|
|
70
|
+
- Initialization times
|
|
71
|
+
|
|
72
|
+
2. **Business-Level Metrics** (Lambda Powertools):
|
|
73
|
+
- Business transactions
|
|
74
|
+
- User actions
|
|
75
|
+
- Domain-specific events
|
|
76
|
+
- Custom application metrics
|
|
77
|
+
|
|
78
|
+
## Cost Considerations
|
|
79
|
+
|
|
80
|
+
Lambda Insights incurs additional costs:
|
|
81
|
+
- $0.20 per function per month (prorated hourly)
|
|
82
|
+
- Additional CloudWatch costs for metrics and logs
|
|
83
|
+
|
|
84
|
+
For cost optimization:
|
|
85
|
+
- Enable Lambda Insights selectively on critical functions
|
|
86
|
+
- Consider using different CloudWatch log retention periods
|
|
87
|
+
- Monitor usage and adjust as needed
|
|
88
|
+
|
|
89
|
+
## Best Practices
|
|
90
|
+
|
|
91
|
+
1. **Enable on Critical Functions**: Start by enabling Lambda Insights on your most critical functions
|
|
92
|
+
2. **Review Dashboards Regularly**: Check the Lambda Insights dashboards to identify optimization opportunities
|
|
93
|
+
3. **Right-Size Memory**: Use memory utilization data to adjust function memory configuration
|
|
94
|
+
4. **Analyze Cold Starts**: Identify functions with high cold start times for optimization
|
|
95
|
+
5. **Combine with Powertools**: Use both solutions for complete observability
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Structured Logging
|
|
2
|
+
|
|
3
|
+
Transform text logs into JSON objects with consistent fields:
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
from aws_lambda_powertools import Logger
|
|
7
|
+
from aws_lambda_powertools.utilities.typing import LambdaContext
|
|
8
|
+
|
|
9
|
+
# Initialize once as a global variable
|
|
10
|
+
logger = Logger(service="payment-service")
|
|
11
|
+
|
|
12
|
+
@logger.inject_lambda_context # Automatically captures request_id, cold start, etc.
|
|
13
|
+
def lambda_handler(event, context: LambdaContext):
|
|
14
|
+
try:
|
|
15
|
+
# Log with structured context
|
|
16
|
+
logger.info("Processing request", extra={"event_type": event.get("type")})
|
|
17
|
+
|
|
18
|
+
# Process request
|
|
19
|
+
result = process_data(event)
|
|
20
|
+
|
|
21
|
+
logger.info("Request processed successfully")
|
|
22
|
+
return result
|
|
23
|
+
except Exception:
|
|
24
|
+
# Automatically captures exception details and stack trace
|
|
25
|
+
logger.exception("Error processing request")
|
|
26
|
+
raise
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Key Benefits
|
|
30
|
+
|
|
31
|
+
- **Automatic correlation IDs**: Track requests across services with consistent IDs
|
|
32
|
+
- **Consistent log structure**: All logs follow the same JSON structure for easier filtering
|
|
33
|
+
- **Cold start detection**: Automatically logs when a function is experiencing a cold start
|
|
34
|
+
- **Simplified exception logging**: Captures full stack traces and exception details
|
|
35
|
+
- **Context enrichment**: Easily add business context to your logs
|
|
36
|
+
|
|
37
|
+
## Best Practices
|
|
38
|
+
|
|
39
|
+
1. **Initialize the logger once**: Create the logger as a global variable
|
|
40
|
+
2. **Use the @logger.inject_lambda_context decorator**: This automatically adds request IDs and other context
|
|
41
|
+
3. **Add business context with extra**: Use the extra parameter to add business-relevant information
|
|
42
|
+
4. **Use appropriate log levels**: INFO for normal operations, WARNING for concerning events, ERROR for failures
|
|
43
|
+
5. **Use logger.exception for exceptions**: This automatically captures the stack trace
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Metrics
|
|
2
|
+
|
|
3
|
+
Collect quantitative data about your application's behavior:
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
from aws_lambda_powertools import Logger, Metrics, Tracer
|
|
7
|
+
from aws_lambda_powertools.metrics import MetricUnit
|
|
8
|
+
from aws_lambda_powertools.utilities.typing import LambdaContext
|
|
9
|
+
|
|
10
|
+
logger = Logger(service="payment-service")
|
|
11
|
+
tracer = Tracer(service="payment-service")
|
|
12
|
+
metrics = Metrics(namespace="PaymentService", service="payment-service")
|
|
13
|
+
|
|
14
|
+
@metrics.log_metrics # Automatically emits metrics at the end of the function
|
|
15
|
+
def lambda_handler(event, context: LambdaContext):
|
|
16
|
+
payment_id = event.get("payment_id")
|
|
17
|
+
amount = event.get("amount", 0)
|
|
18
|
+
|
|
19
|
+
try:
|
|
20
|
+
# Record business metrics
|
|
21
|
+
metrics.add_metric(name="PaymentProcessed", unit=MetricUnit.Count, value=1)
|
|
22
|
+
metrics.add_metric(name="PaymentAmount", unit=MetricUnit.Dollars, value=amount)
|
|
23
|
+
|
|
24
|
+
# Add dimensions for filtering
|
|
25
|
+
metrics.add_dimension(name="PaymentMethod", value="credit_card")
|
|
26
|
+
|
|
27
|
+
# Your business logic here
|
|
28
|
+
result = process_payment(payment_id, amount)
|
|
29
|
+
|
|
30
|
+
# Record successful outcome
|
|
31
|
+
metrics.add_metric(name="SuccessfulPayment", unit=MetricUnit.Count, value=1)
|
|
32
|
+
|
|
33
|
+
return result
|
|
34
|
+
except Exception:
|
|
35
|
+
# Record failed outcome
|
|
36
|
+
metrics.add_metric(name="FailedPayment", unit=MetricUnit.Count, value=1)
|
|
37
|
+
logger.exception("Payment processing failed")
|
|
38
|
+
raise
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Key Benefits
|
|
42
|
+
|
|
43
|
+
- **Business-relevant metrics**: Track metrics that matter to your business
|
|
44
|
+
- **Automatic cold start metrics**: Monitor cold start frequency
|
|
45
|
+
- **Dimensional metrics**: Filter metrics by business dimensions
|
|
46
|
+
- **Efficient batching**: Metrics are batched and emitted in a single call
|
|
47
|
+
- **Standard units**: Use predefined units for consistent measurement
|
|
48
|
+
|
|
49
|
+
## Best Practices
|
|
50
|
+
|
|
51
|
+
1. **Initialize the metrics once**: Create the metrics object as a global variable
|
|
52
|
+
2. **Use the @metrics.log_metrics decorator**: This automatically emits metrics at the end of the function
|
|
53
|
+
3. **Add business dimensions**: Use add_dimension to enable filtering by business context
|
|
54
|
+
4. **Use appropriate metric units**: Choose from the predefined MetricUnit enum values
|
|
55
|
+
5. **Track both success and failure metrics**: Record metrics for both outcomes
|
|
56
|
+
6. **Use consistent naming**: Follow a consistent naming convention for metrics
|
|
57
|
+
|
|
58
|
+
## CloudWatch Dashboard Integration
|
|
59
|
+
|
|
60
|
+
You can create CloudWatch dashboards to visualize your metrics:
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { Dashboard, GraphWidget, Metric } from 'aws-cdk-lib/aws-cloudwatch';
|
|
64
|
+
|
|
65
|
+
// Create a dashboard
|
|
66
|
+
const dashboard = new Dashboard(this, 'PaymentsDashboard', {
|
|
67
|
+
dashboardName: 'PaymentsDashboard',
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Add a widget for payment metrics
|
|
71
|
+
dashboard.addWidgets(
|
|
72
|
+
new GraphWidget({
|
|
73
|
+
title: 'Payment Processing',
|
|
74
|
+
left: [
|
|
75
|
+
new Metric({
|
|
76
|
+
namespace: 'PaymentService',
|
|
77
|
+
metricName: 'SuccessfulPayment',
|
|
78
|
+
dimensionsMap: {
|
|
79
|
+
service: 'payment-service',
|
|
80
|
+
},
|
|
81
|
+
statistic: 'Sum',
|
|
82
|
+
}),
|
|
83
|
+
new Metric({
|
|
84
|
+
namespace: 'PaymentService',
|
|
85
|
+
metricName: 'FailedPayment',
|
|
86
|
+
dimensionsMap: {
|
|
87
|
+
service: 'payment-service',
|
|
88
|
+
},
|
|
89
|
+
statistic: 'Sum',
|
|
90
|
+
}),
|
|
91
|
+
],
|
|
92
|
+
})
|
|
93
|
+
);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Tracing
|
|
2
|
+
|
|
3
|
+
Gain visibility into request flows across distributed services:
|
|
4
|
+
|
|
5
|
+
> **IMPORTANT**: When using Tracer, install Powertools with the tracer extra: `aws-lambda-powertools[tracer]`. This ensures the required aws_xray_sdk dependency is included.
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
from aws_lambda_powertools import Logger, Tracer
|
|
9
|
+
from aws_lambda_powertools.utilities.typing import LambdaContext
|
|
10
|
+
|
|
11
|
+
logger = Logger(service="payment-service")
|
|
12
|
+
tracer = Tracer(service="payment-service")
|
|
13
|
+
|
|
14
|
+
@tracer.capture_method
|
|
15
|
+
def process_payment(payment_id: str):
|
|
16
|
+
# This function is automatically traced
|
|
17
|
+
# Add business-relevant annotations
|
|
18
|
+
tracer.put_annotation(key="PaymentId", value=payment_id)
|
|
19
|
+
tracer.put_metadata(key="PaymentMethod", value="credit_card")
|
|
20
|
+
|
|
21
|
+
# Your business logic here
|
|
22
|
+
return {"status": "processed"}
|
|
23
|
+
|
|
24
|
+
@logger.inject_lambda_context
|
|
25
|
+
@tracer.capture_lambda_handler # Automatically traces Lambda invocations
|
|
26
|
+
def lambda_handler(event, context: LambdaContext):
|
|
27
|
+
payment_id = event.get("payment_id")
|
|
28
|
+
logger.info("Processing payment", extra={"payment_id": payment_id})
|
|
29
|
+
|
|
30
|
+
result = process_payment(payment_id)
|
|
31
|
+
return result
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Key Benefits
|
|
35
|
+
|
|
36
|
+
- **End-to-end request visibility**: Track requests as they flow through your distributed system
|
|
37
|
+
- **Automatic instrumentation**: AWS SDK calls are automatically traced
|
|
38
|
+
- **Business-relevant annotations**: Add searchable annotations for business context
|
|
39
|
+
- **Performance metrics**: Identify bottlenecks and optimize performance
|
|
40
|
+
- **Error tracking**: Automatically capture and visualize errors in the trace
|
|
41
|
+
|
|
42
|
+
## Best Practices
|
|
43
|
+
|
|
44
|
+
1. **Install with the tracer extra**: Use `pip install "aws-lambda-powertools[tracer]"` to ensure aws_xray_sdk is included
|
|
45
|
+
2. **Initialize the tracer once**: Create the tracer as a global variable
|
|
46
|
+
3. **Use the @tracer.capture_lambda_handler decorator**: This automatically traces the Lambda invocation
|
|
47
|
+
4. **Use @tracer.capture_method for internal functions**: This provides more granular tracing
|
|
48
|
+
5. **Add business context with annotations**: Use put_annotation for searchable fields
|
|
49
|
+
6. **Add additional context with metadata**: Use put_metadata for non-searchable details
|
|
50
|
+
7. **Enable X-Ray tracing in your Lambda function**: Set the tracing mode to Active in your Lambda configuration
|
|
51
|
+
|
|
52
|
+
## CDK Configuration
|
|
53
|
+
|
|
54
|
+
When using CDK, ensure X-Ray tracing is enabled:
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { Tracing } from "aws-cdk-lib/aws-lambda";
|
|
58
|
+
|
|
59
|
+
const function = new Function(this, 'MyFunction', {
|
|
60
|
+
// ... other properties
|
|
61
|
+
tracing: Tracing.ACTIVE, // Enable X-Ray tracing
|
|
62
|
+
});
|
|
63
|
+
```
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Amazon OpenSearch Vector Index Construct Library
|
|
2
|
+
|
|
3
|
+
## Table of contents
|
|
4
|
+
|
|
5
|
+
- [Amazon OpenSearch Vector Index Construct Library](#amazon-opensearch-vector-index-construct-library)
|
|
6
|
+
- [Table of contents](#table-of-contents)
|
|
7
|
+
- [API](#api)
|
|
8
|
+
- [Vector Index](#vector-index)
|
|
9
|
+
- [Example](#example)
|
|
10
|
+
- [TypeScript](#typescript)
|
|
11
|
+
- [Python](#python)
|
|
12
|
+
- [Default values](#default-values)
|
|
13
|
+
|
|
14
|
+
## API
|
|
15
|
+
|
|
16
|
+
See the [API documentation](../../../apidocs/namespaces/opensearch_vectorindex/README.md).
|
|
17
|
+
|
|
18
|
+
## Vector Index
|
|
19
|
+
|
|
20
|
+
The `VectorIndex` resource connects to OpenSearch and creates an index suitable for use with Amazon Bedrock Knowledge Bases.
|
|
21
|
+
|
|
22
|
+
## Example
|
|
23
|
+
|
|
24
|
+
### TypeScript
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import {
|
|
28
|
+
opensearchserverless,
|
|
29
|
+
opensearch_vectorindex,
|
|
30
|
+
} from '@cdklabs/generative-ai-cdk-constructs';
|
|
31
|
+
|
|
32
|
+
const vectorStore = new opensearchserverless.VectorCollection(
|
|
33
|
+
this,
|
|
34
|
+
'VectorCollection'
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
new opensearch_vectorindex.VectorIndex(this, 'VectorIndex', {
|
|
38
|
+
collection: vectorStore,
|
|
39
|
+
indexName: 'bedrock-knowledge-base-default-index',
|
|
40
|
+
vectorField: 'bedrock-knowledge-base-default-vector',
|
|
41
|
+
vectorDimensions: 1536,
|
|
42
|
+
precision: 'float',
|
|
43
|
+
distanceType: 'l2',
|
|
44
|
+
mappings: [
|
|
45
|
+
{
|
|
46
|
+
mappingField: 'AMAZON_BEDROCK_TEXT_CHUNK',
|
|
47
|
+
dataType: 'text',
|
|
48
|
+
filterable: true,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
mappingField: 'AMAZON_BEDROCK_METADATA',
|
|
52
|
+
dataType: 'text',
|
|
53
|
+
filterable: false,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
analyzer: {
|
|
57
|
+
characterFilters: [opensearchserverless.CharacterFilterType.ICU_NORMALIZER],
|
|
58
|
+
tokenizer: opensearchserverless.TokenizerType.KUROMOJI_TOKENIZER,
|
|
59
|
+
tokenFilters: [
|
|
60
|
+
opensearchserverless.TokenFilterType.KUROMOJI_BASEFORM,
|
|
61
|
+
opensearchserverless.TokenFilterType.JA_STOP,
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Python
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from cdklabs.generative_ai_cdk_constructs import (
|
|
71
|
+
opensearchserverless,
|
|
72
|
+
opensearch_vectorindex,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
vectorCollection = opensearchserverless.VectorCollection(self, "VectorCollection")
|
|
76
|
+
|
|
77
|
+
vectorIndex = opensearch_vectorindex.VectorIndex(self, "VectorIndex",
|
|
78
|
+
vector_dimensions= 1536,
|
|
79
|
+
collection=vectorCollection,
|
|
80
|
+
index_name='bedrock-knowledge-base-default-index',
|
|
81
|
+
vector_field='bedrock-knowledge-base-default-vector',
|
|
82
|
+
precision='float',
|
|
83
|
+
distance_type='l2',
|
|
84
|
+
mappings= [
|
|
85
|
+
opensearch_vectorindex.MetadataManagementFieldProps(
|
|
86
|
+
mapping_field='AMAZON_BEDROCK_TEXT_CHUNK',
|
|
87
|
+
data_type='text',
|
|
88
|
+
filterable=True
|
|
89
|
+
),
|
|
90
|
+
opensearch_vectorindex.MetadataManagementFieldProps(
|
|
91
|
+
mapping_field='AMAZON_BEDROCK_METADATA',
|
|
92
|
+
data_type='text',
|
|
93
|
+
filterable=False
|
|
94
|
+
)
|
|
95
|
+
],
|
|
96
|
+
analyzer=opensearchserverless.AnalyzerProps(
|
|
97
|
+
character_filters=[opensearchserverless.CharacterFilterType.ICU_NORMALIZER],
|
|
98
|
+
tokenizer=opensearchserverless.TokenizerType.KUROMOJI_TOKENIZER,
|
|
99
|
+
token_filters=[
|
|
100
|
+
opensearchserverless.TokenFilterType.KUROMOJI_BASEFORM,
|
|
101
|
+
opensearchserverless.TokenFilterType.JA_STOP,
|
|
102
|
+
],
|
|
103
|
+
)
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Default values
|
|
108
|
+
|
|
109
|
+
Behind the scenes, the custom resource creates a k-NN vector in the OpenSearch index, allowing to perform different kinds of k-NN search. The knn_vector field is highly configurable and can serve many different k-NN workloads. It is created as follows:
|
|
110
|
+
|
|
111
|
+
Python
|
|
112
|
+
|
|
113
|
+
```py
|
|
114
|
+
"properties": {
|
|
115
|
+
vector_field: {
|
|
116
|
+
"type": "knn_vector",
|
|
117
|
+
"dimension": dimensions,
|
|
118
|
+
"data_type": precision,
|
|
119
|
+
"method": {
|
|
120
|
+
"engine": "faiss",
|
|
121
|
+
"space_type": distance_type,
|
|
122
|
+
"name": "hnsw",
|
|
123
|
+
"parameters": {},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
"id": {
|
|
127
|
+
"type": "text",
|
|
128
|
+
"fields": {"keyword": {"type": "keyword", "ignore_above": 256}},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Users can currently configure the ```vector_field```, ```dimension```, ```data_type```, and ```distance_type``` fields through the construct interface.
|
|
134
|
+
|
|
135
|
+
For details on the different settings, you can refer to the [Knn plugin documentation](https://opensearch.org/docs/latest/search-plugins/knn/knn-index/).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Amazon OpenSearch Serverless Construct Library
|
|
2
|
+
|
|
3
|
+
## Table of contents
|
|
4
|
+
|
|
5
|
+
- [API](#api)
|
|
6
|
+
- [Vector Collection](#vector-collection)
|
|
7
|
+
|
|
8
|
+
## API
|
|
9
|
+
See the [API documentation](../../../apidocs/namespaces/opensearchserverless/README.md).
|
|
10
|
+
|
|
11
|
+
## Vector Collection
|
|
12
|
+
|
|
13
|
+
This resource creates an Amazon OpenSearch Serverless collection configured for `VECTORSEARCH`. It creates default encryption, network, and data policies for use with Amazon Bedrock Knowledge Bases. For encryption, it uses the default AWS owned KMS key. It allows network connections from the public internet, but access is restricted to specific IAM principals.
|
|
14
|
+
|
|
15
|
+
### Granting Data Access
|
|
16
|
+
|
|
17
|
+
The `grantDataAccess` method grants the specified role access to read and write the data in the collection.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: awslabs.cdk-mcp-server
|
|
3
|
+
Version: 0.0.10417
|
|
4
|
+
Summary: An AWS CDK MCP server that provides guidance on AWS Cloud Development Kit best practices, infrastructure as code patterns, and security compliance with CDK Nag. This server offers tools to validate infrastructure designs, explain CDK Nag rules, analyze suppressions, generate Bedrock Agent schemas, and discover Solutions Constructs patterns.
|
|
5
|
+
Requires-Python: >=3.13
|
|
6
|
+
Requires-Dist: aws-lambda-powertools>=2.30.0
|
|
7
|
+
Requires-Dist: httpx>=0.27.0
|
|
8
|
+
Requires-Dist: mcp[cli]>=1.6.0
|
|
9
|
+
Requires-Dist: pydantic>=2.10.6
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
|
|
12
|
+
# awslabs MCP CDK Expert
|
|
13
|
+
|
|
14
|
+
An AWS CDK expert MCP server that provides guidance on AWS Cloud Development Kit best practices, infrastructure as code patterns, and security compliance with CDK Nag. This server offers tools to validate infrastructure designs, explain CDK Nag rules, analyze suppressions, generate Bedrock Agent schemas, and discover Solutions Constructs patterns.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
awslabs/__init__.py,sha256=4zfFn3N0BkvQmMTAIvV_QAbKp6GWzrwaUN17YeRoChM,115
|
|
2
|
+
awslabs/cdk_mcp_server/__init__.py,sha256=pssyHoTGWcnlIXiZ9U5LiasJMgCp-g8zwo2aY9jASYU,190
|
|
3
|
+
awslabs/cdk_mcp_server/server.py,sha256=KKNPh9zTvUy6uCAzeR2djtJqFCzDkkihUb-9dP_jVpw,134
|
|
4
|
+
awslabs/cdk_mcp_server/core/__init__.py,sha256=wMYtq0d53XTzMmilxj-crP-I445ijE_8A7MH6wL1Fm8,47
|
|
5
|
+
awslabs/cdk_mcp_server/core/resources.py,sha256=nduzytgmiAb3C-RuqcexWgEl_APUYymTQDmZhkAl-NQ,9593
|
|
6
|
+
awslabs/cdk_mcp_server/core/search_utils.py,sha256=Nz8ftv4w9O_1fvCwIJL36GoBMOtHP9XZnTnVhUxVUko,5585
|
|
7
|
+
awslabs/cdk_mcp_server/core/server.py,sha256=1Zc_n4whZJq9q2_eVrmvqnmNaTKL4ftwbiVHmPJ3JAs,2594
|
|
8
|
+
awslabs/cdk_mcp_server/core/tools.py,sha256=dw_RJ-IvfWsaicj6bp_UvyGjtd2hLicXL4RC5doaVk4,11644
|
|
9
|
+
awslabs/cdk_mcp_server/data/__init__.py,sha256=ksA1se4fyvTIb4K7lND-C66ouriFtjyZU96Q88nl6w4,47
|
|
10
|
+
awslabs/cdk_mcp_server/data/cdk_nag_parser.py,sha256=z74FJY3XuIJIxUUd_EbpvBuBRBLf5ZWDr39pdEwk5cE,10904
|
|
11
|
+
awslabs/cdk_mcp_server/data/construct_descriptions.py,sha256=br5gOa5M8Nhv3HrHqrHGXCwQRTu4ZeMAo85bEhzCuMM,2605
|
|
12
|
+
awslabs/cdk_mcp_server/data/genai_cdk_loader.py,sha256=6YqW9ODyw8Gd2I05Suxuo1HPKrB8JPzuzm8CI-psD0E,15494
|
|
13
|
+
awslabs/cdk_mcp_server/data/lambda_powertools_loader.py,sha256=sQfZrmA2hZdd1NSK0hCb5l4kl7jlQ3xhxs28KgEB4Dw,1630
|
|
14
|
+
awslabs/cdk_mcp_server/data/schema_generator.py,sha256=bqEOMCFy0pWw52v66Zobn6xrn0wHLJzOZF3XuKGDfdc,27869
|
|
15
|
+
awslabs/cdk_mcp_server/data/solutions_constructs_parser.py,sha256=TOAye1K5cm6szVNPJQM4aeYblojYL-KNqD9R9uuLfyQ,27632
|
|
16
|
+
awslabs/cdk_mcp_server/static/CDK_GENERAL_GUIDANCE.md,sha256=RAYowPS-9I8dq7YQOPLEAgQ4i9anoQcyRdC2E2_dX_I,9930
|
|
17
|
+
awslabs/cdk_mcp_server/static/CDK_NAG_GUIDANCE.md,sha256=zJtHJp9ruaaJ-xa68k9kDrPmEaXpiWCZZf7JIy8NK0w,5839
|
|
18
|
+
awslabs/cdk_mcp_server/static/__init__.py,sha256=NybWQKuqEx70DXtHCJ5LuFuRn-AOF9M-NjDSiyev6Og,176
|
|
19
|
+
awslabs/cdk_mcp_server/static/bedrock/bedrockguardrails.md,sha256=CX00B7XgDpLbVxvf6B-a13O4NERAJMiaPPeTuKK-8Sw,7386
|
|
20
|
+
awslabs/cdk_mcp_server/static/bedrock/profiles.md,sha256=xxPnEkZ0tJAFKomMuAPLm3EtlQFku6MR2nPu4VoyppE,7195
|
|
21
|
+
awslabs/cdk_mcp_server/static/bedrock/agent/actiongroups.md,sha256=qm6UCCfKurtvNO52g1a6H1N9iBZx-KTCf4SbCK2QQXw,4865
|
|
22
|
+
awslabs/cdk_mcp_server/static/bedrock/agent/alias.md,sha256=eyTmjmHyQbuR5CbFpp2qrEcEqw2l9pMupWERRVksVNw,1293
|
|
23
|
+
awslabs/cdk_mcp_server/static/bedrock/agent/collaboration.md,sha256=nNu30F5ydUbb7HtboUWNhp0hOnQMw8q8shCUjMDwT_A,3616
|
|
24
|
+
awslabs/cdk_mcp_server/static/bedrock/agent/creation.md,sha256=BzpVJkRs_q1ZkW8LnIEh7--57OnNmHHdPCygfGJAks0,6216
|
|
25
|
+
awslabs/cdk_mcp_server/static/bedrock/agent/custom_orchestration.md,sha256=ylMTq3PT3vHnrul_boLuQIGQFuk_Y0evdImp_pLY7rY,2983
|
|
26
|
+
awslabs/cdk_mcp_server/static/bedrock/agent/overview.md,sha256=4FLhC3CC01W9Gpw4S0Z6yWPnM86p2nJ_dxQ1yU4Xsxw,2921
|
|
27
|
+
awslabs/cdk_mcp_server/static/bedrock/agent/prompt_override.md,sha256=ypmKxlO5WIYqUh2gYDzo1Mwzso_HwSkzrMHeDU473C8,2520
|
|
28
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/chunking.md,sha256=TpLXPJso6c4MhWUepX0WsX3FE6FOIsFBPcE28B-3iKM,3203
|
|
29
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/datasources.md,sha256=iHQ086zHzkqHoKLi7pmyMxf0oH02UVHf_GAid6EMdeE,7147
|
|
30
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/kendra.md,sha256=sYbhIAaGjuJ2lifP0xvDXacDEVFC24Gl9giAI6RF9bo,2786
|
|
31
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/overview.md,sha256=AGLS6146UufRTC80EAyAviBhAtb7hFcbMz3tWFviPOc,5167
|
|
32
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/parsing.md,sha256=AQ6TTO5HxKqhtVdv1bM6GjHyDgOICaNi5NtDT9Dxp10,1155
|
|
33
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/transformation.md,sha256=I5Lkn0giUr5n0lTxqjtUsoHNkom6AJtxEnvlarH_54Y,813
|
|
34
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/aurora.md,sha256=CjiJDoaui2H4-nu99Sem4rK_8pQGB_ciI5So5pKWMSQ,5766
|
|
35
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/creation.md,sha256=jXxrwnor7_YUJc9sYCHjrQnCnHQrVItPI7YttcX-mX8,4491
|
|
36
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/opensearch.md,sha256=mM8nILHaFaLfHUaIl7c8Eh0NFx8Z5H4yu5LbC-DmnSU,1368
|
|
37
|
+
awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/pinecone.md,sha256=OnKjSXB6CHBxnXJFGbsIRqpLyA6_S2AiHOJslxQVaOw,2053
|
|
38
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/bedrockguardrails.md,sha256=CX00B7XgDpLbVxvf6B-a13O4NERAJMiaPPeTuKK-8Sw,7386
|
|
39
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/profiles.md,sha256=xxPnEkZ0tJAFKomMuAPLm3EtlQFku6MR2nPu4VoyppE,7195
|
|
40
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/actiongroups.md,sha256=qm6UCCfKurtvNO52g1a6H1N9iBZx-KTCf4SbCK2QQXw,4865
|
|
41
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/alias.md,sha256=eyTmjmHyQbuR5CbFpp2qrEcEqw2l9pMupWERRVksVNw,1293
|
|
42
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/collaboration.md,sha256=nNu30F5ydUbb7HtboUWNhp0hOnQMw8q8shCUjMDwT_A,3616
|
|
43
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/creation.md,sha256=BzpVJkRs_q1ZkW8LnIEh7--57OnNmHHdPCygfGJAks0,6216
|
|
44
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/custom_orchestration.md,sha256=ylMTq3PT3vHnrul_boLuQIGQFuk_Y0evdImp_pLY7rY,2983
|
|
45
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/overview.md,sha256=4FLhC3CC01W9Gpw4S0Z6yWPnM86p2nJ_dxQ1yU4Xsxw,2921
|
|
46
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/prompt_override.md,sha256=ypmKxlO5WIYqUh2gYDzo1Mwzso_HwSkzrMHeDU473C8,2520
|
|
47
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/chunking.md,sha256=TpLXPJso6c4MhWUepX0WsX3FE6FOIsFBPcE28B-3iKM,3203
|
|
48
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/datasources.md,sha256=iHQ086zHzkqHoKLi7pmyMxf0oH02UVHf_GAid6EMdeE,7147
|
|
49
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/kendra.md,sha256=sYbhIAaGjuJ2lifP0xvDXacDEVFC24Gl9giAI6RF9bo,2786
|
|
50
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/overview.md,sha256=AGLS6146UufRTC80EAyAviBhAtb7hFcbMz3tWFviPOc,5167
|
|
51
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/parsing.md,sha256=AQ6TTO5HxKqhtVdv1bM6GjHyDgOICaNi5NtDT9Dxp10,1155
|
|
52
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/transformation.md,sha256=I5Lkn0giUr5n0lTxqjtUsoHNkom6AJtxEnvlarH_54Y,813
|
|
53
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/aurora.md,sha256=CjiJDoaui2H4-nu99Sem4rK_8pQGB_ciI5So5pKWMSQ,5766
|
|
54
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/creation.md,sha256=jXxrwnor7_YUJc9sYCHjrQnCnHQrVItPI7YttcX-mX8,4491
|
|
55
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/opensearch.md,sha256=mM8nILHaFaLfHUaIl7c8Eh0NFx8Z5H4yu5LbC-DmnSU,1368
|
|
56
|
+
awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/pinecone.md,sha256=OnKjSXB6CHBxnXJFGbsIRqpLyA6_S2AiHOJslxQVaOw,2053
|
|
57
|
+
awslabs/cdk_mcp_server/static/genai_cdk/opensearch-vectorindex/overview.md,sha256=0aSuBwX4ubI5WqwEfrnX1MH2UJlJOzdXZQ003fRIrGM,4121
|
|
58
|
+
awslabs/cdk_mcp_server/static/genai_cdk/opensearchserverless/overview.md,sha256=aUO1BRana_xqUPENP3GQyOSCAvV9mI-ZWls7x0g8ruA,746
|
|
59
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/bedrock.md,sha256=Fu54j6sKHdNCUl8FnrIN02kXoTZzdS1g91lURG0ORA4,4292
|
|
60
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/cdk.md,sha256=XBj-31YcphHb1BjCYz4nRpAfPuVJVRmDYI2K7e6Ti8E,3826
|
|
61
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/dependencies.md,sha256=nZ2Fv54rG1rUmD_YHkM9h5VNvB81-Hk8Qx3ZNQSFZLY,1520
|
|
62
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/index.md,sha256=yivjInZAZ3tENKGrrAv7geICzUvKUTskWuaNj9nuPbI,1819
|
|
63
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/insights.md,sha256=t-lgyx2AstqXuY7LeWyhQxknrPN27-nAcwW-GTjI058,3445
|
|
64
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/logging.md,sha256=6CSgD8QB3Bs4s_x4RnbKwZoWvG6aG4etCnmDH6HU9XY,1797
|
|
65
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/metrics.md,sha256=XpQHtNSQRKN3GUqQWkk1lTfQSRC0LmW6VoX1dlwEvnQ,3182
|
|
66
|
+
awslabs/cdk_mcp_server/static/lambda_powertools/tracing.md,sha256=Q3dSCvgktb9sUsuuQ5ONU2Qdb1OTwbNOYpK--MDzBNw,2539
|
|
67
|
+
awslabs/cdk_mcp_server/static/opensearch-vectorindex/overview.md,sha256=0aSuBwX4ubI5WqwEfrnX1MH2UJlJOzdXZQ003fRIrGM,4121
|
|
68
|
+
awslabs/cdk_mcp_server/static/opensearchserverless/overview.md,sha256=aUO1BRana_xqUPENP3GQyOSCAvV9mI-ZWls7x0g8ruA,746
|
|
69
|
+
awslabs_cdk_mcp_server-0.0.10417.dist-info/METADATA,sha256=avkk-nXCT8F_darIG9Iunokw38zL0uBrftGJnlIN1Ns,1000
|
|
70
|
+
awslabs_cdk_mcp_server-0.0.10417.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
71
|
+
awslabs_cdk_mcp_server-0.0.10417.dist-info/entry_points.txt,sha256=LertzmID_mUU1YYZPySAF1IY1zE7ySTvzFxiGyo3VjY,78
|
|
72
|
+
awslabs_cdk_mcp_server-0.0.10417.dist-info/RECORD,,
|