Raxol MCP

Community Productivity

Elixir/OTP framework for MCP servers and clients that derives tools from a running UI component tree, letting agents drive terminal apps.

What can you do with Raxol MCP?

  • MCP Server: GenServer routing tool/resource requests via JSON-RPC 2.0
  • MCP Client: stdio JSON-RPC 2.0 client for consuming external MCP servers
  • Registry: ETS-backed tool/resource/prompt registration (no GenServer bottleneck)
  • Transports: stdio (CLI tools) and HTTP/SSE (Plug-based, no Phoenix)
  • ToolProvider: auto-derive MCP tools from widget trees (16 Component modules implement it)
  • FocusLens: attention-aware tool filtering (focused/all/hover modes)
  • ResourceProvider: expose TEA model state as MCP resources
  • Test Harness: pipe-friendly API (click, type_into, assert_component), functor law property tests

Install

The installation steps are in the documentation below. Documentation

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. Raxol MCP
  2. Install
  3. Features
  4. Quick start
  5. Architecture

Raxol MCP

MCP (Model Context Protocol) server and client for Elixir. JSON-RPC 2.0 protocol, tool/resource registry, stdio and SSE transports. Auto-derives agent tools from your widget tree.

Install

{:raxol_mcp, "~> 2.7"}

Features

  • MCP Server: GenServer routing tool/resource requests via JSON-RPC 2.0
  • MCP Client: stdio JSON-RPC 2.0 client for consuming external MCP servers
  • Registry: ETS-backed tool/resource/prompt registration (no GenServer bottleneck)
  • Transports: stdio (CLI tools) and HTTP/SSE (Plug-based, no Phoenix)
  • ToolProvider: auto-derive MCP tools from widget trees (16 Component modules implement it)
  • FocusLens: attention-aware tool filtering (focused/all/hover modes)
  • ResourceProvider: expose TEA model state as MCP resources
  • Test Harness: pipe-friendly API (click, type_into, assert_component), functor law property tests
  • Circuit Breaker: 3-state ETS machine for flaky tool callbacks

Quick start

# Register a tool
Raxol.MCP.Registry.register_tool(%{
  name: "my_tool",
  description: "Does a thing",
  input_schema: %{type: "object", properties: %{}}
})

# Start MCP server on stdio
mix mcp.server

Architecture

  • Raxol.MCP.Server: GenServer handling JSON-RPC dispatch
  • Raxol.MCP.Registry: ETS-backed registration (tools, resources, prompts)
  • Raxol.MCP.Protocol: JSON-RPC 2.0 encode/decode
  • Raxol.MCP.Transport.Stdio: stdio transport for CLI
  • Raxol.MCP.Transport.SSE: HTTP/SSE transport (Plug)
  • Raxol.MCP.Client: consume external MCP servers
  • Raxol.MCP.ToolProvider: widget-to-tool derivation behaviour
  • Raxol.MCP.Test: test harness with assertions

See main docs for full examples.

Frequently asked questions

What is Raxol MCP?

Elixir/OTP framework for MCP servers and clients that derives tools from a running UI component tree, letting agents drive terminal apps.

How do I install Raxol MCP?

Follow the installation steps in its documentation, shown on this page and in its repository.

Is Raxol MCP open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains Raxol MCP?

It is published by DROOdotFOO. AI.tn lists it but does not maintain or endorse it.

From the community awesome-mcp-servers lists and the project's GitHub repository. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.