# gen_mcp v0.9.1 - Table of Contents

> A generic MCP server behaviour for the latest protocol version with a suite of components to build tools, resources and prompts.

## GUIDES

- [Changelog](changelog.md)

- Introduction
  - [Getting Started](001-getting-started.md)
  - [Using GenMCP Suite](002-using-mcp-suite.md)
  - [System Configuration](009-system-configuration.md)

## Modules

- Core
  - [GenMCP](GenMCP.md): The main behaviour for MCP servers.
  - [GenMCP.MCP](GenMCP.MCP.md): Helpers for building MCP payload structs from Servers, Tools or repositories.
  - [GenMCP.Transport.StreamableHTTP](GenMCP.Transport.StreamableHTTP.md): Handles incoming MCP requests over HTTP with SSE support.

- Suite
  - [GenMCP.Suite](GenMCP.Suite.md): A `GenMCP` implementation providing tools, resources, and prompts through a
composable extension system.
  - [GenMCP.Suite.Extension](GenMCP.Suite.Extension.md): A behaviour describing extensions to the `GenMCP.Suite` server.
  - [GenMCP.Suite.PersistedClientInfo](GenMCP.Suite.PersistedClientInfo.md): This module represents data that must be persisted in session storage
when using a `GenMCP.Suite.SessionController` implementation that persists and
restore long lived sessions.
  - [GenMCP.Suite.PromptRepo](GenMCP.Suite.PromptRepo.md): Defines the behaviour for implementing prompt repositories.
  - [GenMCP.Suite.ResourceRepo](GenMCP.Suite.ResourceRepo.md): Defines the behaviour for resource repositories and handles their execution.
  - [GenMCP.Suite.SessionController](GenMCP.Suite.SessionController.md): Behaviour for session controllers.

  - [GenMCP.Suite.SessionController.DevSessionStore](GenMCP.Suite.SessionController.DevSessionStore.md): An implementation of `GenMCP.Suite.SessionController` that persists the
session to disk.
  - [GenMCP.Suite.Tool](GenMCP.Suite.Tool.md): Defines the behaviour for implementing MCP tools in `GenMCP.Suite`.

- Sessions
  - [GenMCP.Mux.Channel](GenMCP.Mux.Channel.md)
  - [GenMCP.Mux.Session](GenMCP.Mux.Session.md): A GenServer based module used for processes representing an ongoing MCP
session.

- Utilities
  - [GenMCP.Error](GenMCP.Error.md): Helper module used to transform application errors into MCP/RPC error
payloads and HTTP status codes.

  - [GenMCP.TelemetryLogger](GenMCP.TelemetryLogger.md): A `:telemetry` event listener that produces logs for events emitted by the
`:gen_mcp` application.

- Protocol
  - [GenMCP.MCP.Annotations](GenMCP.MCP.Annotations.md)
  - [GenMCP.MCP.AudioContent](GenMCP.MCP.AudioContent.md)
  - [GenMCP.MCP.BlobResourceContents](GenMCP.MCP.BlobResourceContents.md)
  - [GenMCP.MCP.BooleanSchema](GenMCP.MCP.BooleanSchema.md)
  - [GenMCP.MCP.CallToolRequest](GenMCP.MCP.CallToolRequest.md)
  - [GenMCP.MCP.CallToolRequestParams](GenMCP.MCP.CallToolRequestParams.md)
  - [GenMCP.MCP.CallToolResult](GenMCP.MCP.CallToolResult.md)
  - [GenMCP.MCP.CancelledNotification](GenMCP.MCP.CancelledNotification.md)
  - [GenMCP.MCP.CancelledNotificationParams](GenMCP.MCP.CancelledNotificationParams.md)
  - [GenMCP.MCP.ClientCapabilities](GenMCP.MCP.ClientCapabilities.md)
  - [GenMCP.MCP.ContentBlock](GenMCP.MCP.ContentBlock.md)
  - [GenMCP.MCP.EmbeddedResource](GenMCP.MCP.EmbeddedResource.md)
  - [GenMCP.MCP.Error](GenMCP.MCP.Error.md)
  - [GenMCP.MCP.GetPromptRequest](GenMCP.MCP.GetPromptRequest.md)
  - [GenMCP.MCP.GetPromptRequestParams](GenMCP.MCP.GetPromptRequestParams.md)
  - [GenMCP.MCP.GetPromptResult](GenMCP.MCP.GetPromptResult.md)
  - [GenMCP.MCP.Icon](GenMCP.MCP.Icon.md)
  - [GenMCP.MCP.Icons](GenMCP.MCP.Icons.md)
  - [GenMCP.MCP.ImageContent](GenMCP.MCP.ImageContent.md)
  - [GenMCP.MCP.Implementation](GenMCP.MCP.Implementation.md)
  - [GenMCP.MCP.InitializeRequest](GenMCP.MCP.InitializeRequest.md)
  - [GenMCP.MCP.InitializeRequestParams](GenMCP.MCP.InitializeRequestParams.md)
  - [GenMCP.MCP.InitializeResult](GenMCP.MCP.InitializeResult.md)
  - [GenMCP.MCP.InitializedNotification](GenMCP.MCP.InitializedNotification.md)
  - [GenMCP.MCP.JSONRPCErrorResponse](GenMCP.MCP.JSONRPCErrorResponse.md)
  - [GenMCP.MCP.JSONRPCRequest](GenMCP.MCP.JSONRPCRequest.md)
  - [GenMCP.MCP.JSONRPCResponse](GenMCP.MCP.JSONRPCResponse.md)
  - [GenMCP.MCP.JSONRPCResultResponse](GenMCP.MCP.JSONRPCResultResponse.md)
  - [GenMCP.MCP.ListPromptsRequest](GenMCP.MCP.ListPromptsRequest.md)
  - [GenMCP.MCP.ListPromptsResult](GenMCP.MCP.ListPromptsResult.md)
  - [GenMCP.MCP.ListResourceTemplatesRequest](GenMCP.MCP.ListResourceTemplatesRequest.md)
  - [GenMCP.MCP.ListResourceTemplatesResult](GenMCP.MCP.ListResourceTemplatesResult.md)
  - [GenMCP.MCP.ListResourcesRequest](GenMCP.MCP.ListResourcesRequest.md)
  - [GenMCP.MCP.ListResourcesResult](GenMCP.MCP.ListResourcesResult.md)
  - [GenMCP.MCP.ListToolsRequest](GenMCP.MCP.ListToolsRequest.md)
  - [GenMCP.MCP.ListToolsResult](GenMCP.MCP.ListToolsResult.md)
  - [GenMCP.MCP.ListenerRequest](GenMCP.MCP.ListenerRequest.md): Represents a GET request from the StreamableHTTP client.

  - [GenMCP.MCP.LoggingLevel](GenMCP.MCP.LoggingLevel.md)
  - [GenMCP.MCP.LoggingMessageNotification](GenMCP.MCP.LoggingMessageNotification.md)
  - [GenMCP.MCP.LoggingMessageNotificationParams](GenMCP.MCP.LoggingMessageNotificationParams.md)
  - [GenMCP.MCP.Meta](GenMCP.MCP.Meta.md)
  - [GenMCP.MCP.ModMap](GenMCP.MCP.ModMap.md)
  - [GenMCP.MCP.NotificationParams](GenMCP.MCP.NotificationParams.md)
  - [GenMCP.MCP.PaginatedRequestParams](GenMCP.MCP.PaginatedRequestParams.md)
  - [GenMCP.MCP.PingRequest](GenMCP.MCP.PingRequest.md)
  - [GenMCP.MCP.ProgressNotification](GenMCP.MCP.ProgressNotification.md)
  - [GenMCP.MCP.ProgressNotificationParams](GenMCP.MCP.ProgressNotificationParams.md)
  - [GenMCP.MCP.ProgressToken](GenMCP.MCP.ProgressToken.md)
  - [GenMCP.MCP.Prompt](GenMCP.MCP.Prompt.md)
  - [GenMCP.MCP.PromptArgument](GenMCP.MCP.PromptArgument.md)
  - [GenMCP.MCP.PromptMessage](GenMCP.MCP.PromptMessage.md)
  - [GenMCP.MCP.ReadResourceRequest](GenMCP.MCP.ReadResourceRequest.md)
  - [GenMCP.MCP.ReadResourceRequestParams](GenMCP.MCP.ReadResourceRequestParams.md)
  - [GenMCP.MCP.ReadResourceResult](GenMCP.MCP.ReadResourceResult.md)
  - [GenMCP.MCP.RequestId](GenMCP.MCP.RequestId.md)
  - [GenMCP.MCP.RequestMeta](GenMCP.MCP.RequestMeta.md)
  - [GenMCP.MCP.RequestParams](GenMCP.MCP.RequestParams.md)
  - [GenMCP.MCP.Resource](GenMCP.MCP.Resource.md)
  - [GenMCP.MCP.ResourceLink](GenMCP.MCP.ResourceLink.md)
  - [GenMCP.MCP.ResourceTemplate](GenMCP.MCP.ResourceTemplate.md)
  - [GenMCP.MCP.Result](GenMCP.MCP.Result.md)
  - [GenMCP.MCP.Role](GenMCP.MCP.Role.md)
  - [GenMCP.MCP.RootsListChangedNotification](GenMCP.MCP.RootsListChangedNotification.md)
  - [GenMCP.MCP.ServerCapabilities](GenMCP.MCP.ServerCapabilities.md)
  - [GenMCP.MCP.SetLevelRequest](GenMCP.MCP.SetLevelRequest.md)
  - [GenMCP.MCP.SetLevelRequestParams](GenMCP.MCP.SetLevelRequestParams.md)
  - [GenMCP.MCP.SubscribeRequest](GenMCP.MCP.SubscribeRequest.md)
  - [GenMCP.MCP.SubscribeRequestParams](GenMCP.MCP.SubscribeRequestParams.md)
  - [GenMCP.MCP.TaskMetadata](GenMCP.MCP.TaskMetadata.md)
  - [GenMCP.MCP.TextContent](GenMCP.MCP.TextContent.md)
  - [GenMCP.MCP.TextResourceContents](GenMCP.MCP.TextResourceContents.md)
  - [GenMCP.MCP.Tool](GenMCP.MCP.Tool.md)
  - [GenMCP.MCP.ToolAnnotations](GenMCP.MCP.ToolAnnotations.md)
  - [GenMCP.MCP.ToolExecution](GenMCP.MCP.ToolExecution.md)
  - [GenMCP.MCP.UnsubscribeRequest](GenMCP.MCP.UnsubscribeRequest.md)
  - [GenMCP.MCP.UnsubscribeRequestParams](GenMCP.MCP.UnsubscribeRequestParams.md)

- Dev
  - [GenMCP.Test.Tools.Addition](GenMCP.Test.Tools.Addition.md)
  - [GenMCP.Test.Tools.ErlangHasher](GenMCP.Test.Tools.ErlangHasher.md)
  - [GenMCP.Test.Tools.ErlangHasherAsync](GenMCP.Test.Tools.ErlangHasherAsync.md)
  - [GenMCP.TestWeb.Router.McpMock](GenMCP.TestWeb.Router.McpMock.md)
  - [GenMCP.TestWeb.Router.McpMockControlled](GenMCP.TestWeb.Router.McpMockControlled.md)
  - [GenMCP.TestWeb.Router.McpReal](GenMCP.TestWeb.Router.McpReal.md)
  - [GenMCP.TestWeb.Router.NoAuth](GenMCP.TestWeb.Router.NoAuth.md)

- Exceptions
  - [GenMCP.CallbackReturnError](GenMCP.CallbackReturnError.md): Error raised when a behaviour implementation callback does not respect return
signatures.

