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:
Run this generator@aws/nx-plugin:ts#nx-plugin
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- 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
Build your command4
Required
Options
Section titled “Options”nameRequiredstringTypeScript project name
directorystringDefault:packagesParent directory where the library is placed.
subDirectorystringThe sub directory the lib is placed in. By default this is the library name.
preferInstallDependenciesbooleanDefault:trueWhether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.
Generator Output
Section titled “Generator Output”The generator will create the following project structure:
Directoryyour-plugin/
Directorysrc/
- index.ts Entry point for your plugin
Directorymcp-server/
- index.ts Exports your server
- server.ts Main MCP server configuration
- stdio.ts Entry point for your MCP server with STDIO transport
- http.ts Entry point for your MCP server with Streamable HTTP transport
- schema.ts Shared schemas for the MCP server’s tools
- utils.ts Utility functions for the MCP server
Directoryresources/
- GENERAL_GUIDANCE.md Guidance served by the
general-guidancetool
- GENERAL_GUIDANCE.md Guidance served by the
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
- generators.json Nx generator configuration (initially empty)
- package.json Plugin package configuration
- project.json Nx project configuration with build and package targets
- tsconfig.json TypeScript configuration, referencing the two below
- tsconfig.lib.json TypeScript configuration for your plugin’s source
- tsconfig.spec.json TypeScript configuration for your plugin’s tests
- vitest.config.mts Vitest configuration for your plugin’s tests
- README.md Documentation for your plugin, served by the
generator-guidetool - LICENSE Written by the
licensegenerator’s sync, when configured
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:
Run this generator@aws/nx-plugin:ts#nx-generator
pnpm nx g @aws/nx-plugin:ts#nx-generator yarn nx g @aws/nx-plugin:ts#nx-generator npx nx g @aws/nx-plugin:ts#nx-generator bunx nx g @aws/nx-plugin:ts#nx-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
- Click
Generate
Build your command5
Required
Required
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-pluginyarn nx build your-pluginnpx nx build your-pluginbunx nx build your-pluginPackage Target
Section titled “Package Target”Creates a distributable package ready for NPM publishing:
pnpm nx package your-pluginyarn nx package your-pluginnpx nx package your-pluginbunx nx package your-pluginThe package target includes all necessary assets:
- Compiled JavaScript files
- TypeScript declaration files
- The
generators.json,executors.jsonandmigrations.jsonmanifests Nx reads from a published plugin - 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/stdio.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/stdio.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.jsonwith proper name, version, description, and repository information. Also remove"private": true. -
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-pluginThe package lands in
dist/<your-plugin's project root>/package— for a plugin generated with--name=nx-plugin --directory=tools, that’sdist/tools/nx-plugin/package. -
Test Locally: You can test your plugin locally by installing it in another workspace:
Terminal window npm install /path/to/your/workspace/dist/tools/nx-plugin/package
Publishing to NPM
Section titled “Publishing to NPM”Once your plugin is ready:
cd dist/tools/nx-plugin/packagenpm publishUsing Published Plugins
Section titled “Using Published Plugins”After publishing, others can install and use your plugin:
pnpm add -w your-plugin-nameyarn add your-plugin-namenpm install --legacy-peer-deps your-plugin-namebun add your-plugin-nameThen use your generators:
Run this generatoryour-plugin-name:your-generator-name
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- 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
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"] } }}