LLM이 잘 설계된 도구를 통해 외부 서비스와 상호작용할 수 있게 해주는 고품질 MCP (Model Context Protocol) 서버를 만들기 위한 가이드입니다. Python (FastMCP) 또는 Node/TypeScript (MCP SDK)를 사용하여 외부 API나 서비스를 통합하는 MCP 서버를 구축할 때 사용하세요.
/plugin marketplace add icartsh/icartsh_plugin/plugin install icartsh-plugin@icartsh-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
LICENSE.txtreference/evaluation.mdreference/mcp_best_practices.mdreference/node_mcp_server.mdreference/python_mcp_server.mdscripts/connections.pyscripts/evaluation.pyscripts/example_evaluation.xmlscripts/requirements.txtLLM이 잘 설계된 도구를 통해 외부 서비스와 상호작용할 수 있게 해주는 MCP (Model Context Protocol) 서버를 생성하세요. MCP 서버의 품질은 LLM이 실제 작업을 얼마나 잘 수행할 수 있게 하는지에 따라 결정됩니다.
고품질 MCP 서버를 만드는 과정은 크게 네 단계로 나뉩니다:
API 커버리지 vs. 워크플로우 도구: 포괄적인 API 엔드포인트 커버리지와 특화된 워크플로우 도구 사이의 균형을 맞추세요. 워크플로우 도구는 특정 작업에 더 편리할 수 있으며, 포괄적인 커버리지는 에이전트(agent)가 작업을 자유롭게 구성할 수 있는 유연성을 제공합니다. 성능은 클라이언트에 따라 다릅니다—일부 클라이언트는 기본 도구들을 조합하는 코드 실행 방식이 효율적이며, 다른 클라이언트는 상위 수준의 워크플로우 도구가 더 잘 작동합니다. 확실하지 않을 때는 포괄적인 API 커버리지를 우선시하세요.
도구 명명 및 발견 가능성 (Tool Naming and Discoverability):
명확하고 설명적인 도구 이름은 에이전트가 적절한 도구를 빠르게 찾는 데 도움이 됩니다. 일관된 접두사(예: github_create_issue, github_list_repos)를 사용하고 동작 중심의 이름을 지으세요.
컨텍스트 관리 (Context Management): 에이전트는 간결한 도구 설명과 결과 필터링/페이지네이션 기능이 있을 때 더 효율적으로 작동합니다. 집중적이고 관련성 높은 데이터를 반환하도록 도구를 설계하세요. 일부 클라이언트는 코드 실행을 지원하며, 이는 에이전트가 데이터를 효율적으로 필터링하고 처리하는 데 도움이 됩니다.
실행 가능한 에러 메시지 (Actionable Error Messages): 에러 메시지는 구체적인 제안과 다음 단계를 제시하여 에이전트가 해결책을 찾을 수 있도록 안내해야 합니다.
MCP 사양 탐색:
먼저 사이트맵에서 관련 페이지를 찾으세요: https://modelcontextprotocol.io/sitemap.xml
그 다음, 마크다운 형식을 위해 .md 접미사가 붙은 특정 페이지를 가져오세요 (예: https://modelcontextprotocol.io/specification/draft.md).
검토해야 할 주요 페이지:
권장 스택:
프레임워크 문서 로드:
TypeScript용 (권장):
https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md 로드Python용:
https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md 로드API 이해: 핵심 엔드포인트, 인증 요구 사항 및 데이터 모델을 식별하기 위해 서비스의 API 문서를 검토하세요. 필요에 따라 웹 검색과 WebFetch를 활용하세요.
도구 선택: 포괄적인 API 커버리지를 우선시하세요. 가장 일반적인 작업부터 시작하여 구현할 엔드포인트 목록을 만듭니다.
프로젝트 설정에 대해서는 언어별 가이드를 참조하세요:
공용 유틸리티 생성:
각 도구별로 다음을 수행하세요:
입력 스키마 (Input Schema):
출력 스키마 (Output Schema):
outputSchema 정의structuredContent 사용 (TypeScript SDK 기능)도구 설명 (Tool Description):
구현:
어노테이션 (Annotations):
readOnlyHint: true/falsedestructiveHint: true/falseidempotentHint: true/falseopenWorldHint: true/false다음을 검토하세요:
TypeScript:
npm run build 실행npx @modelcontextprotocol/inspectorPython:
python -m py_compile your_server.py상세한 테스트 접근 방식과 품질 체크리스트는 언어별 가이드를 참조하세요.
MCP 서버를 구현한 후, 그 효과를 테스트하기 위해 포괄적인 평가(evaluations)를 만드세요.
전체 평가 가이드라인을 위해 ✅ Evaluation 가이드를 로드하세요.
평가를 통해 LLM이 실제적이고 복잡한 질문에 답하기 위해 당신의 MCP 서버를 효과적으로 사용할 수 있는지 테스트합니다.
효과적인 평가를 위해 가이드에 설명된 프로세스를 따르세요:
각 질문이 다음을 충족하는지 확인하세요:
다음 구조의 XML 파일을 생성하세요:
<evaluation>
<qa_pair>
<question>동물 코드명을 가진 AI 모델 출시에 관한 토론을 찾으세요. 한 모델은 ASL-X 형식을 사용하는 특정 안전 지정이 필요했습니다. 점박이 야생 고양이의 이름을 딴 모델에 대해 결정된 숫자 X는 무엇입니까?</question>
<answer>3</answer>
</qa_pair>
<!-- 더 많은 qa_pair... -->
</evaluation>
개발 중에 필요에 따라 다음 리소스를 로드하세요:
https://modelcontextprotocol.io/sitemap.xml의 사이트맵부터 시작하여 .md 접미사가 붙은 특정 페이지를 가져오세요.https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md에서 가져오기https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md에서 가져오기🐍 Python 구현 가이드 - 다음을 포함한 전체 Python/FastMCP 가이드:
@mcp.tool을 이용한 도구 등록⚡ TypeScript 구현 가이드 - 다음을 포함한 전체 TypeScript 가이드:
server.registerTool을 이용한 도구 등록