Skip to main content
Glama

MCP Framework

by ronangrant

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()

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)

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Un marco de TypeScript para crear servidores de Protocolo de Contexto de Modelo (MCP) con descubrimiento y carga automáticos de herramientas, recursos y avisos.

  1. Cambios respecto al original
    1. Instalación
      1. Uso
        1. Características
          1. Licencia
            1. Características
              1. Lea los documentos completos aquí
                1. Creación de un repositorio con mcp-framework
                2. Uso de la CLI
                3. Flujo de trabajo de desarrollo
                4. Uso con Claude Desktop
                5. Construcción y pruebas
                6. Inicio rápido
                7. Configuración de transporte
                8. Autenticación
                9. Licencia

              Related MCP Servers

              • A
                security
                A
                license
                A
                quality
                A production-ready template for creating Model Context Protocol servers with TypeScript, providing tools for efficient testing, development, and deployment.
                Last updated -
                1
                1
                12
                JavaScript
                MIT License
              • A
                security
                F
                license
                A
                quality
                A TypeScript-based template for developing Model Context Protocol servers with features like dependency injection and service-based architecture, facilitating the creation and integration of custom data processing tools.
                Last updated -
                1
                2
                TypeScript
              • A
                security
                F
                license
                A
                quality
                A template for creating Model Context Protocol (MCP) servers in TypeScript, offering features like container-based dependency injection, a service-based architecture, and integration with the LLM CLI for architectural design feedback through natural language.
                Last updated -
                1
                5
                TypeScript
              • A
                security
                A
                license
                A
                quality
                A TypeScript-based template for building Model Context Protocol servers, featuring fast testing, automated version management, and a clean structure for MCP tool implementations.
                Last updated -
                1
                1
                2
                TypeScript
                MIT License

              View all related MCP servers

              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