Aller au contenu

TypeScript Nx Plugin

Générez un Nx Plugin TypeScript complet avec un serveur Model Context Protocol (MCP) intégré. Ce générateur crée une fondation pour construire des générateurs personnalisés qui peuvent être utilisés de manière transparente par les assistants IA pour la génération automatique de code et l’échafaudage de projets.

Vous pouvez générer un TypeScript Nx Plugin de deux manières :

Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-plugin
Vous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-plugin --dry-run
ParamètreTypePar défautDescription
name Requisstring-Nom du projet TypeScript
directory stringpackagesRépertoire parent où la bibliothèque est placée.
subDirectory string-Le sous-répertoire dans lequel la bibliothèque est placée. Par défaut, il s'agit du nom de la bibliothèque.
preferInstallDependencies booleantrueIndique s'il faut privilégier l'installation des dépendances après l'exécution du générateur. Définir sur false pour différer l'installation lors de l'exécution de plusieurs générateurs en lot (une installation s'exécute quand même si nécessaire pour que les générateurs suivants puissent calculer le graphe de projet Nx) ; installer une seule fois à la fin.

Le générateur créera la structure de projet suivante :

  • Répertoireyour-plugin/
    • Répertoiresrc/
      • index.ts Empty entry point for your plugin
      • Répertoiremcp-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
        • Répertoiretools/
          • 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

Une fois que vous avez votre projet de plugin, vous pouvez ajouter des générateurs en utilisant le générateur ts#nx-generator :

Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-generator --project=your-plugin
Vous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
Terminal window
pnpm nx g @aws/nx-plugin:ts#nx-generator --project=your-plugin --dry-run

Cela ajoutera un nouveau générateur à votre plugin.

Assurez-vous d’écrire un README.md détaillé pour votre générateur, car celui-ci est utilisé par l’outil generator-guide du serveur MCP.

Le plugin généré inclut plusieurs cibles importantes :

Compile votre code TypeScript et prépare le plugin pour utilisation :

Terminal window
pnpm nx build your-plugin

Crée un package distribuable prêt pour la publication NPM :

Terminal window
pnpm nx package your-plugin

La cible package inclut tous les actifs nécessaires :

  • Fichiers JavaScript compilés
  • Fichiers de déclaration TypeScript
  • Fichiers de configuration des générateurs et exécuteurs
  • Fichiers de documentation et de licence

Le plugin configure un serveur MCP en utilisant le générateur ts#mcp-server.

Le plugin inclut un serveur MCP complet qui fournit aux assistants IA les outils suivants :

  • general-guidance : Obtenez les meilleures pratiques pour travailler avec Nx et votre plugin
  • create-workspace-command : Apprenez comment créer de nouveaux espaces de travail pouvant utiliser votre plugin
  • list-generators : Listez tous les générateurs disponibles dans votre plugin
  • generator-guide : Obtenez des informations détaillées sur des générateurs spécifiques, y compris les schémas et l’utilisation

La plupart des assistants IA qui prennent en charge MCP utilisent une approche de configuration similaire. Vous devrez créer ou mettre à jour un fichier de configuration avec les détails de votre serveur MCP :

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

Lors du développement de votre serveur MCP, vous pouvez souhaiter configurer le flag --watch afin que l’assistant IA voie toujours les dernières versions des outils/ressources :

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

Veuillez vous référer à la documentation suivante pour configurer MCP avec des assistants IA spécifiques :

Vous pouvez étendre le serveur MCP en modifiant server.ts pour ajouter des outils ou des ressources supplémentaires spécifiques au domaine de votre plugin.

Pour plus de détails sur l’écriture de serveurs MCP, consultez le guide ts#mcp-server.

  1. Mettre à jour les informations du package : Modifiez le package.json de votre plugin avec un nom, une version, une description et des informations de dépôt appropriés.

  2. Construire le package :

    Terminal window
    pnpm nx package your-plugin
  3. Tester localement : Vous pouvez tester votre plugin localement en l’installant dans un autre espace de travail :

    Fenêtre de terminal
    npm install /path/to/your/workspace/dist/your-plugin/package

Une fois que votre plugin est prêt :

Fenêtre de terminal
cd dist/your-plugin/package
npm publish

Après publication, d’autres peuvent installer et utiliser votre plugin :

Terminal window
pnpm add -w your-plugin-name

Puis utilisez vos générateurs :

Terminal window
pnpm nx g your-plugin-name:your-generator-name
Vous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
Terminal window
pnpm nx g your-plugin-name:your-generator-name --dry-run

Configurer les assistants IA avec votre plugin publié

Section intitulée « Configurer les assistants IA avec votre plugin publié »

Le serveur MCP de votre plugin publié peut être configuré comme suit :

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