README.adoc

= elixir-mcp-server

**Model Context Protocol (MCP) server framework for Elixir/BEAM**

A complete, production-ready implementation of the https://modelcontextprotocol.io[Model Context Protocol] that enables Elixir applications to integrate with Claude Code and other MCP clients.

== Features

* ✅ Complete JSON-RPC 2.0 protocol implementation
* ✅ stdio transport (MCP standard)
* ✅ Tool registration and execution
* ✅ Resource serving (planned)
* ✅ Prompt templates (planned)
* ✅ Server capabilities negotiation
* ✅ Type-safe tool definitions via behaviors
* ✅ OTP supervision for reliability

== Installation

Add `elixir_mcp_server` to your `mix.exs` dependencies:

[source,elixir]
----
def deps do
  [
    {:elixir_mcp_server, "~> 0.1.0"}
  ]
end
----

== Quick Start

=== Define a Tool

[source,elixir]
----
defmodule MyApp.Tools.Echo do
  use ElixirMcpServer.Tool

  @impl true
  def name, do: "echo"

  @impl true
  def description, do: "Echoes back the input message"

  @impl true
  def input_schema do
    %{
      type: "object",
      properties: %{
        message: %{type: "string", description: "Message to echo"}
      },
      required: ["message"]
    }
  end

  @impl true
  def execute(%{"message" => msg}, _context) do
    {:ok, [%{type: "text", text: "Echo: #{msg}"}]}
  end
end
----

=== Start the Server

[source,elixir]
----
ElixirMcpServer.start_link(
  name: "my-app",
  version: "1.0.0",
  tools: [MyApp.Tools.Echo]
)
----

=== Configure Claude Code

Add to your `.claude.json`:

[source,json]
----
{
  "mcpServers": {
    "my-app": {
      "command": "mix",
      "args": ["run", "--no-halt"],
      "env": {}
    }
  }
}
----

== Use Cases

This framework is useful for:

* **feedback-o-tron** - Automated feedback submission with network verification
* **Observatory** - GitHub intelligence and issue management
* **NeuroPhone** - Elixir/Phoenix applications
* **Any Elixir service** that wants Claude Code integration

== Architecture

[source]
----
┌─────────────────────────────────────┐
│   MCP Client (Claude Code, etc.)    │
└─────────────────┬───────────────────┘
                  │ JSON-RPC 2.0 / stdio
┌─────────────────▼───────────────────┐
│    ElixirMcpServer.Server           │
│    (GenServer, protocol handling)   │
└─────────────────┬───────────────────┘
                  │
    ┌─────────────┼─────────────┐
    │             │             │
┌───▼───┐    ┌───▼────┐   ┌───▼──────┐
│ Tools │    │Resources│   │ Prompts  │
│(your) │    │ (your)  │   │  (your)  │
└───────┘    └─────────┘   └──────────┘
----

== Documentation

* link:https://hexdocs.pm/elixir_mcp_server[API Documentation]
* link:CHANGELOG.md[Changelog]
* link:SECURITY.md[Security Policy]

== License

PMPL-1.0-or-later - see link:LICENSE[LICENSE] file for details

== OPSM Link

[source]
----
OPSM Core
  |
  v
elixir-mcp-server (Elixir tooling bridge for OPSM)

----