Messages

ℹ️
Protocol Revision: 2024-11-05

All messages in MCP MUST follow the JSON-RPC 2.0 specification. The protocol defines three types of messages:

Requests

Requests are sent from the client to the server or vice versa.

{
  jsonrpc: "2.0";
  id: string | number;
  method: string;
  params?: {
    [key: string]: unknown;
  };
}
  • Requests MUST include a string or integer ID.
  • Unlike base JSON-RPC, the ID MUST NOT be null.
  • The request ID MUST NOT have been previously used by the requestor within the same session.

Responses

Responses are sent in reply to requests.

{
  jsonrpc: "2.0";
  id: string | number;
  result?: {
    [key: string]: unknown;
  }
  error?: {
    code: number;
    message: string;
    data?: unknown;
  }
}
  • Responses MUST include the same ID as the request they correspond to.
  • Either a result or an error MUST be set. A response MUST NOT set both.
  • Error codes MUST be integers.

Notifications

Notifications are sent from the client to the server or vice versa. They do not expect a response.

{
  jsonrpc: "2.0";
  method: string;
  params?: {
    [key: string]: unknown;
  };
}
  • Notifications MUST NOT include an ID.