MCP 서버가 궁금해서 조사해 보았습니다.
AI에게 물어봤습니다.
MCP (Model Context Protocol)의 초기화(initialize), 도구 목록 가져오기(tools/list), 도구 실행(tools/call) 일련의 흐름에서 서버 측이 반환해야 하는 응답(Mock)의 완전한 시퀀스입니다.
클라이언트로부터 초기화 요청을 받았을 때, 서버가 자신의 정보와 '도구 기능(tools)'을 제공할 수 있음을 선언합니다.
{
"jsonrpc": "2.0",
"id": 1,
...
클라이언트로부터 사용 가능한 도구 목록을 요청받았을 때, 서버가 가지고 있는 도구의 이름이나 설명, 인자 사양(JSON Schema 형식)을 반환합니다.
{
"jsonrpc": "2.0",
"id": 2,
...
클라이언트로부터 위의 fetch_weather가 실행되었다고 가정했을 때, 그 실행 결과에 대한 응답입니다.
{
"jsonrpc": "2.0",
"id": 3,
...
MCP (Model Context Protocol)에서 리소스(Resources)와 프롬프트(Prompts)에 대한 목록 가져오기(list) 및 가져오기/실행(read / get)에 대한 서버 측 응답 Mock입니다.
initialize 단계에서 서버 측이 '리소스'와 '프롬프트' 기능을 가지고 있음을 클라이언트에게 전달해야 하므로, 초기화 응답(initialize)의 완전판부터 순서대로 기재합니다.
서버가 리소스, 프롬프트, 도구 모두를 지원함을 선언합니다.
{
"jsonrpc": "2.0",
"id": 1,
...
리소스는 LLM에 읽히게 하고 싶은 '데이터(로그, 파일, DB 내용 등)'를 공개하는 기능입니다.
resources/list 응답 (목록 표시)
{
"jsonrpc": "2.0",
"id": 2,
...
resources/read 응답 (내용 읽기)
클라이언트로부터 {"uri": "mock://logs/app.log"}라는 요청을 받았을 때의 답변입니다.
{
"jsonrpc": "2.0",
"id": 3,
...
프롬프트는 정형문이나 템플릿(사용자 질문 문구, 역할 정의 등)을 클라이언트(LLM)에게 제공하는 기능입니다.
prompts/list 응답 (목록 표시)
{
"jsonrpc": "2.0",
"id": 4,
...
prompts/get 응답 (프롬프트 전개)
클라이언트로부터 {"name": "code-review", "arguments": {"language": "Python"}}로 호출되었을 때의 답변입니다.
{
"jsonrpc": "2.0",
"id": 5,
...
이렇게 하여 Tools, Resources, Prompts의 3대 기능 모든 Mock이 갖춰졌습니다.
이상입니다.