{
"$type": "site.standard.document",
"content": "---\ntitle: \"Agentic Elixir superpowers: Zed + Tidewave + AshAI\"\ndescription: \"How to wire up Zed, Tidewave and AshAI as MCP servers for an agentic Elixir\n development workflow, with a helper script to glue it all together.\"\ntags:\n - dev\n---\n\nFor a few years now whenever I need to build any sort of networked interactive\nexperience, I reach for Elixir (with Phoenix LiveView and Ash). It's an\n_extremely_ productive combination, especially when you want to do more complex\nclient/server information flows than the standard request/response UX. I've also\n(for the last year or two) ditched Emacs for [Zed](https://zed.dev). Again, if\nyou take the time to master these tools I think they're excellent.\n\nLike every indie hacker and their wombat I'm experimenting with LLM Agents as\npart of my software development workflow. The new frontier (which I'm excited\nabout, but ask me in a few months how it's gone) is putting all of the above\ntogether. If you'd like to do that too, and want to see a real-world example of\nhow these things can be plugged into one another, here's my setup.\n\n- Zed as the text editor/MCP host\n- both [Tidewave](https://hexdocs.pm/tidewave/zed.html) and\n [AshAI](https://hexdocs.pm/ash_ai/readme.html) as MCP servers\n\nThen, my Zed settings file has this MCP server configuration:\n\n```json\n\"context_servers\": {\n \"ash_ai\": {\n \"command\": {\n \"path\": \"mcp-proxy\",\n \"args\": [\"http://localhost:4000/ash_ai/mcp\"],\n \"env\": {}\n },\n \"settings\": {}\n },\n \"tidewave\": {\n \"command\": {\n \"path\": \"mcp-proxy\",\n \"args\": [\"http://localhost:4000/tidewave/mcp\"],\n \"env\": {}\n },\n \"settings\": {}\n }\n},\n```\n\nEven after following the instructions for those tools, you'll need a way to set\nup all the proxies and pipe everything together. I wrote\n[this script](https://github.com/benswift/.dotfiles/blob/master/bin/tidewave-proxy.sh),\nwhich you're free to use (MIT Licence) if it helps.\n\nPut it on your `~PATH` and then (in your Phoenix project root) run it like so:\n\n```\n[16:03] daysy:panic $ tidewave-proxy.sh\nš MCP Proxy Development Environment\n====================================\nConfiguration:\n Host: localhost\n Port: 4000\n Ash AI MCP: http://localhost:4000/ash_ai/mcp\n Tidewave MCP: http://localhost:4000/tidewave/mcp\n\nš Starting mcp-proxy instances...\nStarting mcp-proxy for ash_ai...\nā
mcp-proxy for ash_ai started (PID: 88815)\n Log file: /tmp/mcp_ash_ai.log\nStarting mcp-proxy for tidewave...\nā
mcp-proxy for tidewave started (PID: 88816)\n Log file: /tmp/mcp_tidewave.log\n\nš MCP Proxy environment is ready!\n=====================================\n\nAvailable MCP Servers:\n š Ash AI MCP: http://localhost:4000/ash_ai/mcp\n š Tidewave MCP: http://localhost:4000/tidewave/mcp\n\nMCP Proxy Commands:\n For Ash AI: mcp-proxy http://localhost:4000/ash_ai/mcp\n For Tidewave: mcp-proxy http://localhost:4000/tidewave/mcp\n\nNext Steps:\n1. Configure your MCP client (Zed, Claude Desktop, etc.)\n2. Use the endpoints above with your MCP client\n3. Test with: curl -H 'Accept: application/json' <endpoint>\n\nLog Files:\n Ash AI Proxy: /tmp/mcp_ash_ai.log\n Tidewave Proxy: /tmp/mcp_tidewave.log\n\nPress Ctrl+C to stop all services and clean up\n\nš„ Starting Phoenix development server with REPL...\n==================================================\nErlang/OTP 27 [erts-15.2.5] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit]\n\n[info] Migrations already up\n[info] Running PanicWeb.Endpoint with Bandit 1.7.0 at 127.0.0.1:4000 (http)\n[info] Access PanicWeb.Endpoint at http://localhost:4000\nInteractive Elixir (1.18.4) - press Ctrl+C to exit (type h() ENTER for help)\n[watch] build finished, watching for changes...\n\nRebuilding...\n\nDone in 196ms.\n```\n\nThen, to test, in the Agent panel try something like:\n\n```\nUse the tidewave project eval tool to add 10+15 in Elixir.\n```\n\nIf everything's hooked up right, you'll get the answer.\n\nOne other tip: make sure you're using OTP27 rather than the (newest)\nOTP28---there's an error on one of the AshAI deps which stops it compiling on\nthe latest OTP. I suspect it'll be fixed soon, though.\n",
"createdAt": "2026-05-13T23:14:44.599Z",
"description": "How to wire up Zed, Tidewave and AshAI as MCP servers for an agentic Elixir development workflow, with a helper script to glue it all together.",
"path": "/blog/2025/06/06/agentic-elixir-superpowers-zed-tidewave-ashai",
"publishedAt": "2025-06-06T00:00:00.000Z",
"site": "at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.publication/self",
"tags": [
"dev"
],
"textContent": "How to wire up Zed, Tidewave and AshAI as MCP servers for an agentic Elixir development workflow, with a helper script to glue it all together.",
"title": "Agentic Elixir superpowers: Zed + Tidewave + AshAI"
}