How MCP Uses JSON-RPC
MCP uses JSON-RPC-style messages as its structured request/response foundation. Understanding that layer helps when you debug raw traffic or implement lower-level clients and servers.
Requests and responses
A request identifies a method and supplies parameters. A response corresponds to the request and contains either a result or an error. SDKs usually hide this plumbing, but the structure matters for tracing and interoperability.
Notifications
Protocols can also define notifications where no direct response is expected. Whether a capability uses request/response or notification behavior depends on the MCP method and protocol version.
JSON-RPC is not the transport
This is a common confusion. JSON-RPC defines message semantics; stdio or HTTP carries those messages. Changing transport does not change what a tool means.
Why SDKs are usually preferable
You can inspect raw JSON-RPC for learning and debugging, but production code should generally use a maintained MCP SDK. The protocol evolves, including version negotiation, headers, caching metadata, and extensions. SDKs reduce the chance of accidentally implementing an outdated subset.