Communitygithub.com

DataShrimp/skills

LLM이 외부 서비스와 상호작용할 수 있도록 설계된 고품질 MCP(Model Context Protocol) 서버를 구축하기 위한 가이드입니다. Python(FastMCP) 또는 Node/TypeScript(MCP SDK)로 MCP 서버를 구축할 때 사용하세요.

skills란 무엇인가요?

이 스킬은 LLM 에이전트가 외부 API 및 서비스와 안정적으로 통신할 수 있도록 하는 MCP(Model Context Protocol) 서버를 구축하기 위한 포괄적인 가이드입니다. TypeScript(MCP SDK)와 Python(FastMCP)을 모두 지원하며, 도구 설계, 인증, 페이지네이션, 에러 처리 등 MCP 서버 구축의 전 과정을 다룹니다. 특히 '3단계 점진적 공개(3-Level Progressive Disclosure)' 패턴을 적용하여 초보자부터 고급 개발자까지 프로젝트 단계에 맞춰 필요한 정보만 참조할 수 있도록 구성되어 있습니다. Claude Code, OpenAI Codex, Cursor 등 주요 AI 에이전트 플랫폼에서 스킬로 직접 주입하여 사용할 수 있으며, 평가용 질문 생성 가이드까지 포함되어 있어 MCP 서버의 품질을 검증하고 지속적으로 개선하는 데 도움을 줍니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/DataShrimp/skills/tree/HEAD/MetaPrompt/02-official-and-frameworks/anthropic-mcp-builder

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Source Provenance


파트 1: Anthropic 공식 mcp-builder/SKILL.md (3단계 점진적 공개 예시)

개요

LLM이 외부 서비스와 상호작용할 수 있도록 설계된 도구를 제공하는 MCP(Model Context Protocol) 서버를 생성합니다. MCP 서버의 품질은 LLM이 실제 작업을 얼마나 잘 수행할 수 있게 하는지로 측정됩니다.


프로세스

🚀 상위 수준 워크플로우

고품질 MCP 서버를 생성하는 과정은 네 가지 주요 단계로 구성됩니다.

1단계: 심층 조사 및 계획

1.1 최신 MCP 설계 이해

API 범위 대 워크플로우 도구: 포괄적인 API 엔드포인트 범위와 특수 워크플로우 도구 간의 균형을 유지하세요. 워크플로우 도구는 특정 작업에 더 편리할 수 있으며, 포괄적인 범위는 에이전트가 작업을 유연하게 조합할 수 있게 합니다. 성능은 클라이언트에 따라 다릅니다. 일부 클라이언트는 기본 도구를 결합한 코드 실행의 이점을 보는 반면, 다른 클라이언트는 상위 수준 워크플로우에서 더 잘 작동합니다. 확실하지 않은 경우 포괄적인 API 범위를 우선시하세요.

도구 이름 지정 및 검색 가능성: 명확하고 설명적인 도구 이름은 에이전트가 필요한 도구를 빠르게 찾는 데 도움이 됩니다. 일관된 접두사(예: github_create_issue, github_list_repos)와 작업 중심 이름 지정을 사용하세요.

컨텍스트 관리: 에이전트는 간결한 도구 설명과 결과를 필터링/페이지네이션하는 기능의 이점을 얻습니다. 집중되고 관련성 높은 데이터를 반환하는 도구를 설계하세요. 일부 클라이언트는 에이전트가 데이터를 효율적으로 필터링하고 처리하는 데 도움이 되는 코드 실행을 지원합니다.

실행 가능한 오류 메시지: 오류 메시지는 구체적인 제안과 다음 단계를 통해 에이전트를 솔루션으로 안내해야 합니다.

1.2 MCP 프로토콜 문서 숙지

MCP 사양 탐색: 사이트맵에서 관련 페이지를 찾으십시오: https://modelcontextprotocol.io/sitemap.xml 그런 다음 .md 접미사를 사용하여 특정 페이지를 마크다운 형식으로 가져오십시오(예: https://modelcontextprotocol.io/specification/draft.md).

검토해야 할 주요 페이지:

  • 사양 개요 및 아키텍처
  • 전송 메커니즘(스트리밍 가능 HTTP, stdio)
  • 도구, 리소스 및 프롬프트 정의

1.3 프레임워크 문서 숙지

권장 스택:

  • 언어: TypeScript(고품질 SDK 지원 및 MCPB와 같은 많은 실행 환경에서 우수한 호환성. 또한 AI 모델은 TypeScript 코드 생성에 능숙하며, 광범위한 사용, 정적 타이핑 및 우수한 린팅 도구의 이점을 누림)
  • 전송: 원격 서버의 경우 Streamable HTTP, 상태 비저장 JSON 사용(상태 저장 세션 및 스트리밍 응답에 비해 확장 및 유지 관리가 더 간단함). 로컬 서버의 경우 stdio.

프레임워크 문서 로드:

1.4 구현 계획

API 이해: 서비스의 API 문서를 검토하여 주요 엔드포인트, 인증 요구 사항 및 데이터 모델을 식별합니다. 필요에 따라 웹 검색 및 웹 가져오기를 사용하세요.

도구 선택: 포괄적인 API 범위를 우선시합니다. 가장 일반적인 작업부터 시작하여 구현할 엔드포인트를 나열합니다.


2단계: 구현

2.1 프로젝트 구조 설정

프로젝트 설정에 대한 언어별 가이드를 참조하세요:

2.2 핵심 인프라 구현

공유 유틸리티 생성:

  • 인증이 포함된 API 클라이언트
  • 오류 처리 도우미
  • 응답 형식 지정(JSON 및 Markdown)
  • 페이지네이션 지원

2.3 도구 구현

각 도구에 대해:

입력 스키마:

  • Zod(TypeScript) 또는 Pydantic(Python) 사용
  • 제약 조건과 명확한 설명 포함
  • 필드 설명에 예제 추가

출력 스키마:

  • 구조화된 데이터를 위해 가능한 경우 outputSchema 정의
  • 도구 응답에 structuredContent 사용(TypeScript SDK 기능)
  • 클라이언트가 도구 출력을 이해하고 처리하는 데 도움

도구 설명:

  • 기능에 대한 간결한 요약
  • 매개변수 설명
  • 반환 값 스키마

구현:

  • I/O 작업에는 async/await 사용
  • 실행 가능한 메시지와 함께 적절한 오류 처리
  • 해당되는 경우 페이지네이션 지원
  • 최신 SDK를 사용할 때 텍스트 콘텐츠와 구조화된 데이터를 모두 반환

어노테이션:

  • readOnlyHint: true/false
  • destructiveHint: true/false
  • idempotentHint: true/false
  • openWorldHint: true/false

3단계: 검토 및 테스트

3.1 코드 품질

다음 사항을 검토하세요:

  • 중복 코드 없음(DRY 원칙)
  • 일관된 오류 처리
  • 전체 유형 범위
  • 명확한 도구 설명

3.2 빌드 및 테스트

TypeScript:

  • npm run build 실행하여 컴파일 확인
  • MCP Inspector로 테스트: npx @modelcontextprotocol/inspector

Python:

  • 구문 확인: python -m py_compile your_server.py
  • MCP Inspector로 테스트

자세한 테스트 방법 및 품질 체크리스트는 언어별 가이드를 참조하세요.


4단계: 평가 생성

MCP 서버를 구현한 후에는 포괄적인 평가를 생성하여 효과를 테스트하세요.

전체 평가 지침은 ✅ 평가 가이드를 로드하세요.

4.1 평가 목적 이해

평가를 사용하여 LLM이 MCP 서버를 효과적으로 사용하여 현실적이고 복잡한 질문에 답할 수 있는지 테스트합니다.

4.2 10개의 평가 질문 생성

효과적인 평가를 생성하려면 평가 가이드에 설명된 프로세스를 따르세요:

  1. 도구 검사: 사용 가능한 도구를 나열하고 해당 기능 이해
  2. 콘텐츠 탐색: 읽기 전용 작업을 사용하여 사용 가능한 데이터 탐색
  3. 질문 생성: 10개의 복잡하고 현실적인 질문 생성
  4. 답변 확인: 각 질문을 직접 해결하여 답변 확인

4.3 평가 요구 사항

각 질문이 다음 조건을 충족하는지 확인하세요:

  • 독립적: 다른 질문에 의존하지 않음
  • 읽기 전용: 비파괴적 작업만 필요
  • 복잡함: 여러 도구 호출과 심층 탐색 필요
  • 현실적: 인간이 관심을 가질 실제 사용 사례 기반
  • 검증 가능: 문자열 비교로 확인할 수 있는 단일하고 명확한 답변
  • 안정적: 시간이 지나도 답변이 변경되지 않음

4.4 출력 형식

다음 구조로 XML 파일을 생성하세요:

<evaluation>
  <qa_pair>
    <question>동물 코드명을 가진 AI 모델 출시에 대한 토론을 찾으십시오. 한 모델은 ASL-X 형식을 사용하는 특정 안전 지정이 필요했습니다. 점박이 야생 고양이의 이름을 딴 모델에 대해 결정된 숫자 X는 무엇입니까?</question>
    <answer>3</answer>
  </qa_pair>
<!-- 추가 qa_pair... -->
</evaluation>

참조 파일

📚 문서 라이브러리

개발 중 필요에 따라 다음 리소스를 로드하세요:

핵심 MCP 문서(먼저 로드)

  • MCP 프로토콜: https://modelcontextprotocol.io/sitemap.xml에서 사이트맵으로 시작한 다음 .md 접미사로 특정 페이지를 가져오세요
  • 📋 MCP 모범 사례 - 범용 MCP 지침:
    • 서버 및 도구 명명 규칙
    • 응답 형식 지침(JSON 대 Markdown)
    • 페이지네이션 모범 사례
    • 전송 선택(스트리밍 가능 HTTP 대 stdio)
    • 보안 및 오류 처리 표준

SDK 문서(1/2단계에서 로드)

  • Python SDK: https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md에서 가져오기
  • TypeScript SDK: https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md에서 가져오기

언어별 구현 가이드(2단계에서 로드)

평가 가이드(4단계에서 로드)


파트 2: Claude Code 동적 컨텍스트 주입 (!command``) 스킬 예시

---
name: pr-summary
description: 풀 리퀘스트의 변경 사항을 요약합니다. 사용자가 현재 PR 또는 브랜치 차이점을 검토, 요약 또는 감사하도록 요청할 때 사용하세요.
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---

## 풀 리퀘스트 컨텍스트
- PR diff: !`gh pr diff`
- PR 댓글: !`gh pr view --comments`
- 변경된 파일: !`gh pr diff --name-only`

## 작업
이 풀 리퀘스트를 구체적인 파일 수준의 위험, 호환성을 깨는 변경 사항 및 확인 단계와 함께 요약하세요...

파트 3: OpenAI Codex / ChatGPT agents/openai.yaml 사이드카 스키마

interface:
  display_name: "자기 진화 메타 프롬프트 및 역할 설계자"
  short_description: "도구 전반에 걸쳐 프롬프트, 스킬 및 에이전트 역할을 컴파일, 평가 및 적응합니다."
  icon_small: "./assets/icon-small.svg"
  icon_large: "./assets/icon-large.png"
  brand_color: "#2563EB"
  default_prompt: "평가 점수표와 함께 프롬프트, 스킬 또는 에이전트 역할 정의를 설계하거나 최적화합니다."

policy:
  allow_implicit_invocation: true

dependencies:
  tools:
    - type: "mcp"
      value: "git"
      description: "저장소 검사를 위한 Git MCP 서버"

파트 4: Agent Skills PEP 723 자체 포함 스크립트 하네스 예시

# /// script
# dependencies = [
#   "pydantic>=2.0",
# ]
# requires-python = ">=3.10"
# ///
"""`uv run`을 통한 Agent Skill 호출을 위해 설계된 자체 포함 비대화형 CLI 스크립트입니다."""

import argparse
import json
import sys


def main() -> int:
    parser = argparse.ArgumentParser(
        description="대화형 프롬프트 없이 스킬 또는 역할 머리말 및 토큰 예산을 검증합니다."
    )
    parser.add_argument("--input", required=True, help="대상 Markdown 파일 경로")
    parser.add_argument("--max-chars", type=int, default=12000, help="문자 예산 상한")
    parser.add_argument("--dry-run", action="store_true", help="쓰기 없이 검사 미리보기")
    args = parser.parse_args()

    try:
        with open(args.input, "r", encoding="utf-8") as f:
            text = f.read()
    except FileNotFoundError:
        sys.stderr.write(
            f"오류: '{args.input}' 파일을 찾을 수 없습니다. --input <path>로 유효한 경로를 전달하세요.\n"
        )
        return 1

    char_count = len(text)
    passed = char_count <= args.max_chars
    result = {
        "file": args.input,
        "char_count": char_count,
        "max_chars": args.max_chars,
        "passed": passed,
        "remediation": None if passed else f"{char_count - args.max_chars}자를 줄이거나 세부 사항을 references/로 이동하세요.",
    }
    sys.stdout.write(json.dumps(result, ensure_ascii=False, indent=2) + "\n")
    return 0 if passed else 2


if __name__ == "__main__":
    sys.exit(main())

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

관련 스킬