스키마 레퍼런스
스키마 레퍼런스 (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;}
ResourceLink
서버가 읽을 수 있는 리소스로, 프롬프트나 도구 호출 결과에 포함돼요. 참고: 도구가 반환한 리소스 링크는 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;}