ts#mcp-server
Generatore di Server TypeScript MCP
Genera un server TypeScript per il Model Context Protocol (MCP) per fornire contesto ai Large Language Model (LLM).
Cos’è il MCP?
Il Model Context Protocol (MCP) è uno standard aperto che consente 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
Utilizzo
Generare un Server MCP
Puoi generare un server MCP TypeScript in due modi:
- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)
nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - ts#mcp-server
- Compila i parametri richiesti
- Clicca su
Generate
pnpm nx g @aws/nx-plugin:ts#mcp-server
yarn nx g @aws/nx-plugin:ts#mcp-server
npx nx g @aws/nx-plugin:ts#mcp-server
bunx nx g @aws/nx-plugin:ts#mcp-server
Puoi anche eseguire una prova per vedere quali file verrebbero modificati
pnpm nx g @aws/nx-plugin:ts#mcp-server --dry-run
yarn nx g @aws/nx-plugin:ts#mcp-server --dry-run
npx nx g @aws/nx-plugin:ts#mcp-server --dry-run
bunx nx g @aws/nx-plugin:ts#mcp-server --dry-run
Opzioni
Parametro | Tipo | Predefinito | Descrizione |
---|---|---|---|
name Obbligatorio | string | - | MCP server project name. |
directory | string | packages | Parent directory where the MCP server is placed. |
subDirectory | string | - | The sub directory the MCP server is placed in. By default this is the MCP server project name. |
Output del Generatore
Il generatore creerà i seguenti file del progetto:
Directorypackages/<name>/
- README.md Documentazione del server MCP con istruzioni d’uso
- project.json Configurazione del progetto Nx con target per build, bundle e dev
Directorysrc/
- index.ts Punto d’ingresso del server MCP
- server.ts Definizione principale del server, con strumenti e risorse
- global.d.ts Dichiarazioni di tipo TypeScript per importare file markdown
Directoryresources/
- example-context.md File markdown di esempio usato come risorsa per il server MCP
Lavorare con il Tuo Server MCP
Aggiungere Strumenti
Gli strumenti sono funzioni che l’assistente AI può chiamare per eseguire azioni. Puoi aggiungere nuovi strumenti nel file server.ts
:
server.tool("toolName", { param1: z.string(), param2: z.number() }, // Schema di input usando Zod async ({ param1, param2 }) => { // Implementazione dello strumento return { content: [{ type: "text", text: "Result" }] }; });
Aggiungere Risorse
Le risorse forniscono contesto all’assistente AI. Puoi aggiungere risorse statiche da file o risorse dinamiche:
// Risorsa statica da fileimport exampleContext from './resources/example-context.md';
server.resource('resource-name', 'example://resource', async (uri) => ({ contents: [{ uri: uri.href, text: exampleContext }],}));
// Risorsa dinamicaserver.resource('dynamic-resource', 'dynamic://resource', async (uri) => { const data = await fetchSomeData(); return { contents: [{ uri: uri.href, text: data }], };});
Configurazione con Assistanti AI
Per utilizzare il tuo server MCP con assistanti AI, devi prima creare un bundle:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx nx run your-mcp-server:bundle
Questo crea una versione aggregata in dist/packages/your-mcp-server/bundle/index.js
(il percorso può variare in base alle impostazioni della directory).
File di Configurazione
La maggior parte degli assistanti AI che supportano MCP utilizza un approccio simile alla configurazione. Dovrai creare o aggiornare un file di configurazione con i dettagli del tuo server MCP:
{ "mcpServers": { "your-mcp-server": { "command": "node", "args": [ "/path/to/workspace/dist/packages/your-mcp-server/bundle/index.js" ], "transportType": "stdio" } }}
Sostituisci /path/to/workspace/dist/packages/your-mcp-server/bundle/index.js
con il percorso effettivo del tuo server MCP aggregato.
Configurazione Specifica per Assistente
Consulta la seguente documentazione per configurare MCP con assistenti AI specifici:
Workflow di Sviluppo
Target di Build
Il generatore si basa sul generatore di progetti TypeScript e ne eredita i target, aggiungendo inoltre i seguenti target:
Bundle
Il task bundle
utilizza esbuild per creare un singolo file JavaScript aggregato utilizzabile con gli assistenti AI:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx nx run your-mcp-server:bundle
Questo crea una versione aggregata in dist/packages/your-mcp-server/bundle/index.js
(il percorso può variare in base alle impostazioni della directory).
Dev
Il task dev
monitora le modifiche nel progetto e ricostruisce automaticamente il bundle:
pnpm nx run your-mcp-server:dev
yarn nx run your-mcp-server:dev
npx nx run your-mcp-server:dev
bunx nx run your-mcp-server:dev
Particolarmente utile durante lo sviluppo, garantisce che l’assistente AI utilizzi sempre l’ultima versione del tuo server MCP.