# Advanced Everything an ordinary server or client needs has a topical home in the sections above. This section is the escape hatches you reach for when `MCPServer`'s convenience layer is in the way: * **[The low-level Server](low-level-server.md)**: the class `MCPServer` is built on. Hand-written schemas, `on_*` handlers, nothing checked for you, and custom JSON-RPC methods of your own. * **[Pagination](pagination.md)** and **[Middleware](middleware.md)**: two things you can *only* do on the low-level `Server`. * **[Extensions](extensions.md)** and **[MCP Apps](apps.md)**: the protocol's extension surface. Compose extension packages into a server, or write your own. A few things you might reasonably look for here live where you'd actually use them instead: * **Authorization** is under **[Running your server](../run/index.md)** because you protect a server where you deploy it. * **OAuth**, **identity assertion**, connecting to **multiple servers**, and the response **cache** are all under **[Clients](../client/index.md)**. * **Multi-round-trip requests** and **Subscriptions** are under **[Inside your handler](../handlers/index.md)** because both are things a handler *does*. * **URI templates** is under **[Servers](../servers/index.md)**, next to Resources. * **[Protocol versions](../protocol-versions.md)** and **[Deprecated features](../deprecated.md)** each have their own top-level page. If you're not sure whether you need this section, you don't.