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 가 대화를 차려주는 기회로 봐.