A simplified implementation of the Model Context Protocol (MCP) server using Elixir's Phoenix Framework.
{
"mcpServers": {
"your_server": {
"env": {
"API_KEY": "value"
},
"args": [
"arg1"
],
"tools": {
"tool_name": {
"parameters": [
{
"name": "param1",
"type": "string",
"description": "..."
}
],
"description": "What it does"
}
},
"command": "/path/to/executable"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A simplified implementation of the Model Context Protocol (MCP) server using Elixir's Phoenix Framework.
Is it safe?
No package registry to scan.
No authentication — any process on your machine can connect.
MIT. View license →
Is it maintained?
Last commit 14 days ago. 67 stars.
Will it work with my client?
Transport: stdio, sse, http. Works with Claude Desktop, Cursor, Claude Code, and most MCP clients.
No automated test available for this server. Check the GitHub README for setup instructions.
No known vulnerabilities.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationHave you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Dynamic problem-solving through sequential thought chains
A Model Context Protocol server for searching and analyzing arXiv papers
An open-source AI agent that brings the power of Gemini directly into your terminal.
The official Python SDK for Model Context Protocol servers and clients
MCP Security Weekly
Get CVE alerts and security updates for MCPhoenix and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
MCP server built on Phoenix Framework (Elixir). Exposes Server-Sent Events and JSON-RPC endpoints for MCP clients, with support for managing multiple child MCP servers through JSON configuration.
Note: the module and directory names use the spelling "MCPheonix" (without the 'o') throughout the codebase.
Runs a Phoenix web server on port 4001 that:
POST /mcp/rpcGET /mcp/streamChild servers are defined in priv/config/mcp_servers.json and started automatically at boot.
| Area | State | |------|-------| | Transport | HTTP (SSE + JSON-RPC) | | Framework | Phoenix 1.7, Elixir >= 1.14, Erlang >= 25 | | Child MCP servers | Flux (image generation), Dart (task management) | | OTP supervision | Yes — child servers are supervised processes | | Cloudflare integration | Durable Objects client (experimental, uses custom hex package) | | Event system | Broadway + GenStage for processing pipelines | | Tests | ExUnit, 2 test files (Cloudflare DO client, mock websocket) | | License | MIT |
lib/
mcpheonix/
application.ex — OTP application, supervision tree
mcp/
server.ex — Core MCP server logic
server_manager.ex — Manages child MCP server processes
server_process.ex — GenServer wrapping a child stdio process
supervisor.ex — Supervisor for MCP server processes
config.ex — Reads mcp_servers.json
connection.ex — Client connection state
json_rpc_protocol.ex — JSON-RPC 2.0 parsing
jsonrpc_client.ex — Client for calling child servers
flux_server.ex — Flux-specific server config
features/
resources.ex — Resource listing
tools.ex — Tool listing and dispatch
events/
broker.ex — Pub/sub event broker
cloud/
durable_objects/
client.ex — Cloudflare Durable Objects HTTP client
resources/
message.ex, registry.ex, user.ex — Domain resources (Ash framework)
mcpheonix_web/
endpoint.ex — Phoenix endpoint
router.ex — Routes: /mcp/stream (SSE), /mcp/rpc (JSON-RPC)
controllers/
mcp_controller.ex — SSE stream and RPC handler
page_controller.ex — Default page
plugs/
mcp_rpc_plug.ex — Parses JSON-RPC body
raw_body_*.ex — Raw body reading for RPC
Edit priv/config/mcp_servers.json:
{
"mcpServers": {
"your_server": {
"command": "/path/to/executable",
"args": ["arg1"],
"env": { "API_KEY": "value" },
"tools": {
"tool_name": {
"description": "What it does",
"parameters": [
{ "name": "param1", "type": "string", "description": "..." }
]
}
}
}
}
}
Servers are started as child processes under OTP supervision and restarted on failure.
git clone https://github.com/jmanhype/MCPhoenix.git
cd MCPhoenix # note: the repo name uses correct spelling
mix deps.get
mix phx.server # starts on port 4001
| Dependency | Version | |-----------|---------| | Elixir | >= 1.14 | | Erlang/OTP | >= 25 | | Phoenix | ~> 1.7.0 | | Node.js | >= 18 (for child MCP servers) | | Python | >= 3.9 (for Flux/Dart integration) |
| Integration | What's Needed |
|------------|---------------|
| Flux image generation | Python 3.9+, Flux CLI, BFL_API_KEY |
| Dart task management | Node.js 18+, DART_TOKEN |
| Cloudflare Durable Objects | Worker deployment, CLOUDFLARE_WORKER_URL, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_API_TOKEN |
| Endpoint | Method | Purpose | |------