ts#mcp-server
Generador de servidor MCP en TypeScript
Genera un servidor Model Context Protocol (MCP) en TypeScript para proporcionar contexto a Modelos de Lenguaje Grande (LLMs).
¿Qué es MCP?
El Model Context Protocol (MCP) es un estándar abierto que permite a asistentes de IA interactuar con herramientas y recursos externos. Proporciona una forma consistente para que los LLMs puedan:
- Ejecutar herramientas (funciones) que realizan acciones o recuperan información
- Acceder a recursos que proveen contexto o datos
Uso
Generar un servidor MCP
Puedes generar un servidor MCP en TypeScript de dos formas:
- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)
en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - ts#mcp-server
- Complete los parámetros requeridos
- Haga clic en
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
También puede realizar una ejecución en seco para ver qué archivos se cambiarían
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
Opciones
Parámetro | Tipo | Predeterminado | Descripción |
---|---|---|---|
name Requerido | 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. |
Salida del generador
El generador creará los siguientes archivos del proyecto:
Directorypackages/<name>/
- README.md Documentación del servidor MCP con instrucciones de uso
- project.json Configuración del proyecto Nx con objetivos de build, bundle y dev
Directorysrc/
- index.ts Punto de entrada del servidor MCP
- server.ts Definición principal del servidor, incluyendo herramientas y recursos
- global.d.ts Declaraciones de tipos TypeScript para importar archivos markdown
Directoryresources/
- example-context.md Archivo markdown de ejemplo usado como recurso para el servidor MCP
Trabajando con tu servidor MCP
Añadiendo herramientas
Las herramientas son funciones que el asistente de IA puede llamar para realizar acciones. Puedes añadir nuevas herramientas en el archivo server.ts
:
server.tool("toolName", "tool description", { param1: z.string(), param2: z.number() }, // Esquema de entrada usando Zod async ({ param1, param2 }) => { // Implementación de la herramienta return { content: [{ type: "text", text: "Result" }] }; });
Añadiendo recursos
Los recursos proveen contexto al asistente de IA. Puedes añadir recursos estáticos desde archivos o recursos dinámicos:
// Recurso estático desde un archivoimport exampleContext from './resources/example-context.md';
server.resource('resource-name', 'example://resource', async (uri) => ({ contents: [{ uri: uri.href, text: exampleContext }],}));
// Recurso dinámicoserver.resource('dynamic-resource', 'dynamic://resource', async (uri) => { const data = await fetchSomeData(); return { contents: [{ uri: uri.href, text: data }], };});
Configuración con asistentes de IA
Para usar tu servidor MCP con asistentes de IA, primero debes empaquetarlo:
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
Esto crea una versión empaquetada en dist/packages/your-mcp-server/bundle/index.js
(la ruta puede variar según tu configuración de directorios).
Archivos de configuración
La mayoría de asistentes de IA que soportan MCP usan un enfoque de configuración similar. Necesitarás crear o actualizar un archivo de configuración con los detalles de tu servidor MCP:
{ "mcpServers": { "your-mcp-server": { "command": "node", "args": [ "/path/to/workspace/dist/packages/your-mcp-server/bundle/index.js" ], "transportType": "stdio" } }}
Reemplaza /path/to/workspace/dist/packages/your-mcp-server/bundle/index.js
con la ruta real a tu servidor MCP empaquetado.
Configuración específica por asistente
Consulta la siguiente documentación para configurar MCP con asistentes de IA específicos:
Flujo de desarrollo
Objetivos de build
El generador está construido sobre el generador de proyectos TypeScript y por lo tanto hereda sus objetivos, además de añadir los siguientes objetivos adicionales:
Bundle
La tarea bundle
usa esbuild para crear un único archivo JavaScript empaquetado que puede usarse con asistentes de IA:
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
Esto crea una versión empaquetada en dist/packages/your-mcp-server/bundle/index.js
(la ruta puede variar según tu configuración de directorios).
Dev
La tarea dev
monitorea cambios en tu proyecto y reconstruye automáticamente el 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
Esto es particularmente útil durante el desarrollo, ya que asegura que tu asistente de IA utilice la versión más reciente de tu servidor MCP.