# Urchin v0.4.0 - Table of Contents > A Model Context Protocol (MCP) server library for Elixir, implementing the 2025-11-25 specification over the Streamable HTTP transport. ## Pages - [Urchin](readme.md) - [Changelog](changelog.md) - [Security Policy](security.md) - [LICENSE](license.md) ## Modules - [Urchin](Urchin.md): A Model Context Protocol (MCP) server library implementing the `2025-11-25` specification over the Streamable HTTP transport. - [Urchin.Auth](Urchin.Auth.md): OAuth 2.1 Resource Server configuration and logic for the MCP authorization spec (revision 2025-11-25). - [Urchin.Auth.Authorizer](Urchin.Auth.Authorizer.md): Behaviour for making the final OAuth authorization decision for a request. - [Urchin.Auth.Claims](Urchin.Auth.Claims.md): Normalized claims for a validated OAuth 2.1 access token. - [Urchin.Auth.Metadata](Urchin.Auth.Metadata.md): A `Plug` that serves the RFC 9728 Protected Resource Metadata document. - [Urchin.Auth.Plug](Urchin.Auth.Plug.md): A `Plug` that enforces a valid OAuth 2.1 bearer token on every request. - [Urchin.Capabilities](Urchin.Capabilities.md): Builds the `ServerCapabilities` object returned in the `initialize` result and parses the `ClientCapabilities` received from the client. - [Urchin.Content](Urchin.Content.md): Builders for MCP content blocks and resource contents. - [Urchin.Context](Urchin.Context.md): The request context handed to every server handler. - [Urchin.Dispatcher](Urchin.Dispatcher.md): Routes decoded JSON-RPC requests to `Urchin.Server` callbacks and shapes their return values into JSON-RPC result maps. - [Urchin.Endpoint](Urchin.Endpoint.md): A standalone HTTP endpoint that serves an MCP server with Bandit. - [Urchin.JSONRPC](Urchin.JSONRPC.md): Encoding, decoding and classification of JSON-RPC 2.0 messages. - [Urchin.Prompt](Urchin.Prompt.md): A prompt definition advertised via `prompts/list`, plus helpers for building the `PromptMessage` list returned by `prompts/get`. - [Urchin.Prompt.Argument](Urchin.Prompt.Argument.md): An argument accepted by a prompt template. - [Urchin.Protocol](Urchin.Protocol.md): Protocol-level constants and version negotiation for the Model Context Protocol. - [Urchin.Resource](Urchin.Resource.md): A resource definition advertised via `resources/list`. - [Urchin.ResourceTemplate](Urchin.ResourceTemplate.md): A resource template advertised via `resources/templates/list`. - [Urchin.Result.CallTool](Urchin.Result.CallTool.md): An explicit `tools/call` result. - [Urchin.SSE](Urchin.SSE.md): Server-Sent Events framing helpers for the Streamable HTTP transport. - [Urchin.Schema](Urchin.Schema.md): Minimal structural validation of tool arguments against a JSON Schema. - [Urchin.Server](Urchin.Server.md): Behaviour and DSL for authoring MCP servers. - [Urchin.Session](Urchin.Session.md): Per-session state for the Streamable HTTP transport. - [Urchin.Tool](Urchin.Tool.md): A tool definition advertised via `tools/list`. - [Urchin.Transport.StreamableHTTP](Urchin.Transport.StreamableHTTP.md): A `Plug` implementing the MCP Streamable HTTP transport (revision 2025-11-25). - [Urchin.URITemplate](Urchin.URITemplate.md): Minimal RFC 6570 URI template matching used to route `resources/read` requests to a declared `resource_template`. - Exceptions - [Urchin.Error](Urchin.Error.md): JSON-RPC / MCP error representation.