typescript-mcp-server-generator

Par github · awesome-copilot

Générer un projet de serveur MCP complet en TypeScript avec des outils, des ressources et une configuration appropriée

npx skills add https://github.com/github/awesome-copilot --skill typescript-mcp-server-generator

Générer un serveur MCP TypeScript

Créer un serveur Model Context Protocol (MCP) complet en TypeScript avec les spécifications suivantes :

Exigences

  1. Structure du projet : Créer un nouveau projet TypeScript/Node.js avec une structure de répertoires appropriée
  2. Packages NPM : Inclure @modelcontextprotocol/sdk, zod@3, et soit express (pour HTTP) soit le support stdio
  3. Configuration TypeScript : Un tsconfig.json approprié avec support des modules ES
  4. Type de serveur : Choisir entre un serveur basé sur HTTP (avec transport HTTP Streamable) ou stdio
  5. Outils : Créer au moins un outil utile avec validation de schéma appropriée
  6. Gestion d'erreurs : Inclure une gestion d'erreurs et une validation complètes

Détails d'implémentation

Configuration du projet

  • Initialiser avec npm init et créer package.json
  • Installer les dépendances : @modelcontextprotocol/sdk, zod@3, et les packages spécifiques au transport
  • Configurer TypeScript avec les modules ES : "type": "module" dans package.json
  • Ajouter les dépendances de développement : tsx ou ts-node pour le développement
  • Créer un fichier .gitignore approprié

Configuration du serveur

  • Utiliser la classe McpServer pour l'implémentation de haut niveau
  • Définir le nom et la version du serveur
  • Choisir le transport approprié (StreamableHTTPServerTransport ou StdioServerTransport)
  • Pour HTTP : configurer Express avec les middlewares et la gestion d'erreurs appropriés
  • Pour stdio : utiliser StdioServerTransport directement

Implémentation des outils

  • Utiliser la méthode registerTool() avec des noms descriptifs
  • Définir les schémas en utilisant zod pour la validation des entrées et sorties
  • Fournir des champs clairs title et description
  • Retourner à la fois content et structuredContent dans les résultats
  • Implémenter une gestion d'erreurs appropriée avec les blocs try-catch
  • Supporter les opérations asynchrones le cas échéant

Configuration des ressources/invites (Optionnel)

  • Ajouter des ressources en utilisant registerResource() avec ResourceTemplate pour les URI dynamiques
  • Ajouter des invites en utilisant registerPrompt() avec des schémas d'arguments
  • Envisager d'ajouter le support de la complétion pour une meilleure expérience utilisateur

Qualité du code

  • Utiliser TypeScript pour la sécurité des types
  • Suivre les modèles async/await de manière cohérente
  • Implémenter un nettoyage approprié lors des événements de fermeture du transport
  • Utiliser les variables d'environnement pour la configuration
  • Ajouter des commentaires en ligne pour la logique complexe
  • Structurer le code avec une séparation claire des responsabilités

Types d'outils à considérer

  • Traitement et transformation de données
  • Intégrations d'API externes
  • Opérations sur le système de fichiers (lire, chercher, analyser)
  • Requêtes de base de données
  • Analyse de texte ou résumé (avec échantillonnage)
  • Récupération d'informations système

Options de configuration

  • Pour les serveurs HTTP :

    • Configuration du port via variables d'environnement
    • Configuration CORS pour les clients navigateur
    • Gestion de session (sans état vs avec état)
    • Protection contre le rebinding DNS pour les serveurs locaux
  • Pour les serveurs stdio :

    • Gestion appropriée de stdin/stdout
    • Configuration basée sur l'environnement
    • Gestion du cycle de vie du processus

Conseils de test

  • Expliquer comment exécuter le serveur (npm start ou npx tsx server.ts)
  • Fournir la commande MCP Inspector : npx @modelcontextprotocol/inspector
  • Pour les serveurs HTTP, inclure l'URL de connexion : http://localhost:PORT/mcp
  • Inclure des exemples d'invocations d'outils
  • Ajouter des conseils de dépannage pour les problèmes courants

Fonctionnalités supplémentaires à considérer

  • Support de l'échantillonnage pour les outils alimentés par des LLM
  • Sollicitation d'entrée utilisateur pour les workflows interactifs
  • Enregistrement dynamique des outils avec les capacités d'activation/désactivation
  • Débounce des notifications pour les mises à jour en masse
  • Liens de ressources pour les références de données efficaces

Générer un serveur MCP complet, prêt pour la production, avec documentation complète, sécurité des types et gestion d'erreurs.

Skills similaires