Skip to main content
Glama

MCP 프레임워크

MCP(Model Context Protocol) 서버를 구축하기 위한 TypeScript 프레임워크입니다.

원본과의 변경 사항

이 포크(@ronangrant/mcp-framework)에는 다음과 같은 개선 사항이 포함되어 있습니다.

  • 더 나은 호환성과 안정성을 위해 파일 기반 로깅을 콘솔 전용 로깅으로 교체했습니다.

  • 로그에 대한 파일 시스템 종속성을 제거하여 ENOENT 오류를 제거했습니다.

  • 동일한 인터페이스를 유지하면서 로깅 구현을 간소화했습니다.

  • 이제 모든 로그가 console.error()를 통해 stderr로 출력됩니다.

설치

지엑스피1

용법

새로운 MCP 서버를 만듭니다.

import { MCPServer } from '@ronangrant/mcp-framework'; const server = new MCPServer({ name: "my-server", version: "1.0.0" }); await server.start();

특징

  • MCP 서버 생성을 위한 사용하기 쉬운 API

  • 도구, 프롬프트 및 리소스에 대한 기본 지원

  • 콘솔 출력을 통한 간소화된 로깅 시스템

  • 전체 TypeScript 지원

  • 유연한 운송 옵션

특허

MIT

MCP-Framework은 TypeScript에서 Model Context Protocol(MCP) 서버를 우아하게 구축하기 위한 프레임워크입니다.

MCP-Framework는 도구, 리소스 및 프롬프트에 대한 자동 디렉터리 기반 검색 기능을 통해 즉시 사용 가능한 아키텍처를 제공합니다. 강력한 MCP 추상화를 사용하여 도구, 리소스 또는 프롬프트를 세련되게 정의하세요. CLI를 사용하면 MCP 서버를 손쉽게 시작할 수 있습니다.

특징

  • 🛠️ 도구, 리소스 및 프롬프트의 자동 검색 및 로딩

  • 다중 전송 지원(stdio, SSE)

  • 완전한 유형 안전성을 갖춘 TypeScript 우선 개발

  • 공식 MCP SDK 기반으로 구축됨

  • 도구, 프롬프트 및 리소스를 위한 사용하기 쉬운 기본 클래스

  • SSE 엔드포인트에 대한 기본 인증

전체 문서를 여기에서 읽어보세요

mcp-framework로 저장소 만들기

CLI 사용(권장)

# 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!

CLI 사용법

이 프레임워크는 MCP 서버 프로젝트를 관리하기 위한 강력한 CLI를 제공합니다.

프로젝트 생성

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

도구 추가

# Add a new tool mcp add tool price-fetcher

프롬프트 추가

# Add a new prompt mcp add prompt price-analysis

리소스 추가

# Add a new prompt mcp add resource market-data

개발 워크플로

  1. 프로젝트를 생성하세요:

mcp create my-mcp-server cd my-mcp-server
  1. 필요에 따라 도구를 추가하세요:

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

    npm run build
  3. MCP 클라이언트에 추가(Claude Desktop 예제는 아래를 참조하세요)

Claude Desktop과 함께 사용

지역 개발

Claude Desktop 구성 파일에 다음 구성을 추가하세요.

MacOS : `~/라이브러리/애플리케이션 지원/클로드/클로드_데스크탑_config.json` Windows : `%APPDATA%/클로드/클로드_데스크탑_config.json`

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

출판 후

Claude Desktop 구성 파일에 다음 구성을 추가하세요.

MacOS : `~/라이브러리/애플리케이션 지원/클로드/클로드_데스크탑_config.json` Windows : `%APPDATA%/클로드/클로드_데스크탑_config.json`

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

빌딩 및 테스트

  1. 도구를 변경하세요

  2. `npm run build`를 실행하여 컴파일합니다.

  3. 서버는 시작 시 자동으로 도구를 로드합니다.

빠른 시작

도구 만들기

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;

서버 설정

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

전송 구성

stdio 전송(기본값)

전송 구성이 제공되지 않으면 기본적으로 stdio 전송이 사용됩니다.

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

SSE 운송

SSE(Server-Sent Events) 전송을 사용하려면:

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") } } } });

CORS 구성

SSE 전송은 유연한 CORS 구성을 지원합니다. 기본적으로 개발 환경에 적합한 허용 설정을 사용합니다. 프로덕션 환경에서는 보안 요구 사항에 따라 CORS를 구성해야 합니다.

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" } } } });

입증

MCP 프레임워크는 SSE 엔드포인트에 대한 선택적 인증을 제공합니다. JWT와 API 키 인증 중 하나를 선택하거나, 사용자 지정 인증 공급자를 직접 구현할 수 있습니다.

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) } } } } });

클라이언트는 Authorization 헤더에 유효한 JWT 토큰을 포함해야 합니다.

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

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") }) } } } });

클라이언트는 X-API-Key 헤더에 유효한 API 키를 포함해야 합니다.

X-API-Key: your-api-key

사용자 정의 인증

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" }; } }

특허

MIT

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

Related MCP Servers

  • 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
    7
    7
  • 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
    32
    3
    MIT License
  • -
    security
    -
    license
    -
    quality
    A starter template for creating Model Context Protocol servers using TypeScript, providing basic setup and sample tool implementation for developers to build their own MCP servers.
  • -
    security
    F
    license
    -
    quality
    A template repository for building Model Context Protocol (MCP) servers with TypeScript, featuring full TypeScript support, testing setup, CI/CD pipelines, and modular architecture for easy extension.
    Last updated -
    1

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