MCP Framework

Integrations

  • Supports distribution through npm, allowing developers to publish their MCP servers and have users install them with a simple npx command.

  • Built specifically for TypeScript with full type safety, enabling developers to create MCP tools, prompts, and resources with proper typing and validation.

  • Uses Zod for schema validation in tools, allowing developers to define input validation schemas for tool parameters with proper typing and runtime validation.

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

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. Changes from Original
    1. Installation
      1. Usage
        1. Features
          1. License
            1. Features
              1. Read the full docs here
                1. Creating a repository with mcp-framework
                2. CLI Usage
                3. Development Workflow
                4. Using with Claude Desktop
                5. Building and Testing
                6. Quick Start
                7. Transport Configuration
                8. Authentication
                9. License
              ID: u9oawtxwj5