# anubis_mcp v1.6.0 - Table of Contents

Model Context Protocol (MCP) implementation in Elixir with Phoenix integration

## Pages

- Getting Started
  - [Anubis MCP](readme.md)
  - [Welcome to Anubis MCP](introduction.md)

- Building with Anubis
  - [Building a Client](building-a-client.md)
  - [Building a Server](building-a-server.md)

- Patterns &amp; Reference
  - [Recipes](recipes.md)
  - [API Reference](reference.md)

- Project Info
  - [Changelog](changelog.md)
  - [Contributing to Anubis MCP](contributing.md)
  - [LICENSE](license.md)

## Modules

- [Anubis.Client](Anubis.Client.md): MCP (Model Context Protocol) client for connecting to MCP servers.
- [Anubis.Client.Operation](Anubis.Client.Operation.md): Represents an operation to be performed by the MCP client.
- [Anubis.MCP.Case](Anubis.MCP.Case.md): Test case template for MCP protocol testing.
- [Anubis.MCP.ElicitationSchema](Anubis.MCP.ElicitationSchema.md): Validator for the restricted JSON Schema subset allowed in elicitation requests.
- [Anubis.MCP.Error](Anubis.MCP.Error.md): Fluent API for building MCP protocol errors.
- [Anubis.MCP.Message](Anubis.MCP.Message.md): Handles parsing and validation of MCP (Model Context Protocol) messages using the Peri library.
- [Anubis.MCP.Response](Anubis.MCP.Response.md): Represents successful responses in the MCP protocol.
- [Anubis.Protocol](Anubis.Protocol.md): MCP protocol version management.
- [Anubis.Protocol.Behaviour](Anubis.Protocol.Behaviour.md): Behaviour that each MCP protocol version module must implement.
- [Anubis.Protocol.Registry](Anubis.Protocol.Registry.md): Registry for MCP protocol version modules.
- [Anubis.Protocol.V2024_11_05](Anubis.Protocol.V2024_11_05.md): Protocol implementation for MCP specification version 2024-11-05.
- [Anubis.Protocol.V2025_03_26](Anubis.Protocol.V2025_03_26.md): Protocol implementation for MCP specification version 2025-03-26.
- [Anubis.Protocol.V2025_06_18](Anubis.Protocol.V2025_06_18.md): Protocol implementation for MCP specification version 2025-06-18.
- [Anubis.Protocol.V2025_11_25](Anubis.Protocol.V2025_11_25.md): Protocol implementation for MCP specification version 2025-11-25.
- [Anubis.Server](Anubis.Server.md): Build MCP servers that extend language model capabilities.
- [Anubis.Server.Authorization](Anubis.Server.Authorization.md): OAuth 2.1 resource server authorization support.
- [Anubis.Server.Authorization.IntrospectionValidator](Anubis.Server.Authorization.IntrospectionValidator.md): Token validator using RFC 7662 Token Introspection.
- [Anubis.Server.Authorization.JWTValidator](Anubis.Server.Authorization.JWTValidator.md): JWT validator using JWKS (requires the `:jose` dependency).
- [Anubis.Server.Authorization.Validator](Anubis.Server.Authorization.Validator.md): Behaviour for token validators.
- [Anubis.Server.Authorization.WellKnown](Anubis.Server.Authorization.WellKnown.md): Plug serving the RFC 9728 protected resource metadata document.
- [Anubis.Server.Component.Prompt](Anubis.Server.Component.Prompt.md): Defines the behaviour for MCP prompts.
- [Anubis.Server.Component.Resource](Anubis.Server.Component.Resource.md): Defines the behaviour for MCP resources.
- [Anubis.Server.Component.Tool](Anubis.Server.Component.Tool.md): Defines the behaviour for MCP tools.
- [Anubis.Server.Component.URITemplate](Anubis.Server.Component.URITemplate.md): RFC 6570 URI Template parser and matcher (Levels 1 and 2).
- [Anubis.Server.Context](Anubis.Server.Context.md): Read-only session and request context, set by the SDK before each callback.
- [Anubis.Server.Frame](Anubis.Server.Frame.md): The Anubis Frame — pure user state + read-only context.
- [Anubis.Server.Registry](Anubis.Server.Registry.md): Behaviour for pluggable session registries and deterministic naming utilities.
- [Anubis.Server.Registry.Local](Anubis.Server.Registry.Local.md): ETS-based session registry for HTTP transports.
- [Anubis.Server.Registry.None](Anubis.Server.Registry.None.md): No-op registry for STDIO transport.
- [Anubis.Server.Registry.PG](Anubis.Server.Registry.PG.md): Distributed session registry backed by Erlang's `:pg` (process groups) module.
- [Anubis.Server.Response](Anubis.Server.Response.md): Fluent interface for building MCP component responses.
- [Anubis.Server.Session](Anubis.Server.Session.md): Per-client MCP session process.
- [Anubis.Server.Session.Store](Anubis.Server.Session.Store.md): Behaviour for session persistence adapters.
- [Anubis.Server.Session.Store.Redis](Anubis.Server.Session.Store.Redis.md): Redis-based session store implementation.
- [Anubis.Server.Task](Anubis.Server.Task.md): Represents an MCP task — a durable state machine wrapping a long-running request.
- [Anubis.Server.TaskStore](Anubis.Server.TaskStore.md): Behaviour for pluggable MCP task storage backends.
- [Anubis.Server.TaskStore.Local](Anubis.Server.TaskStore.Local.md): In-memory `Anubis.Server.TaskStore` adapter backed by a single GenServer.
- [Anubis.Server.Transport.SSE](Anubis.Server.Transport.SSE.md): SSE (Server-Sent Events) transport implementation for MCP servers.
- [Anubis.Server.Transport.SSE.Plug](Anubis.Server.Transport.SSE.Plug.md): A Plug implementation for the SSE (Server-Sent Events) transport.
- [Anubis.Server.Transport.STDIO](Anubis.Server.Transport.STDIO.md): STDIO transport implementation for MCP servers.
- [Anubis.Server.Transport.StreamableHTTP](Anubis.Server.Transport.StreamableHTTP.md): StreamableHTTP transport implementation for MCP servers.
- [Anubis.Server.Transport.StreamableHTTP.Plug](Anubis.Server.Transport.StreamableHTTP.Plug.md): A Plug implementation for the Streamable HTTP transport.
- [Anubis.Server.Transport.WellKnown](Anubis.Server.Transport.WellKnown.md): Plug that serves the RFC 9728 OAuth Protected Resource metadata document
at `/.well-known/oauth-protected-resource`.
- [Anubis.Test.MockSessionStore](Anubis.Test.MockSessionStore.md): Mock session store for testing persistence functionality.
- [Anubis.Test.SyncHelpers](Anubis.Test.SyncHelpers.md): Synchronization helpers that replace fixed `Process.sleep/1` waits in tests.
- [Anubis.Transport](Anubis.Transport.md): Functional behaviour for MCP transport implementations.
- [Anubis.Transport.Behaviour](Anubis.Transport.Behaviour.md): Defines the behavior that all transport implementations must follow.

- [Anubis.Transport.SSE](Anubis.Transport.SSE.md): A transport implementation that uses Server-Sent Events (SSE) for receiving messages
and HTTP POST requests for sending messages back to the server.
- [Anubis.Transport.STDIO](Anubis.Transport.STDIO.md): A transport implementation that uses standard input/output.
- [Anubis.Transport.StreamableHTTP](Anubis.Transport.StreamableHTTP.md): A transport implementation that uses Streamable HTTP as specified in MCP 2025-03-26.
- [Anubis.Transport.WebSocket](Anubis.Transport.WebSocket.md): A transport implementation that uses WebSockets for bidirectional communication
with the MCP server.
- [AsyncDispatchTestServer](AsyncDispatchTestServer.md): Test server with controllable tool timing for async dispatch tests.
- [BufferedMockTransport](BufferedMockTransport.md): A mock transport that delegates parse/encode to STDIO (for buffering)
but stubs the GenServer behaviour. Used to test chunked STDIO responses.

- [MockTokenValidator](MockTokenValidator.md): A simple test validator that accepts any non-empty token and returns
configurable claims. Use `:persistent_term` or process dictionary for
test-specific configuration.

- [MockTransport](MockTransport.md): Default Mox stub-with module for `Anubis.MockTransport`.
- [OAuthTestHelper](OAuthTestHelper.md): Helpers for testing OAuth 2.1 authorization in Anubis servers.
- [StubServer](StubServer.md): Minimal test server that implements only the required callbacks.
- [StubSessionRecoveryRejectServer](StubSessionRecoveryRejectServer.md): Test server that rejects session recovery via handle_session_expired/2.

- [StubSessionRecoveryServer](StubSessionRecoveryServer.md): Test server that implements handle_session_expired/2, supplying custom
client info and marking the frame with a recovery flag.

- [StubTransport](StubTransport.md): Simple mock transport for MCP protocol testing.
Records all messages sent through it for inspection in tests.

- [TasksStubServer](TasksStubServer.md): Stub MCP server used by Tasks lifecycle tests.
- [TasksStubServer.AlwaysFails](TasksStubServer.AlwaysFails.md): Returns a CallToolResult with isError: true.
- [TasksStubServer.MustBeTask](TasksStubServer.MustBeTask.md): Mandatory task tool.
- [TasksStubServer.NoTasks](TasksStubServer.NoTasks.md): Default policy — task augmentation forbidden.
- [TasksStubServer.WaitSignalAdd](TasksStubServer.WaitSignalAdd.md): Adds two integers after waiting for a `{:proceed, sig}` message.
- [TestIODevice](TestIODevice.md): Minimal Erlang IO-protocol server for exercising `Anubis.Server.Transport.STDIO` in tests.
- [TestPrompts.FieldPrompt](TestPrompts.FieldPrompt.md): Test prompt with field metadata
- [TestPrompts.LegacyPrompt](TestPrompts.LegacyPrompt.md): Legacy prompt without field macros
- [TestPrompts.NestedPrompt](TestPrompts.NestedPrompt.md): Prompt with nested fields
- [TestTools.DateListTool](TestTools.DateListTool.md): Tool with list of dates
- [TestTools.DateTimeTool](TestTools.DateTimeTool.md): Tool with datetime field
- [TestTools.DateTool](TestTools.DateTool.md): Tool with date field
- [TestTools.DeeplyNestedTool](TestTools.DeeplyNestedTool.md): Tool with deeply nested fields
- [TestTools.EnumWithTypeTool](TestTools.EnumWithTypeTool.md): Tool demonstrating enum with type specification
- [TestTools.EventTool](TestTools.EventTool.md): Tool with nested date fields
- [TestTools.LegacyTool](TestTools.LegacyTool.md): Tool using traditional Peri schema syntax without field macros
- [TestTools.NaiveDateTimeTool](TestTools.NaiveDateTimeTool.md): Tool with naive datetime field
- [TestTools.NestedFieldTool](TestTools.NestedFieldTool.md): Tool with nested field definitions
- [TestTools.RequiredOptionTool](TestTools.RequiredOptionTool.md): Tool demonstrating required: true option
- [TestTools.SingleNestedFieldTool](TestTools.SingleNestedFieldTool.md): Tool with single nested field
- [TestTools.TimeTool](TestTools.TimeTool.md): Tool with time field
- [ToolWithAnnotations](ToolWithAnnotations.md): A tool with annotations
- [ToolWithCustomAnnotations](ToolWithCustomAnnotations.md): A tool with custom annotations implementation
- [ToolWithInvalidOutput](ToolWithInvalidOutput.md): A tool that returns data not matching its output schema
- [ToolWithMeta](ToolWithMeta.md): A tool with _meta support
- [ToolWithOutputSchema](ToolWithOutputSchema.md): A tool with output schema
- [ToolWithoutAnnotations](ToolWithoutAnnotations.md): A tool without annotations
- [ToolWithoutRequiredParams](ToolWithoutRequiredParams.md): A tool with no required parameters

- Exceptions
  - [Anubis.Server.ConfigurationError](Anubis.Server.ConfigurationError.md): Raised when required MCP server configuration is missing or invalid.

## Mix Tasks

- [mix anubis.sse.interactive](Mix.Tasks.Anubis.Sse.Interactive.md): Mix task to test the SSE transport implementation, interactively sending commands.
- [mix anubis.stdio.interactive](Mix.Tasks.Anubis.Stdio.Interactive.md): Mix task to test the STDIO transport implementation, interactively sending commands.
- [mix anubis.streamable_http.interactive](Mix.Tasks.Anubis.StreamableHttp.Interactive.md): Mix task to test the Streamable HTTP transport implementation, interactively sending commands.
- [mix anubis.websocket.interactive](Mix.Tasks.Anubis.Websocket.Interactive.md): Mix task to test the WebSocket transport implementation, interactively sending commands.

