Saltearse al contenido

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 los asistentes de IA interactuar con herramientas y recursos externos. Proporciona una forma consistente para que los LLMs puedan:

  • Ejecutar herramientas (funciones) que realizan acciones u obtienen 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:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - ts#mcp-server
  5. Complete los parámetros requeridos
    • Haga clic en Generate

    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/<nombre>/
      • README.md Documentación del servidor MCP con instrucciones de uso
      • project.json Configuración de 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, con 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",
    { param1: z.string(), param2: z.number() }, // Esquema de entrada usando Zod
    async ({ param1, param2 }) => {
    // Implementación de la herramienta
    return {
    content: [{ type: "text", text: "Resultado" }]
    };
    }
    );

    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 archivo
    import exampleContext from './resources/example-context.md';
    server.resource('nombre-recurso', 'example://recurso', async (uri) => ({
    contents: [{ uri: uri.href, text: exampleContext }],
    }));
    // Recurso dinámico
    server.resource('recurso-dinamico', 'dynamic://recurso', async (uri) => {
    const data = await obtenerDatos();
    return {
    contents: [{ uri: uri.href, text: data }],
    };
    });

    Configuración con Asistentes de IA

    Para usar tu servidor MCP con asistentes de IA, primero debes agruparlo (bundle):

    Terminal window
    pnpm nx run tu-servidor-mcp:bundle

    Esto crea una versión agrupada en dist/packages/tu-servidor-mcp/bundle/index.js (la ruta puede variar según tu configuración).

    Archivos de Configuración

    La mayoría de asistentes de IA que soportan MCP usan un enfoque similar de configuración. Deberás crear o actualizar un archivo de configuración con los detalles de tu servidor MCP:

    {
    "mcpServers": {
    "tu-servidor-mcp": {
    "command": "node",
    "args": [
    "/ruta/al/workspace/dist/packages/tu-servidor-mcp/bundle/index.js"
    ],
    "transportType": "stdio"
    }
    }
    }

    Reemplaza /ruta/al/workspace/dist/packages/tu-servidor-mcp/bundle/index.js con la ruta real a tu servidor MCP agrupado.

    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 tanto hereda sus objetivos, además de añadir los siguientes:

    Bundle

    La tarea bundle usa esbuild para crear un único archivo JavaScript agrupado que puede usarse con asistentes de IA:

    Terminal window
    pnpm nx run tu-servidor-mcp:bundle

    Esto crea una versión agrupada en dist/packages/tu-servidor-mcp/bundle/index.js (la ruta puede variar según tu configuración).

    Dev

    La tarea dev monitorea cambios en tu proyecto y reconstruye automáticamente el bundle:

    Terminal window
    pnpm nx run tu-servidor-mcp:dev

    Es particularmente útil durante el desarrollo, ya que asegura que tu asistente de IA utilice la última versión de tu servidor MCP.