A
securityA
licenseA
qualityA production-ready template for creating Model Context Protocol servers with TypeScript, providing tools for efficient testing, development, and deployment.
Last updated -
1
521
32
JavaScript
MIT License
이 프로젝트는 TypeScript와 @modelcontextprotocol/sdk
사용하여 간단한 MCP(Model Context Protocol) 서버와 독립형 MCP 클라이언트를 만들고 상호 작용하는 방법을 보여줍니다.
설정에는 다음이 포함됩니다.
my-mcp-greeter-server
: 인사말 관련 도구, 리소스, 프롬프트를 제공하는 MCP 서버입니다.my-mcp-client-script
: 서버를 시작하고, 서버에 연결하고, 프로그래밍 방식으로 서버의 기능과 상호 작용하는 간단한 명령줄 클라이언트 스크립트입니다.이 예에서 클라이언트와 서버 간의 통신은 stdio(표준 입출력) 전송 메커니즘을 사용합니다.
이 프로젝트는 다음의 주요 단계를 거쳐 구축되었습니다.
시작하기 전에 다음 사항이 설치되어 있는지 확인하세요.
npx
(일반적으로 npm에 포함됨) - MCP Inspector로 테스트하는 데 유용합니다.my-mcp-greeter-server
)my-mcp-greeter-server
디렉토리를 생성했습니다.npm init -y
.npm install @modelcontextprotocol/sdk zod
.npm install -D typescript @types/node
.npx tsc --init
.tsconfig.json
구성했습니다(설정: "module": "Node16"
, "target": "ES2022"
, "outDir": "./build"
, "rootDir": "./src"
등)."type": "module"
포함하도록 package.json
업데이트하고 build
/ start
스크립트를 추가했습니다.src/index.ts
생성했습니다.src/index.ts
) :McpServer
, StdioServerTransport
, z
)을 가져왔습니다.name
과 version
에 대한 상수가 정의되어 있습니다.McpServer
인스턴스화하고 이름, 버전을 전달하고 기능(도구, 리소스, 프롬프트)을 선언합니다.greet
) 정의 : server.tool()
사용하여 클라이언트가 호출할 수 있는 함수를 생성했습니다. 설명을 포함하고, Zod( name
, politeness
)를 사용하여 입력 매개변수를 정의하고, 개인화된 인사말 문자열을 반환하는 핸들러를 구현했습니다.server-info
)를 정의했습니다 . 정적 데이터를 노출하기 위해 server.resource()
사용했습니다. 고유 URI( info://greeter/about
)를 제공하고, 서버의 이름과 버전을 반환하는 핸들러를 구현했습니다.suggest-greeting
)를 정의했습니다 . server.prompt()
사용하여 재사용 가능한 상호작용 템플릿을 생성했습니다. 설명을 포함하고 LLM 상호작용을 안내하기 위해 미리 정의된 사용자/어시스턴트 메시지 세트를 반환하는 핸들러를 구현했습니다.StdioServerTransport
인스턴스화했습니다.await server.connect(transport)
호출하여 서버를 준비합니다.console.error
문을 추가했습니다. 특히 프로토콜 메시지에 stdout을 사용하는 stdio 전송에 중요합니다.npm run build
실행하여 build
디렉토리에서 TypeScript를 JavaScript로 컴파일합니다.my-mcp-client-script
)my-mcp-client-script
라는 별도의 디렉토리를 만들었습니다.npm init -y
.npm install @modelcontextprotocol/sdk
.npm install -D typescript @types/node
.tsconfig.json
초기화하고 구성했습니다."type": "module"
및 build
/ start
스크립트로 package.json
업데이트했습니다.src/client-script.ts
소스 파일을 생성했습니다.src/client-script.ts
) :Client
, StdioClientTransport
, path
, url
)을 가져왔습니다.index.js
파일에 대한 경로를 계산했습니다(상대 또는 절대).command
( node
)과 args
(서버 스크립트 경로)를 제공하는 StdioClientTransport
인스턴스화했습니다. 클라이언트 전송이 서버 프로세스를 시작하므로 이 구성이 중요합니다.Client
인스턴스를 생성하고, ID를 부여하고, 도구와 리소스를 사용하려는 의도를 선언합니다.await client.connect(transport)
호출하여 서버 프로세스를 시작하고 stdio 스트림을 통해 MCP 연결을 설정했습니다.await client.callTool()
사용하여 greet
도구를 호출했습니다.await client.readResource()
사용하여 server-info
리소스를 읽습니다.await client.getPrompt()
사용하여 suggest-greeting
프롬프트를 가져왔습니다.console.log
사용하여 서버로부터 수신된 응답을 표시합니다.finally
블록에서 await client.close()
사용하여 연결을 깔끔하게 닫고 서버 프로세스를 종료합니다.cd my-mcp-greeter-server && npm run build
cd ../my-mcp-client-script && npm run build
cd my-mcp-client-script
npm run start
(또는 node build/client-script.js
)console.log
)와 서버( console.error
)에서 삽입된 출력을 관찰하여 성공적인 통신과 도구/리소스/프롬프트의 실행을 확인했습니다.GreeterServer
) :client-script.ts
) :클라이언트 스크립트가 프로그래밍 방식의 상호 작용을 테스트하는 동안 MCP 검사기를 사용하여 서버의 기능을 개별적으로 테스트할 수 있습니다.
지엑스피1
local-only server
The server can only run on the client's local machine because it depends on local resources.
TypeScript를 사용하여 클라이언트-서버 상호 작용을 보여주는 인사 도구, 리소스 및 프롬프트를 제공하는 모델 컨텍스트 프로토콜 서버입니다.
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sanketshinde3001/MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server