# ConduitMCP v0.9.5 - Table of Contents

> Elixir implementation of the Model Context Protocol (MCP) specification.
Build MCP servers to expose tools, resources, and prompts to LLM applications
like Claude Desktop and VS Code extensions. Supports both Streamable HTTP
and SSE transports with configurable authentication and CORS.

## Pages

- [README](readme.md)

- Changelog
  - [Changelog](changelog.md)

- Getting Started
  - [Choosing a Mode](choosing_a_mode.md)
  - [Endpoint Mode](endpoint_mode.md)
  - [DSL Mode](dsl_mode.md)
  - [Manual Mode](manual_mode.md)

- Features
  - [Authentication](authentication.md)
  - [Rate Limiting](rate_limiting.md)
  - [Multi-Node Session Stores](multi_node_sessions.md)
  - [Using Oban for MCP Tasks](oban_tasks.md)
  - [MCP Apps](mcp_apps.md)

## Modules

- [ConduitMcp.Cancellation.Owner](ConduitMcp.Cancellation.Owner.md): Long-lived process that owns the `:conduit_mcp_cancellations` ETS
table so concurrent Bandit request handlers don't race on
`:ets.new/2` when the table doesn't exist yet (each handler calls
`Cancellation.clear/1` from a `try/after`). Started under
`ConduitMcp.Supervisor` by `ConduitMcp.Application`.

- [ConduitMcp.Tasks.EtsStore.Owner](ConduitMcp.Tasks.EtsStore.Owner.md): Long-lived process that owns the `:conduit_mcp_tasks` ETS table so
the table outlives short-lived request handlers. Started under
`ConduitMcp.Supervisor` by `ConduitMcp.Application` when the
configured tasks store is the default `ConduitMcp.Tasks.EtsStore`.

- Core
  - [ConduitMcp](ConduitMcp.md): ConduitMCP - Elixir implementation of the Model Context Protocol (MCP).
  - [ConduitMcp.DSL](ConduitMcp.DSL.md): DSL for defining MCP servers with a clean, declarative syntax.
  - [ConduitMcp.DSL.Helpers](ConduitMcp.DSL.Helpers.md): Helper macros for building MCP responses in the DSL.
  - [ConduitMcp.DSL.SchemaBuilder](ConduitMcp.DSL.SchemaBuilder.md): Builds JSON Schema and NimbleOptions schemas from DSL parameter definitions.
  - [ConduitMcp.Server](ConduitMcp.Server.md): Behaviour for implementing stateless MCP servers.

- Endpoint Mode
  - [ConduitMcp.Component](ConduitMcp.Component.md): Behaviour for defining individual MCP tools, resources, and prompts as separate modules.
  - [ConduitMcp.Component.Schema](ConduitMcp.Component.Schema.md): Schema DSL for defining parameters in Component modules.
  - [ConduitMcp.Endpoint](ConduitMcp.Endpoint.md): Aggregates `ConduitMcp.Component` modules into a full MCP server.

- Protocol &amp; Handler
  - [ConduitMcp.Cancellation](ConduitMcp.Cancellation.md): Cooperative request cancellation for long-running tools.
  - [ConduitMcp.Errors](ConduitMcp.Errors.md): Standard error codes for MCP and JSON-RPC 2.0 responses.
  - [ConduitMcp.Handler](ConduitMcp.Handler.md): Routes JSON-RPC 2.0 MCP requests to a server module's behaviour callbacks.
  - [ConduitMcp.Protocol](ConduitMcp.Protocol.md): JSON-RPC 2.0 message construction and MCP protocol version negotiation.

- Transport
  - [ConduitMcp.Transport.SSE](ConduitMcp.Transport.SSE.md): Server-Sent Events (SSE) transport layer for MCP.
  - [ConduitMcp.Transport.StreamableHTTP](ConduitMcp.Transport.StreamableHTTP.md): Streamable HTTP transport for MCP (recommended).

- Authentication
  - [ConduitMcp.OAuth.KeyProvider](ConduitMcp.OAuth.KeyProvider.md): Behaviour for pluggable JWKS key providers.
  - [ConduitMcp.OAuth.KeyProvider.JWKS](ConduitMcp.OAuth.KeyProvider.JWKS.md): JWKS key provider that fetches keys from an HTTP endpoint with ETS caching.
  - [ConduitMcp.OAuth.KeyProvider.Static](ConduitMcp.OAuth.KeyProvider.Static.md): Static key provider for testing and development.
  - [ConduitMcp.OAuth.ResourceMetadata](ConduitMcp.OAuth.ResourceMetadata.md): Generates OAuth 2.0 Protected Resource Metadata (RFC 9728) for MCP servers.
  - [ConduitMcp.Plugs.Auth](ConduitMcp.Plugs.Auth.md): Authentication plug for MCP servers.
  - [ConduitMcp.Plugs.OAuth](ConduitMcp.Plugs.OAuth.md): OAuth 2.1 authentication plug for MCP servers.

- Rate Limiting
  - [ConduitMcp.Plugs.MessageRateLimit](ConduitMcp.Plugs.MessageRateLimit.md): Message-level rate limiting plug for MCP servers.
  - [ConduitMcp.Plugs.RateLimit](ConduitMcp.Plugs.RateLimit.md): Rate limiting plug for MCP servers.

- Security
  - [ConduitMcp.Plugs.OriginValidation](ConduitMcp.Plugs.OriginValidation.md): Plug that validates the `Origin` request header against an allowlist.
  - [ConduitMcp.Plugs.SecurityHeaders](ConduitMcp.Plugs.SecurityHeaders.md): Plug that adds standard security response headers to all responses.

- Sessions
  - [ConduitMcp.Session](ConduitMcp.Session.md): Session management facade for MCP protocol sessions.
  - [ConduitMcp.Session.EtsStore](ConduitMcp.Session.EtsStore.md): Default in-memory session store backed by a public, named ETS table.
  - [ConduitMcp.Session.Janitor](ConduitMcp.Session.Janitor.md): Periodically prunes expired sessions from a `ConduitMcp.Session.Store`.
  - [ConduitMcp.Session.Store](ConduitMcp.Session.Store.md): Behaviour for pluggable session storage backends.

- Tasks
  - [ConduitMcp.Tasks](ConduitMcp.Tasks.md): Task management for long-running MCP operations (experimental).
  - [ConduitMcp.Tasks.EtsStore](ConduitMcp.Tasks.EtsStore.md): ETS-backed task store. Default implementation of `ConduitMcp.Tasks.Store`.
  - [ConduitMcp.Tasks.Janitor](ConduitMcp.Tasks.Janitor.md): Periodically prunes terminal-state tasks from `ConduitMcp.Tasks`.
  - [ConduitMcp.Tasks.Store](ConduitMcp.Tasks.Store.md): Behaviour for pluggable task storage backends.

- Client
  - [ConduitMcp.Client](ConduitMcp.Client.md): Server-to-client request helpers for bidirectional MCP communication.

- Validation
  - [ConduitMcp.Validation](ConduitMcp.Validation.md): Runtime parameter validation using NimbleOptions.
  - [ConduitMcp.Validation.SchemaConverter](ConduitMcp.Validation.SchemaConverter.md): Converts DSL parameter definitions to NimbleOptions validation schemas.
  - [ConduitMcp.Validation.Validators](ConduitMcp.Validation.Validators.md): Common validation functions for use with the ConduitMCP DSL.

- Observability
  - [ConduitMcp.PromEx](ConduitMcp.PromEx.md): A PromEx plugin for monitoring ConduitMCP operations.
  - [ConduitMcp.Telemetry](ConduitMcp.Telemetry.md): Telemetry integration for ConduitMCP.

## Mix Tasks

- [mix bench](Mix.Tasks.Bench.md): Runs ConduitMCP benchmarks.

