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
- 종속성 설치:이렇게 하면Copy
package.json
에 정의된 대로 프로덕션 종속성(예:@modelcontextprotocol/sdk
,express
,axios
)과 개발 종속성(예:typescript
,ts-node
,jest
)이 모두 설치됩니다. - MCP 기능의 핵심 종속성이므로
@modelcontextprotocol/sdk
패키지(버전^1.10.1
)가 설치되어 있는지 확인하세요.
구성
이 프로젝트는 src/core/config/
에 있는 환경 변수와 두 개의 주요 파일을 통해 관리되는 구성 시스템을 사용합니다. 설정은 ConfigService
와 runtimeConfig
에 정의되어 있어 전송 유형, 로깅 및 외부 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
파일에서 환경 변수를 설정합니다.
서버 실행
서버는 src/index.ts
진입점을 통해 시작되며, 종속성 주입과 구성 설정을 사용하여 초기화 및 시작 프로세스를 조율합니다.
시작 프로세스
- 환경 설정 :
index.ts``dotenv
사용하여 환경 변수를 로드하여 구성 설정(예:TRANSPORT_TYPE
,HTTP_PORT
)이 사용 가능한지 확인합니다. - 종속성 초기화 :
createDependencies
사용하여 logger 및ConfigService
와 같은 공유 종속성을 설정합니다. - 전송 구성 : 전송(
HttpTransport
또는StdioTransport
)은TRANSPORT_TYPE
설정에 따라runtimeConfig
통해 구성됩니다. - 서버 초기화 : 구성된 전송 및 종속성을 사용하여
MCPServer
인스턴스를 생성합니다. - 서버 시작 : 비동기적으로 서버를 시작하고 치명적인 오류가 발생하면 로깅하고 오류 코드와 함께 종료합니다.
서버 시작
- 생산 모드 :
- TypeScript를 JavaScript로 컴파일하기 위해 프로젝트를 빌드합니다.이렇게 하면Copy
tsc
실행되어 컴파일된 JavaScript 파일이 있는dist/
폴더가 생성됩니다. - 서버를 시작합니다:컴파일된 서버를 실행하려면Copy
node dist/index.js
실행합니다. http
의 경우, 서버는http://localhost:3000/mcp
에서 수신합니다(포트와 호스트는HTTP_PORT
및HTTP_HOST
통해 구성 가능).stdio
의 경우, 서버는 콘솔에서 읽고 씁니다.
- TypeScript를 JavaScript로 컴파일하기 위해 프로젝트를 빌드합니다.
- 개발 모드 :
ts-node
사용하여 TypeScript로 서버를 직접 실행합니다.이렇게 하면Copyts-node src/index.ts
실행되어 빌드 단계 없이 더 빠른 반복이 가능합니다.
노트
- 서버를 시작하기 전에 환경 변수나
runtimeConfig
설정이 올바르게 설정되었는지 확인하세요. - 서버가 성공적으로 시작되었는지 확인하려면 콘솔 출력에서 로그(
LOG_LEVEL
로 제어)를 확인하세요.
테스트
이 프로젝트에는 자동화된 테스트와 MCP 검사기를 사용하여 서버를 테스트하고, 동작을 디버깅하고, 기능을 검증하는 여러 스크립트가 포함되어 있습니다.
단위 테스트
Jest를 사용하여 단위 테스트를 실행하여 개별 구성 요소의 기능을 확인합니다.
이 명령은 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
필드가 포함되어 있습니다.
- 응답은 JSON-RPC 2.0(
- 유효한 경우 응답 데이터와 함께 성공 메시지를 기록하고, 형식이 예상치 못한 경우 수신된 데이터와 함께 오류를 기록합니다.
- 오류 처리 :
- 모든 요청 실패(예: 네트워크 오류, 서버 실행 안 됨)를 오류 메시지와 함께 포착하여 기록합니다.
테스트 실행
- 서버가
TRANSPORT_TYPE``'http'
로 설정하여 실행 중인지 확인하세요.Copy - 테스트 스크립트를 실행합니다.이는Copy
ts-node src/scripts/testHttpTransport.ts
실행합니다.
결합된 시작 및 테스트
하나의 명령으로 서버를 시작하고 HTTP 테스트를 실행하려면:
이렇게 하면 npm run start & npm run test:http
실행되어 백그라운드에서 서버를 시작하고 즉시 HTTP 테스트 스크립트를 실행합니다.
예상 출력
- 성공 사례 : 서버가 올바르게 응답하면 스크립트는 다음을 기록합니다.Copy
- 실패 사례(잘못된 응답 형식) : 응답 형식이 예상치 못한 경우 스크립트는 다음을 기록합니다.Copy
- 실패 사례(요청 실패) : 요청이 실패하면(예: 서버가 실행되지 않음) 스크립트는 다음을 기록합니다.Copy
노트
- 스크립트는 서버가
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
- macOS:
- URL을 포함한 출시 요약 표를 기록합니다.
- MCP 검사기 UI:
http://localhost:6274
(또는 구성된 포트) - MCP 프록시 서버:
http://localhost:6277
- MCP 검사기 UI:
- 오류 처리 :
- 웹 UI를 즉시 사용할 수 없는 경우 다시 시도합니다.
- 재시도 후에도 검사기가 시작되지 않으면 오류가 발생하고 종료됩니다.
- 실패 시 검사자 프로세스를 종료하고 수동으로 검사하거나 다시 시작하라는 메시지를 기록합니다.
MCP 검사기 실행
- 서버가 컴파일되었는지 확인하세요(예:
npm run build
실행하여dist/index.js
생성합니다). - MCP Inspector 스크립트를 실행합니다.이렇게 하면Copy
ts-node src/scripts/start-mcp-inspector.ts
실행됩니다.
결합된 빌드 및 검사기
하나의 명령으로 프로젝트를 빌드하고 MCP 검사기를 실행하려면 다음을 수행합니다.
이렇게 하면 npm run build && npm run mcp:inspector
실행되어 검사기를 시작하기 전에 프로젝트가 컴파일되었는지 확인합니다.
디버깅 팁
- MCP Inspector UI를 사용하여 서버 요청, 도구 호출 및 응답을 모니터링합니다.
- 검사기가 실행되지 않으면 콘솔 출력에서 시작 로그나 오류를 확인하세요.
MCP_INSPECTOR_PORT
다른 서비스에서 사용되고 있지 않은지 확인하세요.
코드 포맷팅
이 프로젝트에서는 Prettier를 사용하여 모든 파일에서 일관된 코드 형식을 유지합니다.
형식 코드
프로젝트의 모든 파일을 포맷하려면:
이렇게 하면 prettier --write .
가 실행되어 지원되는 모든 파일(예: .ts
, .js
, .json
)을 자동으로 포맷합니다.
서식 확인
모든 파일이 Prettier 서식 규칙을 준수하는지 확인하려면:
이렇게 하면 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을 사용하는logger
와ConfigService
인스턴스를 제공합니다.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
사용하는 전송 방식인 StdioTransportStdioTransport
구현합니다. stdin/stdout 통신을 관리하고, 전송을 시작 및 종료하며, 종속성이 주입된Dependencies
통해 오류 로깅과 함께 메시지 전송을 처리합니다.baseTransport.ts
: SDK의Transport
인터페이스를 확장하여BaseTransport
인터페이스와 추상AbstractTransport
클래스를 정의합니다. 전송 구현을 위한 메서드(start
,send
,close
,isRunning
)와 이벤트 핸들러(onmessage
,onerror
,onclose
)를 지정하여HttpTransport
와StdioTransport
에 대한 공통 계약을 제공합니다.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/list
및tools/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-RPCCallToolRequest
처리를 위한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
가 있는지 확인하세요. - 네트워크 문제나 종속성 누락 등 시작 중에 발생하는 오류가 있는지 콘솔 출력을 확인하세요.
- MCP Inspector가 시작되지 않으면
- 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
파일을 참조하세요.
감사의 말
@modelcontextprotocol/sdk
사용하여 빌드됨- Typescript-sdk 저장소 의 예제에서 영감을 얻었습니다.
This server cannot be installed
여러 전송 방법을 지원하는 모듈형 아키텍처를 통해 AI 어시스턴트가 도구를 동적으로 호출하고, 프롬프트를 해석하고, 리소스를 관리할 수 있도록 하는 모델 컨텍스트 프로토콜 서버를 구축하기 위한 TypeScript 기반 스타터 템플릿입니다.
Related MCP Servers
- AsecurityFlicenseAqualityA 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 -1289TypeScript
- -securityAlicense-qualityA 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 -6TypeScriptMIT License
- -securityFlicense-qualityA TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.Last updated -67TypeScript
- -securityFlicense-qualityA Model Context Protocol implementation for managing and serving AI prompts with a TypeScript-based architecture in a monorepo structure.Last updated -28,526,5832TypeScript