Salta ai contenuti

Server MCP TypeScript

Genera un server TypeScript per il Model Context Protocol (MCP) per fornire contesto ai Grandi Modelli Linguistici (LLM).

Il Model Context Protocol (MCP) è uno standard aperto che permette agli assistenti AI di interagire con strumenti e risorse esterne. Fornisce un modo coerente per i LLM di:

  • Eseguire strumenti (funzioni) che compiono azioni o recuperano informazioni
  • Accedere a risorse che forniscono contesto o dati

Puoi generare un server MCP TypeScript in due modi:

  1. Installa il Nx Console VSCode Plugin se non l'hai già fatto
  2. Apri la console Nx in VSCode
  3. Clicca su Generate (UI) nella sezione "Common Nx Commands"
  4. Cerca @aws/nx-plugin - ts#mcp-server
  5. Compila i parametri richiesti
    • Clicca su Generate
    Parametro Tipo Predefinito Descrizione
    project Obbligatorio string - The project to add an MCP server to
    name string - The name of your MCP server (default: mcp-server)

    Il generatore aggiungerà i seguenti file al tuo progetto TypeScript esistente:

    • Directoryyour-project/
      • Directorysrc/
        • Directorymcp-server/ (o nome personalizzato se specificato)
          • index.ts Punto d’ingresso del server MCP
          • server.ts Definizione principale del server
          • Directorytools/
            • add.ts Strumento di esempio
          • Directoryresources/
            • sample-guidance.ts Risorsa di esempio
      • package.json Aggiornato con entry bin e dipendenze MCP
      • project.json Aggiornato con target serve del server MCP

    Gli strumenti sono funzioni che l’assistente AI può chiamare per eseguire azioni. Puoi aggiungere nuovi strumenti nel file server.ts:

    server.tool("toolName", "tool description",
    { param1: z.string(), param2: z.number() }, // Input schema using Zod
    async ({ param1, param2 }) => {
    // Tool implementation
    return {
    content: [{ type: "text", text: "Result" }]
    };
    }
    );

    Le risorse forniscono contesto all’assistente AI. Puoi aggiungere risorse statiche da file o risorse dinamiche:

    const exampleContext = 'some context to return';
    server.resource('resource-name', 'example://resource', async (uri) => ({
    contents: [{ uri: uri.href, text: exampleContext }],
    }));
    // Risorsa dinamica
    server.resource('dynamic-resource', 'dynamic://resource', async (uri) => {
    const data = await fetchSomeData();
    return {
    contents: [{ uri: uri.href, text: data }],
    };
    });

    La maggior parte degli assistenti AI che supportano MCP utilizza un approccio di configurazione simile. È necessario creare o aggiornare un file di configurazione con i dettagli del server MCP:

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

    Durante lo sviluppo del server MCP, puoi configurare il flag --watch affinché l’assistente AI visualizzi sempre le versioni più recenti di strumenti/risorse:

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

    Consulta la seguente documentazione per configurare MCP con assistenti AI specifici:

    Il modo più semplice per testare e utilizzare un server MCP è configurarlo con un assistente AI (come sopra). Puoi comunque eseguire il server usando il target <your-server-name>-serve, utile se passi dal trasporto STDIO al trasporto HTTP streamabile.

    Terminal window
    pnpm nx run your-project:your-server-name-serve

    Questo comando utilizza tsx --watch per riavviare automaticamente il server quando i file cambiano.