스키마 레퍼런스

스키마 레퍼런스 (Schema Reference)

프로토콜 2026-07-28 개정에 정의된 모든 타입(TypeScript 기반 JSON 스키마)을 정리한 레퍼런스 페이지예요. 각 타입의 이름과 역할을 한국어로 소개하고, 타입 자체의 이름·시그니처는 원문 그대로 보존했어요.

출처: 문서

본문

이 페이지는 MCP 사양에서 사용되는 JSON 스키마 타입들의 자동 생성 레퍼런스예요. 각 타입은 카테고리별로 묶어 정리했고, 타입 이름과 시그니처는 정확히 보존했어요. 규범적(normative) 소스는 schema.ts의 TypeScript 정의이며, 이 레퍼런스는 그와 일관되게 유지돼요.

JSON-RPC 코어

JSONRPCRequest

응답을 기대하는 요청이에요.

interface JSONRPCRequest {  method: string;  params?: { [key: string]: any };  jsonrpc: "2.0";  id: RequestId;}

JSONRPCNotification

응답을 기대하지 않는 알림이에요.

interface JSONRPCNotification {  method: string;  params?: { [key: string]: any };  jsonrpc: "2.0";}

JSONRPCResponse

result나 error 중 하나를 담은, 요청에 대한 응답이에요.

JSONRPCResponse: JSONRPCResultResponse | JSONRPCErrorResponse

JSONRPCErrorResponse

오류가 발생했음을 나타내는, 요청에 대한 응답이에요.

interface JSONRPCErrorResponse {  jsonrpc: "2.0";  id?: RequestId;  error: Error;}

JSONRPCResultResponse

성공(오류 아님)한 요청에 대한 응답이에요.

interface JSONRPCResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: Result;}

JSONRPCMessage

와이어에서 디코딩하거나 보내기 위해 인코딩할 수 있는 유효한 JSON-RPC 객체를 의미해요.

JSONRPCMessage: JSONRPCRequest | JSONRPCNotification | JSONRPCResponse

RequestId

JSON-RPC에서 요청을 고유하게 식별하는 ID예요.

RequestId: string | number

Error

발생한 오류 유형이에요.

interface Error {  code: number;  message: string;  data?: unknown;}

ParseError

서버가 잘못된 JSON을 받았음을 나타내는 JSON-RPC 오류예요. 서버가 메시지의 JSON 텍스트를 파싱할 수 없을 때 반환돼요.

interface ParseError {  message: string;  data?: unknown;  code: -32700;}

InvalidRequestError

요청이 유효한 요청 객체가 아님을 나타내는 JSON-RPC 오류예요. 메시지 구조가 JSON-RPC 2.0 사양을 따르지 않을 때 반환돼요.

interface InvalidRequestError {  message: string;  data?: unknown;  code: -32600;}

MethodNotFoundError

요청된 메서드가 존재하지 않거나 사용할 수 없음을 나타내는 JSON-RPC 오류예요. MCP에서 클라이언트가 서버가 구현하지 않은 메서드를 호출할 때 반환돼요.

interface MethodNotFoundError {  message: string;  data?: unknown;  code: -32601;}

InvalidParamsError

메서드 파라미터가 유효하지 않거나 잘못되었음을 나타내는 JSON-RPC 오류예요. MCP에서 요청 파라미터가 검증에 실패하는 다양한 컨텍스트에서 반환돼요.

interface InvalidParamsError {  message: string;  data?: unknown;  code: -32602;}

InternalError

수신자에서 내부 오류가 발생했음을 나타내는 JSON-RPC 오류예요. 이 오류는 수신자가 예상치 못한 조건을 만났을 때 반환돼요.

interface InternalError {  message: string;  data?: unknown;  code: -32603;}

JSONValue

어떤 유효한 JSON 값이든 나타내는 타입이에요.

JSONValue: string | number | boolean | null | JSONObject | JSONArray

JSONObject

JSON 객체를 나타내는 타입이에요.

JSONObject: { [key: string]: JSONValue }

JSONArray

JSON 배열을 나타내는 타입이에요.

JSONArray: JSONValue[]

Result

공통 결과 필드예요.

interface Result {  \_meta?: ResultMetaObject;  resultType: string;  [key: string]: unknown;}

ResultType

Result 객체의 유형을 나타내며, 클라이언트가 응답을 어떻게 파싱할지 결정할 수 있게 해 줘요. complete - 요청이 성공적으로 완료되고 결과가 최종값이에요.

ResultType: "complete" | "input\_required" | string

EmptyResult

성공을 나타내지만 데이터를 담지 않는 결과예요.

EmptyResult: Result

메타 (Meta)

MetaObject

클라이언트와 서버가 상호작용에 추가 메타데이터를 첨부하는 데 사용하는 _meta 필드의 내용을 나타내요. 특정 키 이름은 예약되어 있어요.

MetaObject: Record\string, unknown>

RequestMetaObject

요청 특정 필드로 MetaObject를 확장해요. 모든 키 명명 규칙은 MetaObject에서 적용돼요.

interface RequestMetaObject {  progressToken?: ProgressToken;  "io.modelcontextprotocol/protocolVersion": string;  "io.modelcontextprotocol/clientInfo"?: Implementation;  "io.modelcontextprotocol/clientCapabilities": ClientCapabilities;  "io.modelcontextprotocol/logLevel"?: LoggingLevel;  [key: string]: unknown;}

ResultMetaObject

결과 특정 필드로 MetaObject를 확장해요. 모든 키 명명 규칙은 MetaObject에서 적용돼요.

interface ResultMetaObject {  "io.modelcontextprotocol/serverInfo"?: Implementation;  [key: string]: unknown;}

NotificationMetaObject

알림 특정 필드로 MetaObject를 확장해요. 모든 키 명명 규칙은 MetaObject에서 적용돼요.

interface NotificationMetaObject {  "io.modelcontextprotocol/subscriptionId"?: RequestId;  [key: string]: unknown;}

RequestParams

모든 요청의 공통 파라미터예요.

interface RequestParams {  \_meta: RequestMetaObject;}

NotificationParams

모든 알림의 공통 파라미터예요.

interface NotificationParams {  \_meta?: NotificationMetaObject;}

PaginatedRequestParams

페이지네이션된 요청의 공통 파라미터예요.

interface PaginatedRequestParams {  \_meta: RequestMetaObject;  cursor?: string;}

InputResponseRequestParams

모든 요청의 공통 파라미터예요.

interface InputResponseRequestParams {  \_meta: RequestMetaObject;  inputResponses?: InputResponses;  requestState?: string;}

ProgressToken

진행 알림을 원래 요청과 연관시키는 데 사용되는 진행 토큰이에요.

ProgressToken: string | number

Cursor

페이지네이션을 위한 커서를 나타내는 불투명한 토큰이에요.

Cursor: string

콘텐츠 (Content)

ContentBlock

프롬프트 메시지, 도구 결과 또는 리소스 내용에서 사용할 수 있는 콘텐츠 블록 타입이에요.

ContentBlock:  | TextContent  | ImageContent  | AudioContent  | ResourceLink  | EmbeddedResource

TextContent

LLM에 제공되거나 LLM으로부터 받는 텍스트예요.

interface TextContent {  type: "text";  text: string;  annotations?: Annotations;  \_meta?: MetaObject;}

ImageContent

LLM에 제공되거나 LLM으로부터 받는 이미지예요.

interface ImageContent {  type: "image";  data: string;  mimeType: string;  annotations?: Annotations;  \_meta?: MetaObject;}

AudioContent

LLM에 제공되거나 LLM으로부터 받는 오디오예요.

interface AudioContent {  type: "audio";  data: string;  mimeType: string;  annotations?: Annotations;  \_meta?: MetaObject;}

서버가 읽을 수 있는 리소스로, 프롬프트나 도구 호출 결과에 포함돼요. 참고: 도구가 반환한 리소스 링크는 resources/list 결과에 나타난다고 보장되지 않아요.

interface ResourceLink {  icons?: Icon[];  name: string;  title?: string;  uri: string;  description?: string;  mimeType?: string;  annotations?: Annotations;  size?: number;  \_meta?: MetaObject;  type: "resource\_link";}

EmbeddedResource

리소스의 내용으로, 프롬프트나 도구 호출 결과에 임베디드돼요. 임베디드 리소스를 LLM의 이익을 위해 어떻게 렌더링하는 것이 가장 좋은지는 클라이언트의 몫이에요.

interface EmbeddedResource {  type: "resource";  resource: TextResourceContents | BlobResourceContents;  annotations?: Annotations;  \_meta?: MetaObject;}

TextResourceContents

예시: 텍스트 파일 내용 { "uri": "file:///example.txt", "mimeType": "text/plain", "text": "Resource content" }

interface TextResourceContents {  uri: string;  mimeType?: string;  \_meta?: MetaObject;  text: string;}

BlobResourceContents

예시: 이미지 파일 내용 { "uri": "file:///example.png", "mimeType": "image/png", "blob": "iVBORw0KG..." }

interface BlobResourceContents {  uri: string;  mimeType?: string;  \_meta?: MetaObject;  blob: string;}

Annotations

클라이언트를 위한 선택적 annotation이에요. 클라이언트는 annotation을 사용해 객체가 어떻게 사용되거나 표시되는지 안내받을 수 있어요.

interface Annotations {  audience?: Role[];  priority?: number;  lastModified?: string;}

Role

대화에서 메시지와 데이터의 보내는 쪽 또는 받는 쪽이에요.

Role: "user" | "assistant"

Icon

사용자 인터페이스에 표시할 수 있는, 크기가 선택적으로 지정된 아이콘이에요.

interface Icon {  src: string;  mimeType?: string;  sizes?: string[];  theme?: "light" | "dark";}

공통 오류 (Common Errors)

HeaderMismatchError

HTTP 헤더의 값이 요청 본문의 해당 값과 일치하지 않거나, 필수 헤더가 없거나 잘못되었기 때문에 서버가 요청을 거부할 때 반환돼요.

interface HeaderMismatchError {  jsonrpc: "2.0";  id?: RequestId;  error: Error & { code: -32020 };}

HEADER_MISMATCH

요청의 HTTP 헤더가 요청 본문의 해당 값과 일치하지 않거나, 필수 헤더가 없거나 잘못되었을 때 반환되는 오류 코드예요.

HEADER\_MISMATCH: -32020

MissingRequiredClientCapabilityError

요청 처리에 클라이언트가 clientCapabilities에 선언하지 않은 기능이 필요할 때 반환돼요. HTTP의 경우 응답 상태 코드는 400 Bad Request여야 해요.

interface MissingRequiredClientCapabilityError {  jsonrpc: "2.0";  id?: RequestId;  error: Error & {    code: -32021;    data: { requiredCapabilities: ClientCapabilities };  };}

MISSING_REQUIRED_CLIENT_CAPABILITY

서버가 요청의 clientCapabilities에 선언되지 않은 클라이언트 기능을 요구할 때 반환되는 오류 코드예요.

MISSING\_REQUIRED\_CLIENT\_CAPABILITY: -32021

UnsupportedProtocolVersionError

요청의 프로토콜 버전이 서버에 알려지지 않았거나 지원되지 않을 때 반환돼요. (예: 서버가 지원하지 않기로 한 알려진 실험적 버전이나 초안 버전)

interface UnsupportedProtocolVersionError {  jsonrpc: "2.0";  id?: RequestId;  error: Error & {    code: -32022;    data: { supported: string[]; requested: string };  };}

UNSUPPORTED_PROTOCOL_VERSION

요청의 프로토콜 버전이 서버에서 지원되지 않을 때 반환되는 오류 코드예요.

UNSUPPORTED\_PROTOCOL\_VERSION: -32022

완성 (Completion)

CompleteRequest

클라이언트가 서버에 완성 옵션을 요청하는 요청이에요.

interface CompleteRequest {  jsonrpc: "2.0";  id: RequestId;  method: "completion/complete";  params: CompleteRequestParams;}

CompleteRequestParams

completion/complete 요청의 파라미터예요.

interface CompleteRequestParams {  \_meta: RequestMetaObject;  ref: PromptReference | ResourceTemplateReference;  argument: { name: string; value: string };  context?: { arguments?: { [key: string]: string } };}

CompleteResult

completion/complete 요청에 대해 서버가 반환하는 결과예요.

interface CompleteResult {  \_meta?: ResultMetaObject;  resultType: string;  completion: { values: string[]; total?: number; hasMore?: boolean };  [key: string]: unknown;}

CompleteResultResponse

completion/complete 요청에 대한 서버의 성공 응답이에요.

interface CompleteResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: CompleteResult;}

PromptReference

프롬프트를 식별해요.

interface PromptReference {  name: string;  title?: string;  type: "ref/prompt";}

ResourceTemplateReference

리소스 또는 리소스 템플릿 정의에 대한 참조예요.

interface ResourceTemplateReference {  type: "ref/resource";  uri: string;}

Elicitation

ElicitRequest

서버가 클라이언트를 통해 사용자로부터 추가 정보를 얻기 위한 요청이에요.

interface ElicitRequest {  method: "elicitation/create";  params: ElicitRequestParams;}

ElicitRequestParams

클라이언트를 통해 사용자로부터 추가 정보를 얻기 위한 요청의 파라미터예요.

ElicitRequestParams: ElicitRequestFormParams | ElicitRequestURLParams

ElicitRequestFormParams

form 모드 elicitation 요청 파라미터예요.

interface ElicitRequestFormParams {  mode?: "form";  message: string;  requestedSchema: {    \$schema?: string;    type: "object";    properties: { [key: string]: PrimitiveSchemaDefinition };    required?: string[];  };}

ElicitRequestURLParams

url 모드 elicitation 요청 파라미터예요.

interface ElicitRequestURLParams {  mode: "url";  message: string;  url: string;}

ElicitResult

elicitation/create 요청에 대해 클라이언트가 반환하는 결과예요.

interface ElicitResult {  action: "accept" | "decline" | "cancel";  content?: { [key: string]: string | number | boolean | string[] };}

BooleanSchema

불리언 타입의 폼 elicitation 스키마예요.

interface BooleanSchema {  type: "boolean";  title?: string;  description?: string;  default?: boolean;}

NumberSchema

숫자 타입의 폼 elicitation 스키마예요.

interface NumberSchema {  type: "number" | "integer";  title?: string;  description?: string;  minimum?: number;  maximum?: number;  default?: number;}

StringSchema

문자열 타입의 폼 elicitation 스키마예요.

interface StringSchema {  type: "string";  title?: string;  description?: string;  minLength?: number;  maxLength?: number;  format?: "uri" | "email" | "date" | "date-time";  default?: string;}

EnumSchema

단일 선택 열거형 스키마예요.

EnumSchema:  | SingleSelectEnumSchema  | MultiSelectEnumSchema  | LegacyTitledEnumSchema

SingleSelectEnumSchema

단일 선택 열거형 스키마예요.

SingleSelectEnumSchema:  | UntitledSingleSelectEnumSchema  | TitledSingleSelectEnumSchema

MultiSelectEnumSchema

다중 선택 열거형 스키마예요.

MultiSelectEnumSchema:  | UntitledMultiSelectEnumSchema  | TitledMultiSelectEnumSchema

PrimitiveSchemaDefinition

기본(원시) 타입의 폼 elicitation 스키마 정의예요.

PrimitiveSchemaDefinition:  | StringSchema  | NumberSchema  | BooleanSchema  | EnumSchema

UntitledSingleSelectEnumSchema

타이틀 없는 단일 선택 열거형 스키마예요.

interface UntitledSingleSelectEnumSchema {  type: "string";  title?: string;  description?: string;  enum: string[];  default?: string;}

TitledSingleSelectEnumSchema

타이틀이 있는 단일 선택 열거형 스키마예요.

interface TitledSingleSelectEnumSchema {  type: "string";  title?: string;  description?: string;  oneOf: { const: string; title: string }[];  default?: string;}

UntitledMultiSelectEnumSchema

타이틀 없는 다중 선택 열거형 스키마예요.

interface UntitledMultiSelectEnumSchema {  type: "array";  title?: string;  description?: string;  minItems?: number;  maxItems?: number;  items: { type: "string"; enum: string[] };  default?: string[];}

TitledMultiSelectEnumSchema

타이틀이 있는 다중 선택 열거형 스키마예요.

interface TitledMultiSelectEnumSchema {  type: "array";  title?: string;  description?: string;  minItems?: number;  maxItems?: number;  items: { anyOf: { const: string; title: string }[] };  default?: string[];}

LegacyTitledEnumSchema

타이틀이 있는 레거시 열거형 스키마예요.

interface LegacyTitledEnumSchema {  type: "string";  title?: string;  description?: string;  enum: string[];  enumNames?: string[];  default?: string;}

알림 (Notifications)

CancelledNotification

취소 알림이에요.

interface CancelledNotification {  jsonrpc: "2.0";  method: "notifications/cancelled";  params: CancelledNotificationParams;}

CancelledNotificationParams

취소 알림 파라미터예요.

interface CancelledNotificationParams {  \_meta?: NotificationMetaObject;  requestId: RequestId;  reason?: string;}

LoggingMessageNotification

서버가 로그 메시지를 보내는 알림이에요.

interface LoggingMessageNotification {  jsonrpc: "2.0";  method: "notifications/message";  params: LoggingMessageNotificationParams;}

LoggingMessageNotificationParams

로그 메시지 알림 파라미터예요.

interface LoggingMessageNotificationParams {  \_meta?: NotificationMetaObject;  level: LoggingLevel;  logger?: string;  data: unknown;}

ProgressNotification

진행 상황 알림이에요.

interface ProgressNotification {  jsonrpc: "2.0";  method: "notifications/progress";  params: ProgressNotificationParams;}

ProgressNotificationParams

진행 상황 알림 파라미터예요.

interface ProgressNotificationParams {  \_meta?: NotificationMetaObject;  progressToken: ProgressToken;  progress: number;  total?: number;  message?: string;}

PromptListChangedNotification

프롬프트 목록이 변경되었음을 알리는 알림이에요.

interface PromptListChangedNotification {  jsonrpc: "2.0";  method: "notifications/prompts/list\_changed";  params?: NotificationParams;}

ResourceListChangedNotification

리소스 목록이 변경되었음을 알리는 알림이에요.

interface ResourceListChangedNotification {  jsonrpc: "2.0";  method: "notifications/resources/list\_changed";  params?: NotificationParams;}

ResourceUpdatedNotification

리소스가 업데이트되었음을 알리는 알림이에요.

interface ResourceUpdatedNotification {  jsonrpc: "2.0";  method: "notifications/resources/updated";  params: ResourceUpdatedNotificationParams;}

ResourceUpdatedNotificationParams

리소스 업데이트 알림 파라미터예요.

interface ResourceUpdatedNotificationParams {  \_meta?: NotificationMetaObject;  uri: string;}

SubscriptionsAcknowledgedNotification

구독이 수신 확인되었음을 알리는 알림이에요.

interface SubscriptionsAcknowledgedNotification {  jsonrpc: "2.0";  method: "notifications/subscriptions/acknowledged";  params: SubscriptionsAcknowledgedNotificationParams;}

SubscriptionsAcknowledgedNotificationParams

구독 수신 확인 알림 파라미터예요.

interface SubscriptionsAcknowledgedNotificationParams {  \_meta?: NotificationMetaObject;  notifications: SubscriptionFilter;}

ToolListChangedNotification

도구 목록이 변경되었음을 알리는 알림이에요.

interface ToolListChangedNotification {  jsonrpc: "2.0";  method: "notifications/tools/list\_changed";  params?: NotificationParams;}

LoggingLevel

로그 메시지의 심각도예요. RFC-5424에 명시된 대로 syslog 메시지 심각도에 매핑돼요: https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1

LoggingLevel:  | "debug"  | "info"  | "notice"  | "warning"  | "error"  | "critical"  | "alert"  | "emergency"

MRTR (Multi Round-Trip)

InputRequests

추가 입력이 필요함을 나타내는 요청 모음이에요.

InputRequests: any

InputRequiredResult

추가 입력이 필요함을 나타내는 결과예요.

interface InputRequiredResult {  \_meta?: ResultMetaObject;  resultType: string;  inputRequests?: InputRequests;  requestState?: string;  [key: string]: unknown;}

InputResponses

추가 입력에 대한 응답 모음이에요.

InputResponses: any

프롬프트 (Prompts)

Prompt

프롬프트 정의예요.

interface Prompt {  icons?: Icon[];  name: string;  title?: string;  description?: string;  arguments?: PromptArgument[];  \_meta?: MetaObject;}

PromptArgument

프롬프트 인자 정의예요.

interface PromptArgument {  name: string;  title?: string;  description?: string;  required?: boolean;}

PromptMessage

프롬프트의 메시지예요.

interface PromptMessage {  role: Role;  content: ContentBlock;}

GetPromptRequest

클라이언트가 서버에서 특정 프롬프트를 검색하는 요청이에요.

interface GetPromptRequest {  jsonrpc: "2.0";  id: RequestId;  method: "prompts/get";  params: GetPromptRequestParams;}

GetPromptRequestParams

prompts/get 요청 파라미터예요.

interface GetPromptRequestParams {  \_meta: RequestMetaObject;  inputResponses?: InputResponses;  requestState?: string;  name: string;  arguments?: { [key: string]: string };}

GetPromptResult

prompts/get 요청에 대해 서버가 반환하는 결과예요.

interface GetPromptResult {  \_meta?: ResultMetaObject;  resultType: string;  description?: string;  messages: PromptMessage[];  [key: string]: unknown;}

GetPromptResultResponse

prompts/get 요청에 대한 서버의 성공 응답이에요.

interface GetPromptResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: InputRequiredResult | GetPromptResult;}

ListPromptsRequest

클라이언트가 서버에서 사용 가능한 프롬프트 목록을 검색하는 요청이에요.

interface ListPromptsRequest {  jsonrpc: "2.0";  id: RequestId;  params: PaginatedRequestParams;  method: "prompts/list";}

ListPromptsResult

prompts/list 요청에 대해 서버가 반환하는 결과예요.

interface ListPromptsResult {  \_meta?: ResultMetaObject;  resultType: string;  nextCursor?: string;  ttlMs: number;  cacheScope: "public" | "private";  prompts: Prompt[];  [key: string]: unknown;}

ListPromptsResultResponse

prompts/list 요청에 대한 서버의 성공 응답이에요.

interface ListPromptsResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: ListPromptsResult;}

리소스 (Resources)

Resource

리소스 정의예요.

interface Resource {  icons?: Icon[];  name: string;  title?: string;  uri: string;  description?: string;  mimeType?: string;  annotations?: Annotations;  size?: number;  \_meta?: MetaObject;}

ResourceTemplate

리소스 템플릿 정의예요.

interface ResourceTemplate {  icons?: Icon[];  name: string;  title?: string;  uriTemplate: string;  description?: string;  mimeType?: string;  annotations?: Annotations;  \_meta?: MetaObject;}

ListResourcesRequest

클라이언트가 서버에서 사용 가능한 리소스 목록을 검색하는 요청이에요.

interface ListResourcesRequest {  jsonrpc: "2.0";  id: RequestId;  params: PaginatedRequestParams;  method: "resources/list";}

ListResourcesResult

resources/list 요청에 대해 서버가 반환하는 결과예요.

interface ListResourcesResult {  \_meta?: ResultMetaObject;  resultType: string;  nextCursor?: string;  ttlMs: number;  cacheScope: "public" | "private";  resources: Resource[];  [key: string]: unknown;}

ListResourcesResultResponse

resources/list 요청에 대한 서버의 성공 응답이에요.

interface ListResourcesResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: ListResourcesResult;}

ReadResourceRequest

클라이언트가 서버에서 리소스 내용을 읽는 요청이에요.

interface ReadResourceRequest {  jsonrpc: "2.0";  id: RequestId;  method: "resources/read";  params: ReadResourceRequestParams;}

ReadResourceRequestParams

resources/read 요청 파라미터예요.

interface ReadResourceRequestParams {  \_meta: RequestMetaObject;  inputResponses?: InputResponses;  requestState?: string;  uri: string;}

ReadResourceResult

resources/read 요청에 대해 서버가 반환하는 결과예요.

interface ReadResourceResult {  \_meta?: ResultMetaObject;  resultType: string;  ttlMs: number;  cacheScope: "public" | "private";  contents: (TextResourceContents | BlobResourceContents)[];  [key: string]: unknown;}

ReadResourceResultResponse

resources/read 요청에 대한 서버의 성공 응답이에요.

interface ReadResourceResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: InputRequiredResult | ReadResourceResult;}

ListResourceTemplatesRequest

클라이언트가 서버에서 리소스 템플릿 목록을 검색하는 요청이에요.

interface ListResourceTemplatesRequest {  jsonrpc: "2.0";  id: RequestId;  params: PaginatedRequestParams;  method: "resources/templates/list";}

ListResourceTemplatesResult

resources/templates/list 요청에 대해 서버가 반환하는 결과예요.

interface ListResourceTemplatesResult {  \_meta?: ResultMetaObject;  resultType: string;  nextCursor?: string;  ttlMs: number;  cacheScope: "public" | "private";  resourceTemplates: ResourceTemplate[];  [key: string]: unknown;}

ListResourceTemplatesResultResponse

resources/templates/list 요청에 대한 서버의 성공 응답이에요.

interface ListResourceTemplatesResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: ListResourceTemplatesResult;}

루트 (Roots)

ListRootsRequest

클라이언트가 서버에서 roots 목록을 검색하는 요청이에요.

interface ListRootsRequest {  method: "roots/list";  params?: { \_meta?: MetaObject };}

ListRootsResult

roots/list 요청에 대해 서버가 반환하는 결과예요.

interface ListRootsResult {  roots: Root[];}

Root

루트 정의예요.

interface Root {  uri: string;  name?: string;  \_meta?: MetaObject;}

샘플링 (Sampling)

CreateMessageRequest

서버가 샘플링을 위해 언어 모델 메시지 생성을 요청하는 요청이에요.

interface CreateMessageRequest {  method: "sampling/createMessage";  params: CreateMessageRequestParams;}

CreateMessageRequestParams

sampling/createMessage 요청 파라미터예요.

interface CreateMessageRequestParams {  messages: SamplingMessage[];  modelPreferences?: ModelPreferences;  systemPrompt?: string;  includeContext?: "none" | "thisServer" | "allServers";  temperature?: number;  maxTokens: number;  stopSequences?: string[];  metadata?: JSONObject;  tools?: Tool[];  toolChoice?: ToolChoice;}

CreateMessageResult

sampling/createMessage 요청에 대해 클라이언트가 반환하는 결과예요.

interface CreateMessageResult {  model: string;  stopReason?: string;  role: Role;  content: SamplingMessageContentBlock | SamplingMessageContentBlock[];  \_meta?: MetaObject;}

ModelHint

LLM 샘플링을 위한 모델 힌트예요.

interface ModelHint {  name?: string;}

ModelPreferences

LLM 샘플링을 위한 모델 선호 설정이에요.

interface ModelPreferences {  hints?: ModelHint[];  costPriority?: number;  speedPriority?: number;  intelligencePriority?: number;}

SamplingMessage

sampling 요청 메시지예요.

interface SamplingMessage {  role: Role;  content: SamplingMessageContentBlock | SamplingMessageContentBlock[];  \_meta?: MetaObject;}

SamplingMessageContentBlock

sampling 메시지의 콘텐츠 블록이에요.

SamplingMessageContentBlock:  | TextContent  | ImageContent  | AudioContent  | ToolUseContent  | ToolResultContent

ToolChoice

모델의 도구 사용 능력을 제어하는 설정이에요.

interface ToolChoice {  mode?: "none" | "required" | "auto";}

ToolResultContent

도구 결과 콘텐츠예요.

interface ToolResultContent {  type: "tool\_result";  toolUseId: string;  content: ContentBlock[];  structuredContent?: unknown;  isError?: boolean;  \_meta?: MetaObject;}

ToolUseContent

도구 사용 콘텐츠예요.

interface ToolUseContent {  type: "tool\_use";  id: string;  name: string;  input: { [key: string]: unknown };  \_meta?: MetaObject;}

발견 (Discovery)와 기능 (Capabilities)

DiscoverRequest

서버의 지원 프로토콜 버전, 기능, 정체성을 조회하는 요청이에요.

interface DiscoverRequest {  jsonrpc: "2.0";  id: RequestId;  method: "server/discover";  params: RequestParams;}

DiscoverResult

server/discover 요청에 대해 서버가 반환하는 결과예요.

interface DiscoverResult {  \_meta?: ResultMetaObject;  resultType: string;  supportedVersions: string[];  capabilities: ServerCapabilities;  instructions?: string;  ttlMs: number;  cacheScope: "public" | "private";  [key: string]: unknown;}

DiscoverResultResponse

server/discover 요청에 대한 서버의 성공 응답이에요.

interface DiscoverResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: DiscoverResult;}

ClientCapabilities

클라이언트가 지원하는 기능 정의예요.

interface ClientCapabilities {  experimental?: { [key: string]: JSONObject };  roots?: {};  sampling?: { context?: JSONObject; tools?: JSONObject };  elicitation?: { form?: JSONObject; url?: JSONObject };  extensions?: { [key: string]: JSONObject };}

ServerCapabilities

서버가 지원하는 기능 정의예요.

interface ServerCapabilities {  experimental?: { [key: string]: JSONObject };  logging?: JSONObject;  completions?: JSONObject;  prompts?: { listChanged?: boolean };  resources?: { subscribe?: boolean; listChanged?: boolean };  tools?: { listChanged?: boolean };  extensions?: { [key: string]: JSONObject };}

Implementation

구현(클라이언트 또는 서버)에 대한 설명이에요.

interface Implementation {  icons?: Icon[];  name: string;  title?: string;  version: string;  description?: string;  websiteUrl?: string;}

구독 (Subscriptions)

SubscriptionsListenRequest

클라이언트가 변경 알림을 구독하는 서버 발신(subscriptions/listen) 스트림을 여는 요청이에요.

interface SubscriptionsListenRequest {  jsonrpc: "2.0";  id: RequestId;  method: "subscriptions/listen";  params: SubscriptionsListenRequestParams;}

SubscriptionsListenRequestParams

subscriptions/listen 요청 파라미터예요.

interface SubscriptionsListenRequestParams {  \_meta: RequestMetaObject;  notifications: SubscriptionFilter;}

SubscriptionsListenResult

subscriptions/listen 요청에 대해 서버가 반환하는 결과예요.

interface SubscriptionsListenResult {  resultType: string;  \_meta: SubscriptionsListenResultMetaObject;  [key: string]: unknown;}

SubscriptionsListenResultResponse

subscriptions/listen 요청에 대한 서버의 성공 응답이에요.

interface SubscriptionsListenResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: SubscriptionsListenResult;}

SubscriptionsListenResultMetaObject

subscriptions/listen 결과 메타 객체예요.

interface SubscriptionsListenResultMetaObject {  "io.modelcontextprotocol/serverInfo"?: Implementation;  "io.modelcontextprotocol/subscriptionId": RequestId;  [key: string]: unknown;}

SubscriptionFilter

구독 알림을 위한 필터예요.

interface SubscriptionFilter {  toolsListChanged?: boolean;  promptsListChanged?: boolean;  resourcesListChanged?: boolean;  resourceSubscriptions?: string[];}

도구 (Tools)

Tool

도구 정의예요.

interface Tool {  icons?: Icon[];  name: string;  title?: string;  description?: string;  inputSchema: { \$schema?: string; type: "object"; [key: string]: unknown };  outputSchema?: { \$schema?: string; [key: string]: unknown };  annotations?: ToolAnnotations;  \_meta?: MetaObject;}

ToolAnnotations

도구 동작을 설명하는 annotation이에요.

interface ToolAnnotations {  title?: string;  readOnlyHint?: boolean;  destructiveHint?: boolean;  idempotentHint?: boolean;  openWorldHint?: boolean;}

CallToolRequest

클라이언트가 도구를 호출하는 요청이에요.

interface CallToolRequest {  jsonrpc: "2.0";  id: RequestId;  method: "tools/call";  params: CallToolRequestParams;}

CallToolRequestParams

tools/call 요청 파라미터예요.

interface CallToolRequestParams {  \_meta: RequestMetaObject;  inputResponses?: InputResponses;  requestState?: string;  name: string;  arguments?: { [key: string]: unknown };}

CallToolResult

tools/call 요청에 대해 서버가 반환하는 결과예요.

interface CallToolResult {  \_meta?: ResultMetaObject;  resultType: string;  content: ContentBlock[];  structuredContent?: unknown;  isError?: boolean;  [key: string]: unknown;}

CallToolResultResponse

tools/call 요청에 대한 서버의 성공 응답이에요.

interface CallToolResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: InputRequiredResult | CallToolResult;}

ListToolsRequest

클라이언트가 사용 가능한 도구 목록을 검색하는 요청이에요.

interface ListToolsRequest {  jsonrpc: "2.0";  id: RequestId;  params: PaginatedRequestParams;  method: "tools/list";}

ListToolsResult

tools/list 요청에 대해 서버가 반환하는 결과예요.

interface ListToolsResult {  \_meta?: ResultMetaObject;  resultType: string;  nextCursor?: string;  ttlMs: number;  cacheScope: "public" | "private";  tools: Tool[];  [key: string]: unknown;}

ListToolsResultResponse

tools/list 요청에 대한 서버의 성공 응답이에요.

interface ListToolsResultResponse {  jsonrpc: "2.0";  id: RequestId;  result: ListToolsResult;}

더 알아보기 (Learn more)