Skip to content

TypeScript Nx Plugin

統合されたModel Context Protocol (MCP)サーバーを備えた完全なTypeScript Nx Pluginを生成します。このジェネレーターは、AIアシスタントによる自動コード生成とプロジェクトスキャフォールディングにシームレスに使用できるカスタムジェネレーターを構築するための基盤を作成します。

TypeScript Nxプラグインは2つの方法で生成できます:

Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-plugin
変更されるファイルを確認するためにドライランを実行することもできます
Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-plugin --dry-run
パラメータデフォルト説明
name 必須string-TypeScriptプロジェクト名
directory stringpackagesライブラリが配置される親ディレクトリ
subDirectory string-ライブラリが配置されるサブディレクトリ。デフォルトではライブラリ名になります。
preferInstallDependencies booleantrueジェネレーター実行後に依存関係のインストールを優先するかどうか。複数のジェネレーターをバッチ処理する際にインストールを延期する場合は false に設定します(後続のジェネレーターが Nx プロジェクトグラフを計算できるよう、必要に応じてインストールは実行されます)。最後に一度だけインストールします。

ジェネレーターは以下のプロジェクト構造を作成します:

  • Directoryyour-plugin/
    • Directorysrc/
      • index.ts Empty 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
        • 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
    • tsconfig.json TypeScript configuration (CommonJS for Nx compatibility)
    • project.json Nx project configuration with build and package targets

プラグインプロジェクトを作成したら、ts#nx-generatorジェネレーターを使用してジェネレーターを追加できます:

Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-generator --project=your-plugin
変更されるファイルを確認するためにドライランを実行することもできます
Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-generator --project=your-plugin --dry-run

これにより、プラグインに新しいジェネレーターが追加されます。

MCPサーバーのgenerator-guideツールで使用されるため、ジェネレーター用に詳細なREADME.mdを必ず記述してください。

生成されたプラグインには、いくつかの重要なターゲットが含まれています:

TypeScriptコードをコンパイルし、プラグインを使用できるように準備します:

Terminal window
pnpm nx build your-plugin

NPM公開用の配布可能なパッケージを作成します:

Terminal window
pnpm nx package your-plugin

パッケージターゲットには、必要なすべてのアセットが含まれます:

  • コンパイルされたJavaScriptファイル
  • TypeScript宣言ファイル
  • ジェネレーターとエグゼキューターの設定ファイル
  • ドキュメントとライセンスファイル

プラグインはts#mcp-serverジェネレーターを使用してMCPサーバーを設定します。

プラグインには、AIアシスタントに以下のツールを提供する完全なMCPサーバーが含まれています:

  • general-guidance: Nxとプラグインでのベストプラクティスを取得
  • create-workspace-command: プラグインを使用できる新しいワークスペースの作成方法を学習
  • list-generators: プラグイン内の利用可能なすべてのジェネレーターをリスト
  • generator-guide: スキーマと使用方法を含む特定のジェネレーターに関する詳細情報を取得

MCP をサポートするほとんどの AI アシスタントは、同様の設定アプローチを使用します。MCP サーバーの詳細を含む設定ファイルを作成または更新する必要があります:

{
"mcpServers": {
"your-mcp-server": {
"command": "npx",
"args": ["tsx", "/path/to/your-mcp-server/stdio.ts"]
}
}
}

MCP サーバーを開発している間、AI アシスタントが常に最新バージョンのツール/リソースを認識できるように --watch フラグを設定することをお勧めします:

{
"mcpServers": {
"your-mcp-server": {
"command": "npx",
"args": ["tsx", "--watch", "/path/to/your-mcp-server/stdio.ts"]
}
}
}

特定の AI アシスタントで MCP を設定するには、以下のドキュメントを参照してください:

server.tsを変更して、プラグインのドメインに固有の追加のツールやリソースを追加することで、MCPサーバーを拡張できます。

MCPサーバーの記述の詳細については、ts#mcp-serverガイドを参照してください。

  1. パッケージ情報の更新: プラグインのpackage.jsonを適切な名前、バージョン、説明、リポジトリ情報で編集します。

  2. パッケージのビルド:

    Terminal window
    pnpm nx package your-plugin
  3. ローカルでのテスト: 別のワークスペースにインストールすることで、プラグインをローカルでテストできます:

    Terminal window
    npm install /path/to/your/workspace/dist/your-plugin/package

プラグインの準備ができたら:

Terminal window
cd dist/your-plugin/package
npm publish

公開後、他のユーザーがプラグインをインストールして使用できます:

Terminal window
pnpm add -w your-plugin-name

次に、ジェネレーターを使用します:

Terminal window
pnpm nx g your-plugin-name:your-generator-name
変更されるファイルを確認するためにドライランを実行することもできます
Terminal window
pnpm nx g your-plugin-name:your-generator-name --dry-run

公開されたプラグインでAIアシスタントを設定する

Section titled “公開されたプラグインでAIアシスタントを設定する”

公開されたプラグインのMCPサーバーは、次のように設定できます:

{
"mcpServers": {
"aws-nx-mcp": {
"command": "npx",
"args": ["-y", "-p", "your-plugin-name", "your-plugin-name-mcp-server"]
}
}
}