Packages

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

Current section

Files

Jump to
raxol_mcp README.md
Raw

README.md

# 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
```elixir
{:raxol_mcp, "~> 2.4"}
```
## 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 (15 widgets)
- **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
```elixir
# 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](../../README.md) for full examples.