@aws/nx-plugin-mcp 1.0.0-rc.0 → 1.0.0-rc.10
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/bin/aws-nx-mcp.js +3556 -2476
- package/docs/guides/connection/py-agent-a2a.mdx +1 -1
- package/docs/guides/connection/py-agent-mcp.mdx +1 -1
- package/docs/guides/connection/react-agui.mdx +1 -1
- package/docs/guides/connection/react-py-agent.mdx +1 -1
- package/docs/guides/connection/react-smithy.mdx +1 -1
- package/docs/guides/connection/react-trpc.mdx +2 -2
- package/docs/guides/connection/react-ts-agent.mdx +1 -1
- package/docs/guides/connection/smithy-dynamodb.mdx +68 -0
- package/docs/guides/connection/smithy-rdb.mdx +1 -1
- package/docs/guides/connection/trpc-dynamodb.mdx +62 -0
- package/docs/guides/connection/trpc-rdb.mdx +1 -1
- package/docs/guides/connection/ts-agent-a2a.mdx +1 -1
- package/docs/guides/connection/ts-agent-dynamodb.mdx +128 -0
- package/docs/guides/connection/ts-agent-mcp.mdx +1 -1
- package/docs/guides/connection/ts-mcp-server-dynamodb.mdx +125 -0
- package/docs/guides/connection.mdx +29 -0
- package/docs/guides/docker-bundling.mdx +1 -1
- package/docs/guides/fastapi.mdx +11 -11
- package/docs/guides/license.mdx +264 -109
- package/docs/guides/nx-generator.mdx +4 -0
- package/docs/guides/py-agent.mdx +18 -18
- package/docs/guides/py-mcp-server.mdx +10 -6
- package/docs/guides/python-lambda-function.mdx +4 -4
- package/docs/guides/react-website-auth.mdx +15 -0
- package/docs/guides/react-website.mdx +12 -6
- package/docs/guides/trpc.mdx +19 -18
- package/docs/guides/ts-agent.mdx +18 -18
- package/docs/guides/ts-dynamodb.mdx +364 -0
- package/docs/guides/ts-lambda-function.mdx +4 -4
- package/docs/guides/ts-mcp-server.mdx +10 -6
- package/docs/guides/ts-rdb.mdx +53 -9
- package/docs/guides/ts-smithy-api.mdx +9 -8
- package/docs/guides/typescript-project.mdx +5 -10
- package/docs/guides/workspace.mdx +9 -3
- package/docs/snippets/agent/architecture.mdx +4 -4
- package/docs/snippets/agent/bedrock-deployment.mdx +1 -1
- package/docs/snippets/api/api-architecture.mdx +2 -2
- package/docs/snippets/api/type-safe-api-integrations.mdx +2 -2
- package/docs/snippets/connection/dynamodb-local-development.mdx +7 -0
- package/docs/snippets/connection/lambda-dynamodb-access.mdx +80 -0
- package/docs/snippets/lambda-function/deploying-your-function.mdx +2 -2
- package/docs/snippets/mcp/architecture.mdx +4 -4
- package/docs/snippets/mcp/bedrock-deployment.mdx +1 -1
- package/docs/snippets/mcp/config.mdx +1 -1
- package/docs/snippets/required-prerequisites.mdx +1 -1
- package/generators.json +44 -5
- package/package.json +1 -1
- package/src/infra/app/schema.json +1 -1
- package/src/license/schema.json +6 -0
- package/src/preset/schema.json +9 -4
- package/src/py/agent/schema.json +18 -18
- package/src/py/api/schema.json +15 -15
- package/src/py/fast-api/schema.json +15 -15
- package/src/py/lambda-function/schema.json +15 -7
- package/src/py/mcp-server/schema.json +15 -15
- package/src/py/project/schema.json +2 -2
- package/src/smithy/ts/api/schema.json +15 -15
- package/src/trpc/backend/schema.json +15 -15
- package/src/ts/agent/schema.json +18 -18
- package/src/ts/api/schema.json +15 -15
- package/src/ts/dynamodb/agent-connection/schema.json +22 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.json +22 -0
- package/src/ts/dynamodb/schema.json +52 -0
- package/src/ts/dynamodb/smithy-connection/schema.json +18 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +18 -0
- package/src/ts/lambda-function/schema.json +15 -7
- package/src/ts/mcp-server/schema.json +15 -15
- package/src/ts/rdb/schema.json +13 -13
- package/src/ts/react-website/app/schema.json +13 -13
- package/src/ts/react-website/cognito-auth/schema.json +4 -4
- package/src/ts/website/app/schema.json +21 -13
- package/src/ts/website/auth/schema.json +4 -4
|
@@ -11,7 +11,7 @@ import NxCommands from '@components/nx-commands.astro';
|
|
|
11
11
|
import PackageManagerShortCommand from '@components/package-manager-short-command.astro';
|
|
12
12
|
import Link from '@components/link.astro';
|
|
13
13
|
|
|
14
|
-
The TypeScript project generator can be used to create a modern [TypeScript](https://www.typescriptlang.org/) library or application configured with best practices such as [ECMAScript Modules (ESM)](https://www.typescriptlang.org/docs/handbook/modules/reference.html), TypeScript [project references](https://www.typescriptlang.org/docs/handbook/project-references.html), [Vitest](https://vitest.dev/) for running tests and [
|
|
14
|
+
The TypeScript project generator can be used to create a modern [TypeScript](https://www.typescriptlang.org/) library or application configured with best practices such as [ECMAScript Modules (ESM)](https://www.typescriptlang.org/docs/handbook/modules/reference.html), TypeScript [project references](https://www.typescriptlang.org/docs/handbook/project-references.html), [Vitest](https://vitest.dev/) for running tests and [Biome](https://biomejs.dev/) for linting and formatting.
|
|
15
15
|
|
|
16
16
|
## Usage
|
|
17
17
|
|
|
@@ -38,7 +38,6 @@ The generator will create the following project structure in the `<directory>/<n
|
|
|
38
38
|
- tsconfig.lib.json TypeScript configuration for your library (your runtime or packaged source)
|
|
39
39
|
- tsconfig.spec.json TypeScript configuration for your tests
|
|
40
40
|
- vitest.config.mts Configuration for Vitest
|
|
41
|
-
- eslint.config.mjs Configuration for ESLint
|
|
42
41
|
|
|
43
42
|
</FileTree>
|
|
44
43
|
|
|
@@ -198,7 +197,7 @@ If you're building an AWS Lambda function, check out the <Link path="/guides/ts-
|
|
|
198
197
|
|
|
199
198
|
If you are publishing your TypeScript project to NPM, you must create a `package.json` file for it.
|
|
200
199
|
|
|
201
|
-
This must declare the dependencies that your project references. Since at build time your project will resolve dependencies installed via the workspace root `package.json`,
|
|
200
|
+
This must declare the dependencies that your project references. Since at build time your project will resolve dependencies installed via the workspace root `package.json`, Biome's `noUndeclaredDependencies` rule will warn you if your project imports a package that isn't listed in its `package.json`.
|
|
202
201
|
|
|
203
202
|
### Building
|
|
204
203
|
|
|
@@ -269,11 +268,7 @@ If you are a VSCode user, we recommend installing the [Vitest Runner for VSCode
|
|
|
269
268
|
|
|
270
269
|
## Linting
|
|
271
270
|
|
|
272
|
-
TypeScript projects use [
|
|
273
|
-
|
|
274
|
-
We recommend configuring ESLint in the workspace root `eslint.config.mjs` file, as changes to this will apply to all TypeScript projects in your workspace and ensure consistency.
|
|
275
|
-
|
|
276
|
-
Likewise, you can configure Prettier in the root `.prettierrc` file.
|
|
271
|
+
TypeScript projects use [Biome](https://biomejs.dev/) for linting and formatting. Biome is configured in the workspace root `biome.json` file — changes to this apply to all TypeScript projects in your workspace and ensure consistency.
|
|
277
272
|
|
|
278
273
|
### Running the Linter
|
|
279
274
|
|
|
@@ -283,7 +278,7 @@ To invoke the linter to check your project, you can run the `lint` target.
|
|
|
283
278
|
|
|
284
279
|
### Fixing Lint Issues
|
|
285
280
|
|
|
286
|
-
The majority of linting or formatting issues can be fixed automatically
|
|
281
|
+
The majority of linting or formatting issues can be fixed automatically by running with the `--configuration=fix` argument.
|
|
287
282
|
|
|
288
283
|
<NxCommands commands={["lint <project-name> --configuration=fix"]} />
|
|
289
284
|
|
|
@@ -303,7 +298,7 @@ To avoid linting issues slowing you down during development (particularly if you
|
|
|
303
298
|
|
|
304
299
|
<NxCommands commands={["run-many --target build --configuration=skip-lint"]} />
|
|
305
300
|
|
|
306
|
-
This
|
|
301
|
+
This skips the lint target entirely during build.
|
|
307
302
|
|
|
308
303
|
:::tip[Shorthand Command]
|
|
309
304
|
This has a shorthand command from the root of your workspace:
|
|
@@ -29,6 +29,12 @@ When you create a new workspace with `@aws/nx-plugin`, the preset generator sets
|
|
|
29
29
|
- aws-nx-plugin.config.mts Nx Plugin for AWS configuration
|
|
30
30
|
- .git-secrets/ Vendored git-secrets bash script for credential scanning
|
|
31
31
|
- .husky/ Git hooks
|
|
32
|
+
- .mcp.json Nx Plugin for AWS MCP server configuration for Claude Code
|
|
33
|
+
- .cursor/mcp.json ...and for Cursor
|
|
34
|
+
- .kiro/settings/mcp.json ...and for Kiro
|
|
35
|
+
- .gemini/settings.json ...and for Gemini CLI
|
|
36
|
+
- .vscode/mcp.json ...and for GitHub Copilot
|
|
37
|
+
- .codex/config.toml ...and for OpenAI Codex
|
|
32
38
|
</FileTree>
|
|
33
39
|
|
|
34
40
|
## Nx
|
|
@@ -128,7 +134,7 @@ This will run the chosen target as well as the targets it depends on.
|
|
|
128
134
|
|
|
129
135
|
### Linting
|
|
130
136
|
|
|
131
|
-
New workspaces are configured with [
|
|
137
|
+
New workspaces are configured with [Biome](https://biomejs.dev/) for static analysis and code formatting. Running `lint` checks all projects for issues, and `lint --configuration=fix` auto-fixes them.
|
|
132
138
|
|
|
133
139
|
### Git Secrets
|
|
134
140
|
|
|
@@ -167,7 +173,7 @@ import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
|
167
173
|
|
|
168
174
|
export default {
|
|
169
175
|
iac: {
|
|
170
|
-
provider: '
|
|
176
|
+
provider: 'cdk', // or 'terraform'
|
|
171
177
|
},
|
|
172
178
|
containers: {
|
|
173
179
|
engine: 'docker', // or 'finch'
|
|
@@ -175,7 +181,7 @@ export default {
|
|
|
175
181
|
} satisfies AwsNxPluginConfig;
|
|
176
182
|
```
|
|
177
183
|
|
|
178
|
-
- **`iac.provider`** — the default infrastructure-as-code provider (`
|
|
184
|
+
- **`iac.provider`** — the default infrastructure-as-code provider (`cdk` or `terraform`) used by generators that emit infrastructure (e.g. `ts#infra`, `ts#api`, `py#api`). Generators that accept an `--iac` flag default to `inherit`, which reads this value.
|
|
179
185
|
- **`containers.engine`** — the container CLI (`docker` or `finch`) baked into generated build/push/login commands. CDK image-asset builds also pick this up via the `CDK_DOCKER` environment variable. See the <Link path="guides/docker-bundling">Docker bundling guide</Link> for details.
|
|
180
186
|
|
|
181
187
|
You can edit either setting at any time — subsequent generator runs will pick up the new value.
|
|
@@ -3,8 +3,8 @@ title: Agent Architecture
|
|
|
3
3
|
---
|
|
4
4
|
import { Tabs, TabItem } from '@astrojs/starlight/components';
|
|
5
5
|
|
|
6
|
-
<Tabs syncKey="
|
|
7
|
-
<TabItem label="Bedrock AgentCore Runtime" _filter={{
|
|
6
|
+
<Tabs syncKey="infra">
|
|
7
|
+
<TabItem label="Bedrock AgentCore Runtime" _filter={{ infra: 'agentcore' }}>
|
|
8
8
|
|
|
9
9
|
When deployed to [Bedrock AgentCore Runtime](https://aws.amazon.com/bedrock/agentcore/), the agent is built into a container image, pushed to Amazon ECR and run in AgentCore Runtime. Clients invoke the AgentCore Runtime data plane endpoint, which forwards requests to your agent. The agent calls Amazon Bedrock for model inference and may invoke tools, MCP servers, or downstream APIs.
|
|
10
10
|
|
|
@@ -44,9 +44,9 @@ agentcore -> bedrock: InvokeModel
|
|
|
44
44
|
agentcore -> cw
|
|
45
45
|
```
|
|
46
46
|
</TabItem>
|
|
47
|
-
<TabItem label="None (local only)" _filter={{
|
|
47
|
+
<TabItem label="None (local only)" _filter={{ infra: 'none' }}>
|
|
48
48
|
|
|
49
|
-
With `
|
|
49
|
+
With `infra: none`, no AWS infrastructure is generated. The agent runs as a local process and calls Amazon Bedrock for model inference.
|
|
50
50
|
|
|
51
51
|
```d2 inline=true
|
|
52
52
|
direction: right
|
|
@@ -6,7 +6,7 @@ import Infrastructure from '@components/infrastructure.astro';
|
|
|
6
6
|
|
|
7
7
|
### Infrastructure as Code
|
|
8
8
|
|
|
9
|
-
If you selected `
|
|
9
|
+
If you selected `agentcore` for `infra`, the relevant CDK or Terraform infrastructure is generated which you can use to deploy your Agent to [Amazon Bedrock AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agents-tools-runtime.html).
|
|
10
10
|
|
|
11
11
|
<Infrastructure>
|
|
12
12
|
<Fragment slot="cdk">
|
|
@@ -6,7 +6,7 @@ import { Tabs, TabItem } from '@astrojs/starlight/components';
|
|
|
6
6
|
The deployed application has the following architecture:
|
|
7
7
|
|
|
8
8
|
<Tabs syncKey="http-rest">
|
|
9
|
-
<TabItem label="REST API" _filter={{
|
|
9
|
+
<TabItem label="REST API" _filter={{ infra: 'rest-lambda' }}>
|
|
10
10
|
```d2 inline=true
|
|
11
11
|
direction: right
|
|
12
12
|
|
|
@@ -51,7 +51,7 @@ lambda -> xray
|
|
|
51
51
|
|
|
52
52
|
REST APIs include an [AWS WAFv2](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) Web ACL in front of the API Gateway stage with the AWS managed default ruleset enabled.
|
|
53
53
|
</TabItem>
|
|
54
|
-
<TabItem label="HTTP API" _filter={{
|
|
54
|
+
<TabItem label="HTTP API" _filter={{ infra: 'http-lambda' }}>
|
|
55
55
|
```d2 inline=true
|
|
56
56
|
direction: right
|
|
57
57
|
|
|
@@ -306,7 +306,7 @@ Edit `packages/common/terraform/src/app/apis/my-api/my-api.tf`:
|
|
|
306
306
|
3. **Create specific integrations and routes** for each operation, reusing the same ZIP bundle:
|
|
307
307
|
|
|
308
308
|
<Tabs syncKey="http-rest">
|
|
309
|
-
<TabItem label="HTTP API" _filter={{
|
|
309
|
+
<TabItem label="HTTP API" _filter={{ infra: 'http-lambda' }}>
|
|
310
310
|
|
|
311
311
|
```diff
|
|
312
312
|
# packages/common/terraform/src/app/apis/my-api/my-api.tf
|
|
@@ -429,7 +429,7 @@ Edit `packages/common/terraform/src/app/apis/my-api/my-api.tf`:
|
|
|
429
429
|
+ }
|
|
430
430
|
```
|
|
431
431
|
</TabItem>
|
|
432
|
-
<TabItem label="REST API" _filter={{
|
|
432
|
+
<TabItem label="REST API" _filter={{ infra: 'rest-lambda' }}>
|
|
433
433
|
|
|
434
434
|
```diff
|
|
435
435
|
# packages/common/terraform/src/app/apis/my-api/my-api.tf
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: DynamoDB Local Development
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
The `connection` generator configures your project's `serve-local` target to depend on the DynamoDB project's `serve-local` target. DynamoDB Local will start automatically alongside your project when running `serve-local`.
|
|
6
|
+
|
|
7
|
+
The `SERVE_LOCAL=true` environment variable is set automatically, so `getDynamoDBClient()` and `resolveTableName()` connect to the local DynamoDB Local instance instead of AWS.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Lambda DynamoDB Access
|
|
3
|
+
---
|
|
4
|
+
import Infrastructure from '@components/infrastructure.astro';
|
|
5
|
+
|
|
6
|
+
To allow Lambda functions to access the DynamoDB table, grant the necessary permissions in your infrastructure.
|
|
7
|
+
|
|
8
|
+
<Infrastructure>
|
|
9
|
+
<Fragment slot="cdk">
|
|
10
|
+
|
|
11
|
+
Call `grantReadWriteData` on the table construct. This grants both the DynamoDB and KMS permissions required by the Lambda execution role:
|
|
12
|
+
|
|
13
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
14
|
+
import { MyTable } from ':my-scope/common-constructs';
|
|
15
|
+
|
|
16
|
+
const table = new MyTable(this, 'Table');
|
|
17
|
+
|
|
18
|
+
const api = new Api(this, 'Api', {
|
|
19
|
+
integrations: Api.defaultIntegrations(this).build(),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
Object.entries(api.integrations).forEach(([, integration]) => {
|
|
23
|
+
table.grantReadWriteData(integration.handler);
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
:::note
|
|
28
|
+
This example grants every handler in your API access. If only some handlers need access, configure them individually.
|
|
29
|
+
:::
|
|
30
|
+
</Fragment>
|
|
31
|
+
<Fragment slot="terraform">
|
|
32
|
+
|
|
33
|
+
Grant the Lambda execution role permission to access the DynamoDB table and its KMS encryption key:
|
|
34
|
+
|
|
35
|
+
```hcl title="packages/infra/src/main.tf"
|
|
36
|
+
module "my_table" {
|
|
37
|
+
source = "../../common/terraform/src/app/dynamodb/my-table"
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
resource "aws_iam_role_policy" "dynamodb_access" {
|
|
41
|
+
role = module.my_api.lambda_role_name
|
|
42
|
+
|
|
43
|
+
policy = jsonencode({
|
|
44
|
+
Version = "2012-10-17"
|
|
45
|
+
Statement = [
|
|
46
|
+
{
|
|
47
|
+
Effect = "Allow"
|
|
48
|
+
Action = [
|
|
49
|
+
"dynamodb:GetItem",
|
|
50
|
+
"dynamodb:PutItem",
|
|
51
|
+
"dynamodb:UpdateItem",
|
|
52
|
+
"dynamodb:DeleteItem",
|
|
53
|
+
"dynamodb:Query",
|
|
54
|
+
"dynamodb:Scan",
|
|
55
|
+
"dynamodb:BatchGetItem",
|
|
56
|
+
"dynamodb:BatchWriteItem",
|
|
57
|
+
]
|
|
58
|
+
Resource = [
|
|
59
|
+
module.my_table.table_arn,
|
|
60
|
+
"${module.my_table.table_arn}/index/*",
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
Effect = "Allow"
|
|
65
|
+
Action = [
|
|
66
|
+
"kms:Encrypt",
|
|
67
|
+
"kms:Decrypt",
|
|
68
|
+
"kms:ReEncrypt*",
|
|
69
|
+
"kms:GenerateDataKey*",
|
|
70
|
+
"kms:DescribeKey"
|
|
71
|
+
]
|
|
72
|
+
Resource = [module.my_table.kms_key_arn]
|
|
73
|
+
},
|
|
74
|
+
]
|
|
75
|
+
})
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
</Fragment>
|
|
80
|
+
</Infrastructure>
|
|
@@ -30,7 +30,7 @@ This sets up:
|
|
|
30
30
|
This function can then be used as a target for any lambda [event source](https://docs.powertools.aws.dev/lambda/typescript/latest/utilities/parser/):
|
|
31
31
|
|
|
32
32
|
:::note[Event Source Matching]
|
|
33
|
-
Ensure the event source matches the selected `
|
|
33
|
+
Ensure the event source matches the selected `event` option to ensure the event is properly handled within your handler function.
|
|
34
34
|
:::
|
|
35
35
|
|
|
36
36
|
The example below demonstrates the CDK code for invoking your lambda function on a schedule using EventBridge:
|
|
@@ -112,7 +112,7 @@ resource "aws_lambda_permission" "allow_eventbridge" {
|
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
:::note[Event Source Matching]
|
|
115
|
-
Ensure the event source matches the selected `
|
|
115
|
+
Ensure the event source matches the selected `event` option to ensure the event is properly handled within your handler function.
|
|
116
116
|
:::
|
|
117
117
|
</Fragment>
|
|
118
118
|
</Infrastructure>
|
|
@@ -3,8 +3,8 @@ title: MCP Server Architecture
|
|
|
3
3
|
---
|
|
4
4
|
import { Tabs, TabItem } from '@astrojs/starlight/components';
|
|
5
5
|
|
|
6
|
-
<Tabs syncKey="
|
|
7
|
-
<TabItem label="Bedrock AgentCore Runtime" _filter={{
|
|
6
|
+
<Tabs syncKey="infra">
|
|
7
|
+
<TabItem label="Bedrock AgentCore Runtime" _filter={{ infra: 'agentcore' }}>
|
|
8
8
|
|
|
9
9
|
When deployed to [Bedrock AgentCore Runtime](https://aws.amazon.com/bedrock/agentcore/), the MCP server is built into a container image, pushed to Amazon ECR, and run in AgentCore Runtime. AI assistants invoke the AgentCore Runtime data plane endpoint, which forwards `tools/*` and `resources/*` calls to your server over the [streamable HTTP transport](https://modelcontextprotocol.io/specification/draft/basic/transports#streamable-http).
|
|
10
10
|
|
|
@@ -36,9 +36,9 @@ ecr -> agentcore: Container\nimage
|
|
|
36
36
|
agentcore -> cw
|
|
37
37
|
```
|
|
38
38
|
</TabItem>
|
|
39
|
-
<TabItem label="None (local only)" _filter={{
|
|
39
|
+
<TabItem label="None (local only)" _filter={{ infra: 'none' }}>
|
|
40
40
|
|
|
41
|
-
With `
|
|
41
|
+
With `infra: none`, no AWS infrastructure is generated. The MCP server is configured for local STDIO and HTTP transports only, and is consumed by AI assistants running on the same machine.
|
|
42
42
|
|
|
43
43
|
```d2 inline=true
|
|
44
44
|
direction: right
|
|
@@ -6,7 +6,7 @@ import Infrastructure from '@components/infrastructure.astro';
|
|
|
6
6
|
|
|
7
7
|
### Infrastructure as Code
|
|
8
8
|
|
|
9
|
-
If you selected `
|
|
9
|
+
If you selected `agentcore` for `infra`, the relevant CDK or Terraform infrastructure is generated which you can use to deploy your MCP server to [Amazon Bedrock AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agents-tools-runtime.html).
|
|
10
10
|
|
|
11
11
|
<Infrastructure>
|
|
12
12
|
<Fragment slot="cdk">
|
|
@@ -4,7 +4,7 @@ title: Required Prerequisites
|
|
|
4
4
|
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
|
|
5
5
|
- [Node >= 22](https://nodejs.org/en/download) (We recommend using something like [NVM](https://github.com/nvm-sh/nvm) to manage your node versions)
|
|
6
6
|
- verify by running `node --version`
|
|
7
|
-
- [PNPM >=
|
|
7
|
+
- [PNPM >= 11](https://pnpm.io/installation#using-npm) (you can also use [Yarn >= 4](https://yarnpkg.com/getting-started/install), [Bun >= 1](https://bun.sh/docs/installation), or [NPM >= 10](https://nodejs.org/en/learn/getting-started/an-introduction-to-the-npm-package-manager) if you prefer)
|
|
8
8
|
- verify by running `pnpm --version`, `yarn --version`, `bun --version` or `npm --version`
|
|
9
9
|
- [UV >= 0.5.29](https://docs.astral.sh/uv/getting-started/installation/)
|
|
10
10
|
1. install Python 3.14 by running: `uv python install 3.14.0`
|
package/generators.json
CHANGED
|
@@ -100,7 +100,8 @@
|
|
|
100
100
|
"factory": "./src/py/mcp-server/generator",
|
|
101
101
|
"schema": "./src/py/mcp-server/schema.json",
|
|
102
102
|
"description": "Generate a Python Model Context Protocol (MCP) server for providing context to Large Language Models",
|
|
103
|
-
"metric": "g24"
|
|
103
|
+
"metric": "g24",
|
|
104
|
+
"guidePages": ["py-mcp-server"]
|
|
104
105
|
},
|
|
105
106
|
"py#project": {
|
|
106
107
|
"factory": "./src/py/project/generator",
|
|
@@ -113,7 +114,8 @@
|
|
|
113
114
|
"factory": "./src/py/agent/generator",
|
|
114
115
|
"schema": "./src/py/agent/schema.json",
|
|
115
116
|
"description": "Add an AI Agent to a Python project",
|
|
116
|
-
"metric": "g25"
|
|
117
|
+
"metric": "g25",
|
|
118
|
+
"guidePages": ["py-agent"]
|
|
117
119
|
},
|
|
118
120
|
"py#agent#mcp-connection": {
|
|
119
121
|
"factory": "./src/py/agent/mcp-connection/generator",
|
|
@@ -182,7 +184,8 @@
|
|
|
182
184
|
"factory": "./src/ts/mcp-server/generator",
|
|
183
185
|
"schema": "./src/ts/mcp-server/schema.json",
|
|
184
186
|
"description": "Generate a TypeScript Model Context Protocol (MCP) server for providing context to Large Language Models",
|
|
185
|
-
"metric": "g18"
|
|
187
|
+
"metric": "g18",
|
|
188
|
+
"guidePages": ["ts-mcp-server"]
|
|
186
189
|
},
|
|
187
190
|
"ts#nx-generator": {
|
|
188
191
|
"factory": "./src/ts/nx-generator/generator",
|
|
@@ -252,7 +255,8 @@
|
|
|
252
255
|
"factory": "./src/ts/agent/generator",
|
|
253
256
|
"schema": "./src/ts/agent/schema.json",
|
|
254
257
|
"description": "Add an AI Agent to a TypeScript project",
|
|
255
|
-
"metric": "g30"
|
|
258
|
+
"metric": "g30",
|
|
259
|
+
"guidePages": ["ts-agent"]
|
|
256
260
|
},
|
|
257
261
|
"ts#agent#mcp-connection": {
|
|
258
262
|
"factory": "./src/ts/agent/mcp-connection/generator",
|
|
@@ -315,7 +319,8 @@
|
|
|
315
319
|
"factory": "./src/ts/rdb/generator",
|
|
316
320
|
"schema": "./src/ts/rdb/schema.json",
|
|
317
321
|
"description": "Create a relational database project",
|
|
318
|
-
"metric": "g38"
|
|
322
|
+
"metric": "g38",
|
|
323
|
+
"guidePages": ["ts-rdb"]
|
|
319
324
|
},
|
|
320
325
|
"ts#rdb#smithy-connection": {
|
|
321
326
|
"factory": "./src/ts/rdb/smithy-connection/generator",
|
|
@@ -344,6 +349,40 @@
|
|
|
344
349
|
"description": "Connect a ts#mcp-server to a ts#rdb project",
|
|
345
350
|
"metric": "g42",
|
|
346
351
|
"hidden": true
|
|
352
|
+
},
|
|
353
|
+
"ts#dynamodb": {
|
|
354
|
+
"factory": "./src/ts/dynamodb/generator",
|
|
355
|
+
"schema": "./src/ts/dynamodb/schema.json",
|
|
356
|
+
"description": "Create a DynamoDB project",
|
|
357
|
+
"metric": "g43"
|
|
358
|
+
},
|
|
359
|
+
"ts#dynamodb#trpc-connection": {
|
|
360
|
+
"factory": "./src/ts/dynamodb/trpc-connection/generator",
|
|
361
|
+
"schema": "./src/ts/dynamodb/trpc-connection/schema.json",
|
|
362
|
+
"description": "Connect a ts#trpc-api project to a ts#dynamodb project",
|
|
363
|
+
"metric": "g44",
|
|
364
|
+
"hidden": true
|
|
365
|
+
},
|
|
366
|
+
"ts#dynamodb#smithy-connection": {
|
|
367
|
+
"factory": "./src/ts/dynamodb/smithy-connection/generator",
|
|
368
|
+
"schema": "./src/ts/dynamodb/smithy-connection/schema.json",
|
|
369
|
+
"description": "Connect a Smithy backend to a ts#dynamodb project",
|
|
370
|
+
"metric": "g45",
|
|
371
|
+
"hidden": true
|
|
372
|
+
},
|
|
373
|
+
"ts#dynamodb#agent-connection": {
|
|
374
|
+
"factory": "./src/ts/dynamodb/agent-connection/generator",
|
|
375
|
+
"schema": "./src/ts/dynamodb/agent-connection/schema.json",
|
|
376
|
+
"description": "Connect a ts#agent to a ts#dynamodb project",
|
|
377
|
+
"metric": "g46",
|
|
378
|
+
"hidden": true
|
|
379
|
+
},
|
|
380
|
+
"ts#dynamodb#mcp-server-connection": {
|
|
381
|
+
"factory": "./src/ts/dynamodb/mcp-server-connection/generator",
|
|
382
|
+
"schema": "./src/ts/dynamodb/mcp-server-connection/schema.json",
|
|
383
|
+
"description": "Connect a ts#mcp-server to a ts#dynamodb project",
|
|
384
|
+
"metric": "g47",
|
|
385
|
+
"hidden": true
|
|
347
386
|
}
|
|
348
387
|
}
|
|
349
388
|
}
|
package/package.json
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"description": "The sub directory the project is placed in. By default this is the project name.",
|
|
28
28
|
"x-prompt": "Which sub directory do you want to create the project in? (By default this is the project name)"
|
|
29
29
|
},
|
|
30
|
-
"
|
|
30
|
+
"stageConfig": {
|
|
31
31
|
"description": "Enable centralized stage configuration (credentials, account, region) for multi-environment CDK deployments.",
|
|
32
32
|
"type": "boolean",
|
|
33
33
|
"default": false,
|
package/src/license/schema.json
CHANGED
|
@@ -17,6 +17,12 @@
|
|
|
17
17
|
"description": "The copyright holder, included in the LICENSE file and source file headers by default.",
|
|
18
18
|
"default": "Amazon.com, Inc. or its affiliates",
|
|
19
19
|
"x-priority": "important"
|
|
20
|
+
},
|
|
21
|
+
"dependencyCheck": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"description": "Configure a license-check target that fails when dependencies declare licenses outside the configured allowlist.",
|
|
24
|
+
"default": true,
|
|
25
|
+
"x-priority": "important"
|
|
20
26
|
}
|
|
21
27
|
},
|
|
22
28
|
"required": []
|
package/src/preset/schema.json
CHANGED
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
"description": "Whether to add the ts plugin.",
|
|
11
11
|
"default": true
|
|
12
12
|
},
|
|
13
|
-
"
|
|
13
|
+
"iac": {
|
|
14
14
|
"type": "string",
|
|
15
15
|
"description": "The preferred IaC provider.",
|
|
16
|
-
"enum": ["
|
|
17
|
-
"default": "
|
|
16
|
+
"enum": ["cdk", "terraform"],
|
|
17
|
+
"default": "cdk",
|
|
18
18
|
"x-priority": "important",
|
|
19
19
|
"x-prompt": "Which provider would you like to manage your infrastructure?"
|
|
20
20
|
},
|
|
@@ -23,7 +23,12 @@
|
|
|
23
23
|
"description": "Whether to configure git-secrets to prevent committing AWS credentials.",
|
|
24
24
|
"default": true
|
|
25
25
|
},
|
|
26
|
-
"
|
|
26
|
+
"mcp": {
|
|
27
|
+
"type": "boolean",
|
|
28
|
+
"description": "Whether to configure the Nx Plugin for AWS MCP server for use by coding agents.",
|
|
29
|
+
"default": true
|
|
30
|
+
},
|
|
31
|
+
"containers": {
|
|
27
32
|
"type": "string",
|
|
28
33
|
"description": "The container engine to use for build/push/login. 'infer' picks docker if installed, otherwise finch (falling back to docker when neither is installed).",
|
|
29
34
|
"enum": ["infer", "docker", "finch"],
|
package/src/py/agent/schema.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"x-prompt": "Select the Python project to add the Agent to",
|
|
16
16
|
"x-dropdown": "projects"
|
|
17
17
|
},
|
|
18
|
-
"
|
|
18
|
+
"framework": {
|
|
19
19
|
"type": "string",
|
|
20
20
|
"description": "The agent SDK to use.",
|
|
21
21
|
"x-prompt": "Which agent SDK would you like to use?",
|
|
@@ -23,14 +23,6 @@
|
|
|
23
23
|
"default": "strands",
|
|
24
24
|
"x-priority": "important"
|
|
25
25
|
},
|
|
26
|
-
"computeType": {
|
|
27
|
-
"type": "string",
|
|
28
|
-
"description": "The type of compute to host your Agent.",
|
|
29
|
-
"x-prompt": "How would you like to host your Agent server?",
|
|
30
|
-
"enum": ["BedrockAgentCoreRuntime", "None"],
|
|
31
|
-
"default": "BedrockAgentCoreRuntime",
|
|
32
|
-
"x-priority": "important"
|
|
33
|
-
},
|
|
34
26
|
"name": {
|
|
35
27
|
"type": "string",
|
|
36
28
|
"description": "The name of your Agent (default: agent)",
|
|
@@ -38,9 +30,9 @@
|
|
|
38
30
|
},
|
|
39
31
|
"auth": {
|
|
40
32
|
"type": "string",
|
|
41
|
-
"description": "The method used to authenticate with your Agent. Only applicable when
|
|
42
|
-
"default": "
|
|
43
|
-
"enum": ["
|
|
33
|
+
"description": "The method used to authenticate with your Agent. Only applicable when infra is set (ignored when infra is none).",
|
|
34
|
+
"default": "iam",
|
|
35
|
+
"enum": ["iam", "cognito"],
|
|
44
36
|
"x-prompt": "How would you like to authenticate with your Agent?",
|
|
45
37
|
"x-priority": "important"
|
|
46
38
|
},
|
|
@@ -48,17 +40,25 @@
|
|
|
48
40
|
"type": "string",
|
|
49
41
|
"description": "The server protocol for your Agent. HTTP exposes a FastAPI HTTP server. A2A exposes an Agent-to-Agent protocol server. AG-UI exposes an Agent-User Interaction protocol server for direct frontend integration.",
|
|
50
42
|
"x-prompt": "Which protocol would you like to use for your Agent?",
|
|
51
|
-
"enum": ["
|
|
52
|
-
"default": "
|
|
43
|
+
"enum": ["http", "a2a", "ag-ui"],
|
|
44
|
+
"default": "http",
|
|
53
45
|
"x-priority": "important"
|
|
54
46
|
},
|
|
55
|
-
"
|
|
47
|
+
"iac": {
|
|
56
48
|
"type": "string",
|
|
57
49
|
"description": "The preferred IaC provider. By default this is inherited from your initial selection.",
|
|
58
|
-
"enum": ["
|
|
50
|
+
"enum": ["inherit", "cdk", "terraform"],
|
|
59
51
|
"x-priority": "important",
|
|
60
|
-
"default": "
|
|
61
|
-
"x-prompt": "Which provider would you like to manage your infrastructure? (default:
|
|
52
|
+
"default": "inherit",
|
|
53
|
+
"x-prompt": "Which provider would you like to manage your infrastructure? (default: inherit)"
|
|
54
|
+
},
|
|
55
|
+
"infra": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "The type of infrastructure to host your Agent.",
|
|
58
|
+
"x-prompt": "How would you like to host your Agent server?",
|
|
59
|
+
"enum": ["agentcore", "none"],
|
|
60
|
+
"default": "agentcore",
|
|
61
|
+
"x-priority": "important"
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
"required": ["project"]
|
package/src/py/api/schema.json
CHANGED
|
@@ -33,14 +33,6 @@
|
|
|
33
33
|
},
|
|
34
34
|
"x-priority": "important"
|
|
35
35
|
},
|
|
36
|
-
"computeType": {
|
|
37
|
-
"type": "string",
|
|
38
|
-
"description": "The type of compute to use to deploy this API. Choose between ServerlessApiGatewayRestApi (default) or ServerlessApiGatewayHttpApi.",
|
|
39
|
-
"default": "ServerlessApiGatewayRestApi",
|
|
40
|
-
"enum": ["ServerlessApiGatewayRestApi", "ServerlessApiGatewayHttpApi"],
|
|
41
|
-
"x-prompt": "What compute type would you like to deploy your API with?",
|
|
42
|
-
"x-priority": "important"
|
|
43
|
-
},
|
|
44
36
|
"integrationPattern": {
|
|
45
37
|
"type": "string",
|
|
46
38
|
"description": "How API Gateway integrations are generated for the API. Choose between isolated (default) and shared.",
|
|
@@ -65,9 +57,9 @@
|
|
|
65
57
|
},
|
|
66
58
|
"auth": {
|
|
67
59
|
"type": "string",
|
|
68
|
-
"description": "The method used to authenticate with your API. Choose between
|
|
69
|
-
"default": "
|
|
70
|
-
"enum": ["
|
|
60
|
+
"description": "The method used to authenticate with your API. Choose between iam (default), cognito or custom.",
|
|
61
|
+
"default": "iam",
|
|
62
|
+
"enum": ["iam", "cognito", "custom"],
|
|
71
63
|
"x-prompt": "How would you like users to authenticate with your API?",
|
|
72
64
|
"x-priority": "important"
|
|
73
65
|
},
|
|
@@ -83,17 +75,25 @@
|
|
|
83
75
|
"description": "The sub directory the project is placed in. By default this is the project name.",
|
|
84
76
|
"x-prompt": "Which sub directory do you want to create the project in? (By default this is the project name)"
|
|
85
77
|
},
|
|
86
|
-
"
|
|
78
|
+
"iac": {
|
|
87
79
|
"type": "string",
|
|
88
80
|
"description": "The preferred IaC provider. By default this is inherited from your initial selection.",
|
|
89
|
-
"enum": ["
|
|
81
|
+
"enum": ["inherit", "cdk", "terraform"],
|
|
90
82
|
"x-priority": "important",
|
|
91
|
-
"default": "
|
|
92
|
-
"x-prompt": "Which provider would you like to manage your infrastructure? (default:
|
|
83
|
+
"default": "inherit",
|
|
84
|
+
"x-prompt": "Which provider would you like to manage your infrastructure? (default: inherit)"
|
|
93
85
|
},
|
|
94
86
|
"moduleName": {
|
|
95
87
|
"type": "string",
|
|
96
88
|
"description": "Python module name"
|
|
89
|
+
},
|
|
90
|
+
"infra": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"description": "The type of infrastructure to use to deploy this API.",
|
|
93
|
+
"default": "rest-lambda",
|
|
94
|
+
"enum": ["rest-lambda", "http-lambda", "none"],
|
|
95
|
+
"x-prompt": "What infrastructure would you like to deploy your API with?",
|
|
96
|
+
"x-priority": "important"
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
"required": ["name"]
|