Skip to main content
Glama

Marco MCP

Un marco de TypeScript para crear servidores de Protocolo de Contexto de Modelo (MCP).

Cambios respecto al original

Esta bifurcación (@ronangrant/mcp-framework) incluye las siguientes mejoras:

  • Se reemplazó el registro basado en archivos con un registro solo en la consola para lograr una mejor compatibilidad y confiabilidad.

  • Se eliminó la dependencia del sistema de archivos para los registros, eliminando así los errores ENOENT

  • Implementación de registro simplificada manteniendo la misma interfaz

  • Todos los registros ahora se envían a stderr a través de console.error()

Related MCP server: MCP Server Starter (TypeScript)

Instalación

npm install @ronangrant/mcp-framework

Uso

Crear un nuevo servidor MCP:

import { MCPServer } from '@ronangrant/mcp-framework';

const server = new MCPServer({
  name: "my-server",
  version: "1.0.0"
});

await server.start();

Características

  • API fácil de usar para crear servidores MCP

  • Soporte integrado para herramientas, indicaciones y recursos

  • Sistema de registro simplificado con salida de consola

  • Compatibilidad total con TypeScript

  • Opciones de transporte flexibles

Licencia

Instituto Tecnológico de Massachusetts (MIT)

MCP-Framework es un marco para construir servidores de Protocolo de Contexto de Modelo (MCP) de manera elegante en TypeScript.

MCP-Framework le ofrece una arquitectura lista para usar, con descubrimiento automático basado en directorios para herramientas, recursos y solicitudes. Utilice nuestras potentes abstracciones de MCP para definir herramientas, recursos o solicitudes de forma elegante. Nuestra CLI facilita enormemente la creación de su propio servidor MCP.

Características

  • 🛠️ Descubrimiento y carga automáticos de herramientas, recursos y avisos

  • Compatibilidad con múltiples transportes (stdio, SSE)

  • Desarrollo basado en TypeScript con seguridad de tipos completa

  • Desarrollado sobre el SDK oficial de MCP

  • Clases base fáciles de usar para herramientas, indicaciones y recursos

  • Autenticación lista para usar para puntos finales de SSE

Lea los documentos completos aquí

Creación de un repositorio con mcp-framework

Uso de la CLI (recomendado)

# Install the framework globally
npm install -g mcp-framework

# Create a new MCP server project
mcp create my-mcp-server

# Navigate to your project
cd my-mcp-server

# Your server is ready to use!

Uso de la CLI

El marco proporciona una potente CLI para administrar sus proyectos de servidor MCP:

Creación de proyectos

# Create a new project
mcp create <your project name here>

Agregar una herramienta

# Add a new tool
mcp add tool price-fetcher

Agregar un mensaje

# Add a new prompt
mcp add prompt price-analysis

Agregar un recurso

# Add a new prompt
mcp add resource market-data

Flujo de trabajo de desarrollo

  1. Crea tu proyecto:

  mcp create my-mcp-server
  cd my-mcp-server
  1. Agregue herramientas según sea necesario:

    mcp add tool data-fetcher
    mcp add tool data-processor
    mcp add tool report-generator
  2. Construir:

    npm run build
    
  3. Agregar al cliente MCP (lea a continuación el ejemplo de Claude Desktop)

Uso con Claude Desktop

Desarrollo local

Agregue esta configuración a su archivo de configuración de Claude Desktop:

MacOS : `~/Biblioteca/Soporte de aplicaciones/Claude/claude_desktop_config.json` Windows : `%APPDATA%/Claude/claude_desktop_config.json`

{
"mcpServers": {
"${projectName}": {
      "command": "node",
      "args":["/absolute/path/to/${projectName}/dist/index.js"]
}
}
}

Después de la publicación

Agregue esta configuración a su archivo de configuración de Claude Desktop:

MacOS : `~/Biblioteca/Soporte de aplicaciones/Claude/claude_desktop_config.json` Windows : `%APPDATA%/Claude/claude_desktop_config.json`

{
"mcpServers": {
"${projectName}": {
      "command": "npx",
      "args": ["${projectName}"]
}
}
}

Construcción y pruebas

  1. Realizar cambios en sus herramientas

  2. Ejecute `npm run build` para compilar

  3. El servidor cargará automáticamente sus herramientas al iniciarse

Inicio rápido

Creando una herramienta

import { MCPTool } from "mcp-framework";
import { z } from "zod";

interface ExampleInput {
  message: string;
}

class ExampleTool extends MCPTool<ExampleInput> {
  name = "example_tool";
  description = "An example tool that processes messages";

  schema = {
    message: {
      type: z.string(),
      description: "Message to process",
    },
  };

  async execute(input: ExampleInput) {
    return `Processed: ${input.message}`;
  }
}

export default ExampleTool;

Configuración del servidor

import { MCPServer } from "mcp-framework";

const server = new MCPServer();

// OR (mutually exclusive!) with SSE transport
const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      port: 8080            // Optional (default: 8080)
    }
  }
});

// Start the server
await server.start();

Configuración de transporte

Transporte stdio (predeterminado)

El transporte stdio se utiliza de forma predeterminada si no se proporciona ninguna configuración de transporte:

const server = new MCPServer();
// or explicitly:
const server = new MCPServer({
  transport: { type: "stdio" }
});

Transporte SSE

Para utilizar el transporte de eventos enviados por el servidor (SSE):

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      port: 8080,            // Optional (default: 8080)
      endpoint: "/sse",      // Optional (default: "/sse")
      messageEndpoint: "/messages", // Optional (default: "/messages")
      cors: {
        allowOrigin: "*",    // Optional (default: "*")
        allowMethods: "GET, POST, OPTIONS", // Optional (default: "GET, POST, OPTIONS")
        allowHeaders: "Content-Type, Authorization, x-api-key", // Optional (default: "Content-Type, Authorization, x-api-key")
        exposeHeaders: "Content-Type, Authorization, x-api-key", // Optional (default: "Content-Type, Authorization, x-api-key")
        maxAge: "86400"      // Optional (default: "86400")
      }
    }
  }
});

Configuración de CORS

El transporte SSE admite una configuración flexible de CORS. De forma predeterminada, utiliza configuraciones permisivas, adecuadas para el desarrollo. Para producción, debe configurar CORS según sus requisitos de seguridad:

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      // Restrict to specific origin
      cors: {
        allowOrigin: "https://myapp.com",
        allowMethods: "GET, POST",
        allowHeaders: "Content-Type, Authorization",
        exposeHeaders: "Content-Type, Authorization",
        maxAge: "3600"
      }
    }
  }
});

// Or with multiple allowed origins
const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      cors: {
        allowOrigin: "https://app1.com, https://app2.com",
        allowMethods: "GET, POST, OPTIONS",
        allowHeaders: "Content-Type, Authorization, Custom-Header",
        exposeHeaders: "Content-Type, Authorization",
        maxAge: "86400"
      }
    }
  }
});

Autenticación

El marco MCP ofrece autenticación opcional para los endpoints SSE. Puede elegir entre autenticación mediante JWT y clave API, o implementar su propio proveedor de autenticación personalizado.

Autenticación JWT

import { MCPServer, JWTAuthProvider } from "mcp-framework";
import { Algorithm } from "jsonwebtoken";

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      auth: {
        provider: new JWTAuthProvider({
          secret: process.env.JWT_SECRET,
          algorithms: ["HS256" as Algorithm], // Optional (default: ["HS256"])
          headerName: "Authorization"         // Optional (default: "Authorization")
        }),
        endpoints: {
          sse: true,      // Protect SSE endpoint (default: false)
          messages: true  // Protect message endpoint (default: true)
        }
      }
    }
  }
});

Los clientes deben incluir un token JWT válido en el encabezado de autorización:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Autenticación de clave API

import { MCPServer, APIKeyAuthProvider } from "mcp-framework";

const server = new MCPServer({
  transport: {
    type: "sse",
    options: {
      auth: {
        provider: new APIKeyAuthProvider({
          keys: [process.env.API_KEY],
          headerName: "X-API-Key" // Optional (default: "X-API-Key")
        })
      }
    }
  }
});

Los clientes deben incluir una clave API válida en el encabezado X-API-Key:

X-API-Key: your-api-key

Autenticación personalizada

Puede implementar su propio proveedor de autenticación implementando la interfaz AuthProvider :

import { AuthProvider, AuthResult } from "mcp-framework";
import { IncomingMessage } from "node:http";

class CustomAuthProvider implements AuthProvider {
  async authenticate(req: IncomingMessage): Promise<boolean | AuthResult> {
    // Implement your custom authentication logic
    return true;
  }

  getAuthError() {
    return {
      status: 401,
      message: "Authentication failed"
    };
  }
}

Licencia

Instituto Tecnológico de Massachusetts (MIT)

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A TypeScript implementation of a Model Context Protocol server that provides a frictionless framework for developers to build and deploy AI tools and prompts, focusing on developer experience with zero boilerplate and automatic tool registration.
    2,013
    14
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A minimal, production-ready TypeScript starter template for building Model Context Protocol (MCP) servers with auto-loading architecture for tools, resources, and prompts. Provides boilerplate code, generators, and examples to quickly create MCP servers that can connect AI applications to any data source or tool.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A TypeScript framework for building Model Context Protocol servers with a decorator-based API, enabling custom tools, resources, and prompts for AI applications.
    22
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A TypeScript toolkit for building Model Context Protocol servers with tools, prompts, resources, middleware, and testing helpers, reducing boilerplate.
    146
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ronangrant/mcp-framework'

If you have feedback or need assistance with the MCP directory API, please join our Discord server