TypeScript Nx Plugin
Generate a complete TypeScript Nx Plugin with an integrated Model Context Protocol (MCP) server. This generator creates a foundation for building custom generators that can be seamlessly used by AI assistants for automated code generation and project scaffolding.
Generate an Nx Plugin
Section titled “Generate an Nx Plugin”You can generate a TypeScript Nx Plugin in two ways:
- Install the Nx Console VSCode Plugin if you haven't already
- Open the Nx Console in VSCode
- Click
Generate (UI)
in the "Common Nx Commands" section - Search for
@aws/nx-plugin - ts#nx-plugin
- Fill in the required parameters
- Click
Generate
pnpm nx g @aws/nx-plugin:ts#nx-plugin
yarn nx g @aws/nx-plugin:ts#nx-plugin
npx nx g @aws/nx-plugin:ts#nx-plugin
bunx nx g @aws/nx-plugin:ts#nx-plugin
You can also perform a dry-run to see what files would be changed
pnpm nx g @aws/nx-plugin:ts#nx-plugin --dry-run
yarn nx g @aws/nx-plugin:ts#nx-plugin --dry-run
npx nx g @aws/nx-plugin:ts#nx-plugin --dry-run
bunx nx g @aws/nx-plugin:ts#nx-plugin --dry-run
Options
Section titled “Options”Parameter | Type | Default | Description |
---|---|---|---|
name Required | string | - | TypeScript project name |
directory | string | packages | Parent directory where the library is placed. |
subDirectory | string | - | The sub directory the lib is placed in. By default this is the library name. |
Generator Output
Section titled “Generator Output”The generator will create the following project structure:
Directoryyour-plugin/
Directorysrc/
- index.ts Empty entry point for your plugin
Directorymcp-server/
- index.ts MCP server entry point
- server.ts Main MCP server configuration
Directorytools/
- create-workspace-command.ts Tool for workspace creation guidance
- general-guidance.ts Tool for general Nx and plugin guidance
- list-generators.ts Tool to list available generators
- generator-guide.ts Tool for detailed generator information
- utils.ts Utility functions for the MCP server
- generators.json Nx generator configuration (initially empty)
- package.json Plugin package configuration with MCP server binary
- tsconfig.json TypeScript configuration (CommonJS for Nx compatibility)
- project.json Nx project configuration with build and package targets
Working with Your Nx Plugin
Section titled “Working with Your Nx Plugin”Adding Generators
Section titled “Adding Generators”Once you have your plugin project, you can add generators using the ts#nx-generator
generator:
- Install the Nx Console VSCode Plugin if you haven't already
- Open the Nx Console in VSCode
- Click
Generate (UI)
in the "Common Nx Commands" section - Search for
@aws/nx-plugin - ts#nx-generator
- Fill in the required parameters
- pluginProject: your-plugin
- Click
Generate
pnpm nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin
yarn nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin
npx nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin
bunx nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin
You can also perform a dry-run to see what files would be changed
pnpm nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin --dry-run
yarn nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin --dry-run
npx nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin --dry-run
bunx nx g @aws/nx-plugin:ts#nx-generator --pluginProject=your-plugin --dry-run
This will add a new generator to your plugin.
Make sure to write a detailed README.md
for your generator, since this is used by the MCP Server’s generator-guide
tool.
Project Targets
Section titled “Project Targets”The generated plugin includes several important targets:
Build Target
Section titled “Build Target”Compiles your TypeScript code and prepares the plugin for use:
pnpm nx build your-plugin
yarn nx build your-plugin
npx nx build your-plugin
bunx nx build your-plugin
Package Target
Section titled “Package Target”Creates a distributable package ready for NPM publishing:
pnpm nx package your-plugin
yarn nx package your-plugin
npx nx package your-plugin
bunx nx package your-plugin
The package target includes all necessary assets:
- Compiled JavaScript files
- TypeScript declaration files
- Generator and executor configuration files
- Documentation and license files
MCP Server Integration
Section titled “MCP Server Integration”The plugin configures an MCP server using the ts#mcp-server
generator.
The plugin includes a complete MCP server that provides AI assistants the following tools:
general-guidance
: Get best practices for working with Nx and your plugincreate-workspace-command
: Learn how to create new workspaces that can use your pluginlist-generators
: List all available generators in your plugingenerator-guide
: Get detailed information about specific generators including schemas and usage
Configuring with AI Assistants
Section titled “Configuring with AI Assistants”Configuration Files
Section titled “Configuration Files”Most AI assistants that support MCP use a similar configuration approach. You’ll need to create or update a configuration file with your MCP server details:
{ "mcpServers": { "your-mcp-server": { "command": "npx", "args": ["tsx", "/path/to/your-mcp-server/index.ts"] } }}
Hot Reload
Section titled “Hot Reload”While developing your MCP server, you may wish to configure the --watch
flag so that the AI assistant always sees the latest versions of tools/resources:
{ "mcpServers": { "your-mcp-server": { "command": "npx", "args": ["tsx", "--watch", "/path/to/your-mcp-server/index.ts"] } }}
Assistant-Specific Configuration
Section titled “Assistant-Specific Configuration”Please refer to the following documentation for configuring MCP with specific AI Assistants:
Customizing the MCP Server
Section titled “Customizing the MCP Server”You can extend the MCP server by modifying server.ts
to add additional tools or resources specific to your plugin’s domain.
For more details about writing MCP Servers, refer to the ts#mcp-server
guide.
Publishing Your Plugin
Section titled “Publishing Your Plugin”Preparing for Publication
Section titled “Preparing for Publication”-
Update Package Information: Edit your plugin’s
package.json
with proper name, version, description, and repository information. -
Build the Package:
Terminal window pnpm nx package your-pluginTerminal window yarn nx package your-pluginTerminal window npx nx package your-pluginTerminal window bunx nx package your-plugin -
Test Locally: You can test your plugin locally by installing it in another workspace:
Terminal window npm install /path/to/your/workspace/dist/your-plugin/package
Publishing to NPM
Section titled “Publishing to NPM”Once your plugin is ready:
cd dist/your-plugin/packagenpm publish
Using Published Plugins
Section titled “Using Published Plugins”After publishing, others can install and use your plugin:
pnpm add -w your-plugin-name
yarn add your-plugin-name
npm install --legacy-peer-deps your-plugin-name
bun install your-plugin-name
Then use your generators:
- Install the Nx Console VSCode Plugin if you haven't already
- Open the Nx Console in VSCode
- Click
Generate (UI)
in the "Common Nx Commands" section - Search for
your-plugin-name - your-generator-name
- Fill in the required parameters
- Click
Generate
pnpm nx g your-plugin-name:your-generator-name
yarn nx g your-plugin-name:your-generator-name
npx nx g your-plugin-name:your-generator-name
bunx nx g your-plugin-name:your-generator-name
You can also perform a dry-run to see what files would be changed
pnpm nx g your-plugin-name:your-generator-name --dry-run
yarn nx g your-plugin-name:your-generator-name --dry-run
npx nx g your-plugin-name:your-generator-name --dry-run
bunx nx g your-plugin-name:your-generator-name --dry-run
Configure AI Assistants with your Published Plugin
Section titled “Configure AI Assistants with your Published Plugin”Your published plugin’s MCP server can be configured as follows:
{ "mcpServers": { "aws-nx-mcp": { "command": "npx", "args": ["-y", "-p", "your-plugin-name", "your-plugin-name-mcp-server"] } }}