LabHub
배우기 러닝패스 코스

에이전트가 내 DB 를 지웠다 · MCP 가 정한 것 · 퀴즈

퀴즈: MCP 가 정한 것

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. MCP 서버가 `id` 없는 메시지(알림)를 받았을 때 스펙이 요구하는 동작은?

    1. 응답을 보내지 않는다 — 알림은 답을 기다리지 않는 한 방향 메시지다
    2. `id: null` 로 응답을 보내 받았음을 알린다
    3. `-32600 Invalid Request` 오류로 답해 잘못된 요청임을 알린다
    4. 다음 요청이 올 때 그 응답에 알림 처리 결과를 함께 싣는다
  2. 클라이언트가 `initialize` 에 서버가 지원하지 않는 프로토콜 버전을 보냈다. 서버의 올바른 응답은?

    1. 요청을 무시하고 `initialized` 알림을 기다린다
    2. 오류 없이 클라이언트가 보낸 버전을 그대로 돌려준다
    3. 자기가 지원하는 다른 버전(가능하면 최신)을 응답에 담아 돌려준다
    4. 연결을 즉시 끊어 클라이언트가 다시 시도하게 한다
  3. `tools/call` 로 불린 도구가 외부 API 의 요청 한도 초과로 실패했다. 스펙이 권하는 답의 형태는?

    1. JSON-RPC `error` 에 `-32603 Internal error` 를 담는다
    2. `result` 안에 `isError: true` 와 실패 이유 텍스트를 담는다
    3. 응답을 보내지 않고 연결을 닫아 클라이언트가 재시도하게 한다
    4. `tools/list` 에서 그 도구를 빼는 `list_changed` 알림을 보낸다
  4. stdio 전송에서 서버가 디버그 문장을 `print()` 로 stdout 에 찍으면 무슨 일이 생기는가?

    1. 클라이언트가 그 줄을 로그로 분류해 화면에 보여 준다
    2. 아무 일도 없다 — JSON 이 아닌 줄은 클라이언트가 자동으로 건너뛴다
    3. 서버가 다음 요청부터 stderr 로 강제 전환된다
    4. 유효한 MCP 메시지가 아닌 것이 stdout 에 나가 규정 위반이고, 클라이언트 파서가 깨질 수 있다
  5. MCP 가 JSON-RPC 2.0 원문보다 더 엄격하게 정한 `id` 규칙은?

    1. `id` 는 반드시 정수여야 하고 문자열은 허용하지 않는다
    2. `id` 는 null 이면 안 되고, 한 세션 안에서 같은 값을 다시 쓰면 안 된다
    3. `id` 는 요청마다 1씩 증가하는 순번이어야 한다
    4. `id` 는 서버가 발급하고 클라이언트는 그것을 받아 쓴다
  6. 로컬에서 Streamable HTTP 로 MCP 서버를 띄울 때 스펙이 특히 요구하는 보안 조치는?

    1. `Origin` 헤더를 검증하고 127.0.0.1 에만 바인딩한다 — DNS 리바인딩을 막기 위해
    2. 모든 요청에 TLS 클라이언트 인증서를 요구한다
    3. 세션 ID 를 요청 본문에 넣어 URL 에 드러나지 않게 한다
    4. POST 대신 GET 만 허용해 상태 변경 요청을 원천 차단한다