본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

Prompts — Templated Workflow

~18 min · prompts, templates, user-invokable

Level 0호기심 많은 독자
0 XP0/48 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

Prompts 는 저평가된 primitive 야. MCP 의 Prompt 는 server 가 정의해두고 user 가 불러 쓰는, 틀이 잡힌 workflow 야. 보통 host UI 의 슬래시 명령이나 빠른 선택 메뉴로 나와. 문구도 변수도 구조도 server 가 들고 있고, user 는 인자만 채워. 그러면 host 가 그 틀을 부풀려서 대화의 씨앗으로 삼아.

흐름은 이래. Client 가 prompt 목록을 받아오고 (prompts/list), host 가 그걸 user 가 고를 수 있는 항목으로 그려주고, user 가 하나 골라 인자를 채우고, host 가 prompts/get 을 부르고, server 가 값이 다 채워진 메시지 목록을 돌려줘. 그러면 host 가 그 메시지들을 LLM context 의 대화 첫머리로 밀어 넣어.

왜 이런 수고를 할까? Server 를 만든 사람이 자기 도메인에 맞는 문구를 제일 잘 알기 때문이야. GitHub MCP server 의 'summarize this PR' prompt 는 어떤 필드를 끌어올지 (제목, 설명, 최근 commit, 리뷰 코멘트), 모델한테 답을 어떤 모양으로 내라고 시킬지까지 알고 있어. User 가 맞는 prompt 를 외울 필요가 없어져 — server 가 아예 같이 실어 보내니까.

Prompt 는 protocol 의 나머지와도 잘 어울려. Prompt 응답이 host 가 읽어갈 resource 를 가리켜서 틀 자체는 가볍게 유지할 수도 있고, LLM 한테 다음에 뭘 부르면 좋을지 tool 을 귀띔해줄 수도 있어. Prompt 를 메시지 한 번 던지는 걸로 보지 말고, server 가 대화를 차려주는 기회로 봐.

Code

Python SDK 에서 prompt 정의·python
from mcp.server.fastmcp import FastMCP
from mcp.types import GetPromptResult, PromptMessage, TextContent

app = FastMCP("github-server")

@app.prompt()
def review_pr(pr_number: int) -> GetPromptResult:
    pr = github.get_pull(pr_number)
    return GetPromptResult(
        description=f"Review pull request #{pr_number}: {pr.title}",
        messages=[
            PromptMessage(role="user", content=TextContent(
                type="text",
                text=(
                    f"Review PR #{pr_number}.\n"
                    f"Title: {pr.title}\n"
                    f"Description: {pr.body}\n\n"
                    f"Focus on correctness and changes that touch user data. "
                    f"Suggest at most three improvements."
                ),
            )),
        ],
    )

External links

Exercise

작은 server 에 prompt 를 하나 붙여 — 'summarize_recent_changes' 나 'draft_release_notes' 처럼 도메인 냄새가 나는 걸로. Claude Desktop 에서 붙어 슬래시 명령으로 불러봐. User 가 씨앗 메시지를 보고 'server 만든 사람이 prompt 를 미리 다 짜놨구나' 하고 깨닫는 그 순간을 관찰해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.