MCP-SERVER-TEMPLATE

by vyasa1986

Integrations

  • Loads environment variables from .env files for server configuration, enabling customization of transport types, HTTP settings, authentication, and logging options.

  • Provides HTTP request utilities through the 'serviceRequest' function in httpUtils.ts, supporting authenticated API requests with OAuth2 or API key authentication, retries, and response validation.

  • Implements the HTTP transport layer using Express to handle POST requests to the /mcp endpoint, process JSON-RPC messages, and support stateless request handling.

MCP-서버-템플릿

공식 TypeScript SDK를 사용하여 모델 컨텍스트 프로토콜(MCP) 서버를 구현하기 위한 템플릿 프로젝트인 MCP-SERVER-TEMPLATE 에 오신 것을 환영합니다. 이 프로젝트는 HTTP 및 표준 I/O(stdio)와 같은 다양한 전송 메커니즘을 지원하여 상태 비저장 및 상태 저장 MCP 서버를 구축하기 위한 기반을 제공합니다.

목차

개요

이 프로젝트 MCP-SERVER-TEMPLATE 는 공식 SDK를 사용하여 모델 컨텍스트 프로토콜(MCP) 서버를 구축하기 위한 TypeScript 기반 시작 템플릿입니다. 이 서버는 사용자 쿼리와 도구 실행 간의 인터페이스 역할을 하여 AI 어시스턴트와 외부 시스템이 도구를 동적으로 호출하고, 프롬프트를 해석하고, 리소스를 모듈화되고 확장 가능한 방식으로 관리할 수 있도록 합니다.

주요 역량

  • 모듈형 아키텍처 : 이 프로젝트는 구성, 전송 관리, 도구 등록, 서버 오케스트레이션, 유틸리티 도우미를 위한 명확한 모듈로 구분되어 관심사 분리와 유지 관리 용이성을 촉진합니다.
  • 전송 추상화 : 다음을 포함한 다양한 전송 유형에 대한 기본 지원:
    • HTTP(상태 비저장) : 각 요청은 완전한 격리와 RESTful 관행 준수를 위해 새로운 MCP 서버 인스턴스를 시작합니다.
    • STDIO(Stateful) : 지속적인 통신이 필요한 데스크톱이나 CLI 기반 통합용입니다.
    • 통합된 인터페이스와 팩토리 패턴을 통해 SSE나 WebSocket과 같은 향후 전송 수단으로 쉽게 확장할 수 있습니다.
  • 종속성 주입 : 사용자 정의 DI 시스템은 구성 및 로깅과 같은 서비스를 도구와 전송 계층에 주입하여 테스트 가능성과 분리를 보장합니다.
  • 도구 시스템 : 도구는 다음을 정의하는 격리된 클래스입니다.
    • 고유한 이름과 설명
    • 입력 검증을 위한 Zod 스키마
    • 비즈니스 로직을 처리하는 execute 함수
    • 외부 내성을 위한 자동 생성된 JSON 스키마
  • 프롬프트 및 리소스 확장성 : 프롬프트 템플릿과 동적 리소스 페칭을 지원하는 스캐폴딩이 포함되어 있어 향후 프롬프트 오케스트레이션이나 검색 증강 생성(RAG) 사용 사례를 위한 LLM과의 통합이 가능합니다.
  • 내장된 테스트 및 디버깅 :
    • MCP Inspector : 도구 호출, 입출력 흐름, 라이브 디버깅을 시각화하는 GUI입니다.
    • HTTP 테스트 스크립트 : 엔드포인트 응답을 테스트하기 위해 JSON-RPC 요청을 보냅니다.
    • 단위 테스트 : 도구 및 유틸리티 로직을 위한 Jest 기반 테스트 프레임워크입니다.
  • 구성 가능 및 보안 : .env 및 런타임 구성 파일을 통해 쉽게 조정 가능:
    • 인증 자격 증명 및 API 키
    • 서버 포트 및 전송 옵션
    • 로깅 수준 및 세션 동작

사용 사례

이 템플릿은 다음과 같은 경우에 적합합니다.

  • 대화형 MCP 서버 구축
  • LLM 기반 워크플로를 위한 호출 가능 도구를 관리하기 위한 백엔드 생성

LLM 툴체인을 프로토타입으로 제작하든, 독점 시스템과 통합하든, 확장 가능한 프로덕션 MCP 어시스턴트 백엔드를 준비하든, 이 프로젝트는 확장이 가능하고 철저히 구성된 솔루션을 제공합니다.

필수 조건

  • Node.js(버전 18.x 이상 권장)
  • npm(노드 패키지 관리자)
  • Git(저장소 복제용)

설치

  1. 저장소를 복제합니다.지엑스피1
  2. 종속성 설치:
    npm install
    이렇게 하면 package.json 에 정의된 대로 프로덕션 종속성(예: @modelcontextprotocol/sdk , express , axios )과 개발 종속성(예: typescript , ts-node , jest )이 모두 설치됩니다.
  3. MCP 기능의 핵심 종속성이므로 @modelcontextprotocol/sdk 패키지(버전 ^1.10.1 )가 설치되어 있는지 확인하세요.

구성

이 프로젝트는 src/core/config/ 에 있는 환경 변수와 두 개의 주요 파일을 통해 관리되는 구성 시스템을 사용합니다. 설정은 ConfigServiceruntimeConfig 에 정의되어 있어 전송 유형, 로깅 및 외부 API 통합을 사용자 지정할 수 있습니다.

구성 옵션

  • 환경 변수 ( runtimeConfig.ts 에서 dotenv 통해 로드됨):
    • TRANSPORT_TYPE : 전송 메커니즘을 설정합니다( 'http' 또는 'stdio' , 기본값: 'stdio' ).
    • HTTP_PORT : HTTP 서버의 포트(기본값: 3000 ).
    • HTTP_HOST : HTTP 서버의 호스트(기본값: localhost ).
    • SESSION_SUPPORT : 세션 지원을 활성화/비활성화합니다(기본값: 'true' ).
    • LOG_LEVEL : 로깅 수준(예: 'info' , 'debug' , 기본값: 'info' ).
    • MCP_INSPECTOR_PORT : MCP 검사기용 포트(기본값: 6274 ).

구성 예

.env 파일에서 환경 변수를 설정합니다.

TRANSPORT_TYPE=http HTTP_PORT=3000 HTTP_HOST=localhost LOG_LEVEL=debug

서버 실행

서버는 src/index.ts 진입점을 통해 시작되며, 종속성 주입과 구성 설정을 사용하여 초기화 및 시작 프로세스를 조율합니다.

시작 프로세스

  1. 환경 설정 : index.ts``dotenv 사용하여 환경 변수를 로드하여 구성 설정(예: TRANSPORT_TYPE , HTTP_PORT )이 사용 가능한지 확인합니다.
  2. 종속성 초기화 : createDependencies 사용하여 logger 및 ConfigService 와 같은 공유 종속성을 설정합니다.
  3. 전송 구성 : 전송( HttpTransport 또는 StdioTransport )은 TRANSPORT_TYPE 설정에 따라 runtimeConfig 통해 구성됩니다.
  4. 서버 초기화 : 구성된 전송 및 종속성을 사용하여 MCPServer 인스턴스를 생성합니다.
  5. 서버 시작 : 비동기적으로 서버를 시작하고 치명적인 오류가 발생하면 로깅하고 오류 코드와 함께 종료합니다.

서버 시작

  1. 생산 모드 :
    • TypeScript를 JavaScript로 컴파일하기 위해 프로젝트를 빌드합니다.
      npm run build
      이렇게 하면 tsc 실행되어 컴파일된 JavaScript 파일이 있는 dist/ 폴더가 생성됩니다.
    • 서버를 시작합니다:
      npm start
      컴파일된 서버를 실행하려면 node dist/index.js 실행합니다.
    • http 의 경우, 서버는 http://localhost:3000/mcp 에서 수신합니다(포트와 호스트는 HTTP_PORTHTTP_HOST 통해 구성 가능).
    • stdio 의 경우, 서버는 콘솔에서 읽고 씁니다.
  2. 개발 모드 :
    • ts-node 사용하여 TypeScript로 서버를 직접 실행합니다.
      npm run dev
      이렇게 하면 ts-node src/index.ts 실행되어 빌드 단계 없이 더 빠른 반복이 가능합니다.

노트

  • 서버를 시작하기 전에 환경 변수나 runtimeConfig 설정이 올바르게 설정되었는지 확인하세요.
  • 서버가 성공적으로 시작되었는지 확인하려면 콘솔 출력에서 로그( LOG_LEVEL 로 제어)를 확인하세요.

테스트

이 프로젝트에는 자동화된 테스트와 MCP 검사기를 사용하여 서버를 테스트하고, 동작을 디버깅하고, 기능을 검증하는 여러 스크립트가 포함되어 있습니다.

단위 테스트

Jest를 사용하여 단위 테스트를 실행하여 개별 구성 요소의 기능을 확인합니다.

npm test

이 명령은 jest 실행하여 프로젝트에 정의된 모든 테스트(예: 테스트 도구, 유틸리티 또는 서버 로직)를 실행합니다. TypeScript 지원을 위해 테스트 파일에 Jest와 ts-jest 설정되어 있는지 확인하세요.

HTTP 전송 테스트

MCP 서버의 기본 기능을 검증하기 위해 HTTP 전송에 대한 테스트 스크립트가 제공됩니다.

스크립트 세부 정보( src/scripts/testHttpTransport.js )
  • 목적 : JSON-RPC tools/list 요청을 서버로 전송하고 응답을 검증하여 HTTP 전송을 테스트합니다.
  • 종속성 :
    • axios 사용하여 HTTP POST 요청을 서버로 보냅니다.
  • 기능 :
    • method: 'tools/list' , id: 1 및 적절한 헤더를 사용하여 http://localhost:3000/mcp 에 JSON-RPC 2.0 요청을 보냅니다.
    • 다음을 보장하기 위해 응답을 검증합니다.
      • 응답은 JSON-RPC 2.0( jsonrpc: '2.0' )을 준수합니다.
      • 응답 id 요청과 일치합니다( id: 1 ).
      • 응답에는 예상 tools 키가 포함된 result 필드가 포함되어 있습니다.
    • 유효한 경우 응답 데이터와 함께 성공 메시지를 기록하고, 형식이 예상치 못한 경우 수신된 데이터와 함께 오류를 기록합니다.
  • 오류 처리 :
    • 모든 요청 실패(예: 네트워크 오류, 서버 실행 안 됨)를 오류 메시지와 함께 포착하여 기록합니다.
테스트 실행
  1. 서버가 TRANSPORT_TYPE``'http' 로 설정하여 실행 중인지 확인하세요.
    npm start
  2. 테스트 스크립트를 실행합니다.
    npm run test:http
    이는 ts-node src/scripts/testHttpTransport.ts 실행합니다.
결합된 시작 및 테스트

하나의 명령으로 서버를 시작하고 HTTP 테스트를 실행하려면:

npm run mcp:http

이렇게 하면 npm run start & npm run test:http 실행되어 백그라운드에서 서버를 시작하고 즉시 HTTP 테스트 스크립트를 실행합니다.

예상 출력
  • 성공 사례 : 서버가 올바르게 응답하면 스크립트는 다음을 기록합니다.
    ✅ HTTP transport responded correctly to tools/list Response: { "tools": [ { "name": "calculator_tool", "description": "Performs basic arithmetic operations: add, subtract, multiply, divide.", "inputSchema": {...} } ] }
  • 실패 사례(잘못된 응답 형식) : 응답 형식이 예상치 못한 경우 스크립트는 다음을 기록합니다.
    ❌ Response received, but unexpected format Received: {...}
  • 실패 사례(요청 실패) : 요청이 실패하면(예: 서버가 실행되지 않음) 스크립트는 다음을 기록합니다.
    ❌ HTTP request failed: <error message>
노트
  • 스크립트는 서버가 http://localhost:3000/mcp 에서 실행된다고 가정합니다. HTTP_PORT 또는 HTTP_HOST 다른 경우 스크립트에서 endpoint 조정하세요.
  • CalculatorTool 과 같은 도구가 tools/list 응답에서 표시되도록 등록되어 있는지 확인하세요.

MCP 검사기 디버깅

MCP Inspector는 MCP 서버를 디버깅하고 모니터링하기 위한 강력한 도구로, 서버 상태와 상호 작용을 검사할 수 있는 웹 UI를 제공합니다.

스크립트 세부 정보( src/scripts/mcpInspectorScript.ts )
  • 목적 : MCP 검사기를 실행하고, 웹 UI가 준비될 때까지 기다린 후, stdio 전송을 사용하여 로컬에서 MCP 서버를 디버깅하기 위해 브라우저에서 엽니다.
  • 종속성 :
    • child_process 사용하여 mcp-inspector 프로세스를 생성하고 브라우저를 여는 명령을 실행합니다.
    • axios 사용하여 MCP Inspector 웹 UI에 접속할 수 있는지 확인합니다.
    • createDependencies() 를 통해 종속성 주입을 활용하여 포트 구성을 위한 ConfigService 접근합니다.
  • 기능 :
    • npx mcp-inspector node dist/index.js 사용하여 mcp-inspector 프로세스를 생성하고 콘솔 출력을 위해 stdio를 상속합니다.
    • 웹 UI를 폴링하기 위해 waitUntilInspectorIsReady 구현합니다(기본 포트: 6274 , MCP_INSPECTOR_PORT 통해 구성 가능). 재시도(20회 시도, 500ms 지연)가 가능합니다.
    • 플랫폼별 브라우저에서 웹 UI를 엽니다.
      • macOS: open
      • 윈도우: start
      • 리눅스: xdg-open
    • URL을 포함한 출시 요약 표를 기록합니다.
      • MCP 검사기 UI: http://localhost:6274 (또는 구성된 포트)
      • MCP 프록시 서버: http://localhost:6277
  • 오류 처리 :
    • 웹 UI를 즉시 사용할 수 없는 경우 다시 시도합니다.
    • 재시도 후에도 검사기가 시작되지 않으면 오류가 발생하고 종료됩니다.
    • 실패 시 검사자 프로세스를 종료하고 수동으로 검사하거나 다시 시작하라는 메시지를 기록합니다.
MCP 검사기 실행
  1. 서버가 컴파일되었는지 확인하세요(예: npm run build 실행하여 dist/index.js 생성합니다).
  2. MCP Inspector 스크립트를 실행합니다.
    npm run mcp:inspector
    이렇게 하면 ts-node src/scripts/start-mcp-inspector.ts 실행됩니다.
결합된 빌드 및 검사기

하나의 명령으로 프로젝트를 빌드하고 MCP 검사기를 실행하려면 다음을 수행합니다.

npm run mcp:dev

이렇게 하면 npm run build && npm run mcp:inspector 실행되어 검사기를 시작하기 전에 프로젝트가 컴파일되었는지 확인합니다.

디버깅 팁
  • MCP Inspector UI를 사용하여 서버 요청, 도구 호출 및 응답을 모니터링합니다.
  • 검사기가 실행되지 않으면 콘솔 출력에서 시작 로그나 오류를 확인하세요.
  • MCP_INSPECTOR_PORT 다른 서비스에서 사용되고 있지 않은지 확인하세요.

코드 포맷팅

이 프로젝트에서는 Prettier를 사용하여 모든 파일에서 일관된 코드 형식을 유지합니다.

형식 코드

프로젝트의 모든 파일을 포맷하려면:

npm run format

이렇게 하면 prettier --write . 가 실행되어 지원되는 모든 파일(예: .ts , .js , .json )을 자동으로 포맷합니다.

서식 확인

모든 파일이 Prettier 서식 규칙을 준수하는지 확인하려면:

npm run format:check

이렇게 하면 prettier --check . 실행되어 서식 규칙을 수정하지 않고도 해당 규칙에 맞지 않는 파일을 보고합니다.

프로젝트 구조

  • src/core/config/
    • configService.ts : 서버 구성을 관리하는 클래스인 ConfigService 구현합니다. 전송 유형, HTTP 서버 설정, 로깅 수준, API URL(예: MealDB), 인증 자격 증명 및 MCP 검사기 포트에 대한 기본값을 사용하여 환경 변수에서 설정을 로드합니다.
    • runtimeConfig.ts : dotenv 사용하여 환경 변수를 로드하는 런타임 구성을 정의합니다. 전송 구성( transportType , port)과 인증 전략( authStrategy , tokenSecret , username , password )을 설정합니다.
  • src/core/dependencies/
    • dependencies.ts : Dependencies 인터페이스를 사용하여 종속성 주입을 구현하고, Winston을 사용하는 loggerConfigService 인스턴스를 제공합니다. createDependencies 함수는 transportType ( stdio 의 경우 stderr, 기타의 경우 stdout, 그리고 파일 로그의 경우 combined.log )을 기반으로 로깅 전송을 동적으로 구성하고, 전역적으로 사용할 수 있도록 싱글턴 logger 내보냅니다.
  • src/core/server/
    • transports/
      • http/
      • server.ts : Express를 사용하는 상태 비저장 HTTP 전송인 HttpTransport 구현합니다. POST /mcp 요청을 처리하고, 선택적 Bearer 토큰 인증을 사용하여 JSON-RPC 메시지를 처리하고, 응답을 ResponseMap 에 저장하고, 비동기 응답 전송을 지원합니다. 로깅 및 구성을 위해 종속성 주입된 Dependencies 사용합니다.
        • stdio/
      • server.ts : SDK의 StdioServerTransport 사용하는 전송 방식인 StdioTransport StdioTransport 구현합니다. stdin/stdout 통신을 관리하고, 전송을 시작 및 종료하며, 종속성이 주입된 Dependencies 통해 오류 로깅과 함께 메시지 전송을 처리합니다.
        • baseTransport.ts : SDK의 Transport 인터페이스를 확장하여 BaseTransport 인터페이스와 추상 AbstractTransport 클래스를 정의합니다. 전송 구현을 위한 메서드( start , send , close , isRunning )와 이벤트 핸들러( onmessage , onerror , onclose )를 지정하여 HttpTransportStdioTransport 에 대한 공통 계약을 제공합니다.
        • transportFactory.ts : TransportConfig 유형(예: 'http' 또는 'stdio' )을 기반으로 HttpTransport 또는 StdioTransport 인스턴스를 생성하는 정적 클래스인 TransportFactory 구현합니다. Dependencies 사용한 종속성 주입을 사용하여 로깅 및 구성을 제공하며, 지원되지 않는 전송 유형에 대해서는 오류를 발생시킵니다.
    • mcpServer.ts : MCP SDK의 Server 전송( HttpTransport 또는 StdioTransport )과 통합하는 핵심 서버 클래스인 MCPServer 구현합니다. 서버를 초기화하고, ToolRegistry 사용하여 RequestHandler 설정하고, 전송을 연결하고, 로깅을 위해 종속성이 주입된 Dependencies 사용하여 메시지 전달, 오류 및 응답을 처리합니다.
    • requestHandler.ts : MCP SDK를 사용하여 tools/listtools/call 요청에 대한 처리기를 등록하는 RequestHandler 구현합니다. 사용 가능한 도구를 나열하고 Zod를 통해 검증된 인수를 사용하여 도구 호출을 실행하며, 인증 토큰을 지원하고 유효하지 않은 도구( ToolNotFoundError ) 또는 인수( ValidationError )에 대한 오류를 발생시킵니다. 로깅에는 종속성이 주입된 Dependencies 사용합니다.
  • src/core/toolManagement/
    • toolFactory.ts : Dependencies 사용한 의존성 주입을 통해 도구(예: calculatorTool )의 인스턴스를 생성하는 클래스인 ToolFactory 구현합니다. 제네릭 ToolConstructor 타입을 정의하고 로깅을 통해 인스턴스 생성 오류를 처리합니다.
    • toolRegistry.ts : 도구 등록 및 검색을 관리하는 클래스인 ToolRegistry 구현합니다. ToolFactory 사용하여 toolClasses 에서 도구를 인스턴스화하고, 이를 Map 에 저장하며, 도구의 메타데이터(이름, 설명, 입력 스키마)를 사용하여 도구를 등록, 가져오기 및 나열하는 메서드를 제공합니다. 종속성이 주입된 Dependencies 통해 로딩 상태 및 오류를 기록합니다.
    • errors.ts : 도구 관리를 위한 사용자 정의 오류 클래스를 정의합니다. 여기에는 요청된 도구가 등록되지 않았을 때 발생하는 ToolNotFoundError 와 Zod를 통한 도구 인수의 유효성 검사가 실패했을 때 발생하는 ValidationError 가 포함됩니다.
    • types.ts : 전송 및 인증 구성을 위한 TypeScript 유형을 정의합니다. TransportType ( 'stdio' , 'sse' , 'http' ), TransportConfig (SSE 또는 HTTP 및 인증 옵션 포함), SSETransportConfig (포트, CORS, 인증), HttpStreamTransportConfig (포트, 응답 모드, CORS, 세션, 재개 가능성, 인증), AuthConfig (전략, 자격 증명)를 포함합니다.
  • src/prompts/ : 프롬프트 템플릿을 위한 디렉토리(현재 비어 있으며, 향후 구현을 위해 예약됨).
  • src/resources/ : 리소스 관리를 위한 디렉토리(현재 비어 있으며, 향후 구현을 위해 예약됨).
  • src/scripts/
    • testHttpTransport.js : tools/list 요청을 보내고 응답을 검증하여 기본 기능을 검증하는 HTTP 전송을 위한 테스트 스크립트입니다.
    • mcpInspectorScript.ts : MCP Inspector를 실행하고, 웹 UI가 준비될 때까지 기다린 후, MCP 서버 디버깅을 위해 브라우저에서 여는 스크립트입니다. 종속성 주입을 사용하여 포트 구성을 위한 ConfigService 에 접근하고, 플랫폼별 브라우저 열기를 처리합니다.
  • src/tools/
    • types/
      • ITool.ts : 도구에 대한 ITool 인터페이스를 정의하며, name , description , schema (Zod 유형), jsonSchema , 그리고 JSON-RPC CallToolRequest 처리를 위한 execute 메서드를 지정합니다. 도구 구현에 대한 Dependencies 내보냅니다.
      • baseTool.ts : 보일러플레이트를 줄이고 Dependencies 사용하여 종속성 주입을 처리하고 zod-to-json-schema 사용하여 Zod 스키마를 JSON 스키마로 자동 변환하여 내성, 문서화 및 UI 생성을 수행하는 추상 BaseTool 클래스를 구현합니다.
      • index.ts : ToolRegistry 에서 동적으로 로딩할 수 있도록 도구 생성자(예: CalculatorTool ) 배열로 toolClasses 내보내므로 새 도구로 쉽게 확장할 수 있습니다.
      • calculatorTool.ts : Zod를 통한 입력 검증, 오류 처리(예: HttpError 사용한 0으로 나누기) 및 종속성 주입 Dependencies 통한 로깅을 통해 기본 산술 연산( add , subtract , multiply , divide )을 수행하는 구체적인 도구인 CalculatorTool 구현합니다.
    • utils/
      • httpUtils.ts : 인증된 HTTP 요청(OAuth2 또는 API 키)을 생성하고 재시도 및 시간 초과 처리를 위한 serviceRequest , OAuth2 토큰을 가져오고 캐싱하는 getAuthToken , 쿼리 문자열을 생성하는 buildQueryString , 응답 검증을 위한 validateResponse 등 HTTP 작업을 위한 유틸리티 함수를 제공합니다. 구성을 위해 ConfigService 와 통합됩니다.
      • index.ts : 도구 및 기타 구성 요소에서 사용할 유틸리티 함수를 내보냅니다.
  • src/index.ts : MCP 서버를 시작하는 진입점입니다. dotenv 사용하여 환경 변수를 로드하고, createDependencies 사용하여 종속성을 초기화하고, runtimeConfig 의 전송 방식을 사용하여 MCPServer 인스턴스를 생성하고, 서버를 비동기적으로 시작하며, 로깅 및 종료를 통해 치명적인 오류를 처리합니다.

문제 해결

  • "서버가 초기화되지 않았습니다" 오류 :
    • MCPServer 설정에서 핸들러가 등록되고 기능이 설정되었는지 확인합니다( RequestHandler 통해).
    • 각 요청(HTTP의 경우)을 처리하기 직전에 전송이 연결되었는지 확인하세요.
    • 재사용된 서버에서도 오류가 지속되는 경우, 상태 비저장 방식(요청당 새 서버)을 사용하세요.
  • 성능 문제 :
    • 요청당 새 서버를 생성하면 부하가 높을 때 성능에 영향을 줄 수 있습니다. 필요한 경우 세션 관리 기능을 갖춘 단일 MCPServer 재사용하는 것을 고려하되, 철저하게 테스트하십시오.
  • 구성 문제 :
    • 환경 변수가 .env 파일에 올바르게 설정되었는지 또는 프로세스에 직접 전달되었는지 확인하세요.
    • 외부 API 통합(예: MealDB, OMDB)이 실패하는 경우 로드된 설정을 확인하려면 ConfigService 로그를 확인하세요.
  • 로깅 문제 :
    • LOG_LEVEL 환경 변수가 예상 수준(예: 'info' , 'debug' )과 일치하는지 확인합니다.
    • stdio 전송의 경우, 로그가 의도한 대로 stderr로 전송되는지 확인하세요. 파일 기반 로그의 경우 combined.log 확인하세요.
  • 운송 문제 :
    • HttpTransport 의 경우 포트를 사용할 수 있는지, 충돌하는 서비스가 실행되고 있지 않은지 확인하세요.
    • StdioTransport 의 경우, 메시지가 처리되지 않으면 stdin/stdout의 가용성을 확인하세요.
    • TransportFactory 실패하면 TRANSPORT_TYPE 구성에서 지원되는 유형( 'http' 또는 'stdio' )과 일치하는지 확인합니다.
  • 요청 처리 문제 :
    • tools/list 또는 tools/call 요청이 실패하면 등록된 도구에 대한 ToolRegistry 확인하세요.
    • ValidationError 방지하기 위해 CallToolRequestSchema 의 스키마에 대해 도구 인수를 검증합니다.
    • 도구에 필요한 경우 인증 토큰이 제공되었는지 확인하세요.
  • 도구 관리 문제 :
    • 도구가 로드되지 않으면 src/tools/index.ts 에 있는 toolClasses 에 유효한 도구 구현이 포함되어 있는지 확인하세요.
    • ToolFactory 로그에서 인스턴스화 오류를 확인하고 Dependencies 제대로 주입되었는지 확인하세요.
  • MCP 검사관 문제 :
    • MCP Inspector가 시작되지 않으면 MCP_INSPECTOR_PORT (기본값: 6274 )가 사용 중이 아닌지 확인하세요.
    • 스크립트를 실행하기 전에 npm run build 실행하여 dist/index.js 가 있는지 확인하세요.
    • 네트워크 문제나 종속성 누락 등 시작 중에 발생하는 오류가 있는지 콘솔 출력을 확인하세요.
  • HTTP 요청 문제 :
    • serviceRequest 실패하면 ConfigService 에서 authType , authEndpoint , clientId , clientSecret 또는 apiKey 설정을 확인합니다.
    • 재시도를 유발할 수 있는 네트워크 문제나 서버 오류(5xx)를 확인하세요.
    • 요청 URL과 메서드가 올바른지 확인하고 validateResponse 로 응답 스키마를 검증합니다.
  • HTTP 전송 테스트 문제 :
    • testHttpTransport.js 스크립트가 실패하면 서버가 TRANSPORT_TYPE='http' 로 실행 중이고 http://localhost:3000/mcp 에서 수신 대기 중인지 확인하세요.
    • 포트와 호스트가 스크립트의 endpoint 와 일치하는지 확인합니다( HTTP_PORT 또는 HTTP_HOST 가 다른 경우 조정).
    • ToolRegistry 에 등록된 도구가 있는지 확인하세요. tools 배열이 비어 있으면 도구 로딩 문제가 있을 수 있습니다.
  • 테스트 문제 :
    • npm test 실패하면 TypeScript 지원을 위해 ts-jest 로 Jest가 올바르게 구성되었는지 확인하고 테스트 파일이 있는지 확인하세요.
    • npm run mcp:inspector 또는 npm run mcp:dev 실패하면 @modelcontextprotocol/inspector 설치되어 있고 서버가 컴파일되었는지( dist/index.js 있는지) 확인하세요.
  • 서식 문제 :
    • npm run format:check 문제가 보고되면 npm run format 실행하여 자동으로 서식을 수정하거나 Prettier의 규칙에 맞게 파일을 수동으로 조정하세요.

기여하다

GitHub 저장소에 이슈나 풀 리퀘스트를 자유롭게 제출하세요. 서버 구현 개선, 새로운 기능 추가, 성능 최적화에 대한 기여를 환영합니다!

특허

이 프로젝트는 ISC 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

감사의 말

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

여러 전송 방법을 지원하는 모듈형 아키텍처를 통해 AI 어시스턴트가 도구를 동적으로 호출하고, 프롬프트를 해석하고, 리소스를 관리할 수 있도록 하는 모델 컨텍스트 프로토콜 서버를 구축하기 위한 TypeScript 기반 스타터 템플릿입니다.

  1. Table of Contents
    1. Overview
      1. Key Capabilities
      2. Use Cases
    2. Prerequisites
      1. Installation
        1. Configuration
          1. Configuration Options
          2. Example Configuration
        2. Running the Server
          1. Startup Process
          2. Starting the Server
          3. Notes
        3. Testing
          1. Unit Tests
          2. HTTP Transport Test
          3. MCP Inspector Debugging
        4. Code Formatting
          1. Format Code
          2. Check Formatting
        5. Project Structure
          1. Troubleshooting
            1. Contributing
              1. License
                1. Acknowledgments

                  Related MCP Servers

                  • A
                    security
                    F
                    license
                    A
                    quality
                    A starter template for building Model Context Protocol servers that can be integrated with Cursor or Claude Desktop, allowing developers to create custom tools and extensions for AI assistants.
                    Last updated -
                    1
                    28
                    9
                    TypeScript
                  • -
                    security
                    A
                    license
                    -
                    quality
                    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.
                    Last updated -
                    6
                    TypeScript
                    MIT License
                  • -
                    security
                    F
                    license
                    -
                    quality
                    A TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.
                    Last updated -
                    67
                    TypeScript
                    • Apple
                  • -
                    security
                    F
                    license
                    -
                    quality
                    A Model Context Protocol implementation for managing and serving AI prompts with a TypeScript-based architecture in a monorepo structure.
                    Last updated -
                    28,526,583
                    2
                    TypeScript

                  View all related MCP servers

                  ID: 6l41001l9o