AndyL

AndyL

ElixirLS MCP Server

With this week’s release, ElixirLS bundles an experimental MCP Server. (see CHANGELOG)

Highlights

  • Added Call hierarchy provider implementing LSP textDocument/prepareCallHierarchy, callHierarchy/incomingCalls and callHierarchy/outgoingCalls
  • ElixirLS now bundles a number of experimental LLM oriented tools exposed as custom commands and a builtin MCP server. The tools focus on model friendly text interface instead of typical IDE oriented LSP API methods. Refer to README.md on how to connect to the MCP server. The tools include:
    • find_definition - Find and retrieve the source code of symbols.
    • get_environment - Retrieve environment at location with aliases, imports, requires and more.
    • get_docs - Aggregate and return comprehensive documentation
    • get_type_info - Extract typespecs and contracts.
    • find_implementations - Find all implementations of behaviours and protocols.
    • get_module_dependencies - Analyze module dependency relationships
  • Unofficial support for elixir 1.19

Thanks to @lukaszsamson for this new feature. I’m curious to hear user reports!

  • configuring to use with Claude Code, OpenCode, etc.
  • compare/contrast with Tidewave
  • integration with UsageRules or other coding aids
  • pro-tips, benefits, drawbacks, opportunities, concerns, etc.

First Post!

garrison

garrison

Interesting. Looks like it’s enabled by default so for those of us who want to turn it off elixirLS.mcpEnabled = false will take care of it.

I’m curious how many here are now using these agentic tools. Do we have a rough percentage?

Most Liked

cvkmohan

cvkmohan

Thanks. My experience is something similar. When I am using claude cli - firstly, it does not use the tools all that much - and - repeated nudging does not help much. In fact, if we are using plain claude cli - there will be zero difference between having any MCP or completely raw setup.

However, I have realized things change dramatically once we change the agent. Two examples that I can readily show:

  1. Zed Editor. When I am using the Zed editor - and - same claude sonnet 4 model - MCP calling, overall output quality dramatically improves. Everything else same. So, what Zed is giving as input to the LLM model is quite different from what claude cli gives to LLM. And that is making a lot of difference.
  2. OpenCode. When I am using the opencode cli - and - same claude sonnet 4 model - suppose I am using it for fixing failed tests. The way OpenCode approaches the problem is hugely different from how the same is done via claude cli. With opencode it will fix the code in the most optimal way in the fastest time with lower tokens. Nothing certain about claude cli.

Again both these tools (Zed, OpenCode) are using LSP or some semantic tool as part of the prompt. And it is showing its impact. How can it be enhanced is the question. That is where everyone is still in exploratory mode.
I can say with reasonable conviction that these graph databases, vector embeddings etc. are not that useful - atleast for code generation.

arcanemachine

arcanemachine

Shouldn’t this be an opt-in feature?

Personally, I just started playing with MCP very recently. I’m working with Ollama and Open Web UI. I tried getting Tidewave to work… I got to respond to my requests, but I couldn’t actually get anything useful out of it. It wouldn’t even eval my “hello world” function. :frowning:

arcanemachine

arcanemachine

The newest patch release makes MCP opt-in, not opt-out:

Last Post!

Tyson

Tyson

Yes! We all, including the folks developing coding agents, are figuring this out at the same time!

Interesting about your improved results with Zed/OpenCode–they must have more clever system prompts? I will try some side-by-side comparisons vs. Claude Code…

[edit: Sorry for somewhat hijacking this ElixirLS thread; I will try your MCP tools too!]

Where Next?

Popular in Dev Env & Tools Top

New
law
/an-aside Why is it not completing the module name too? Atom’s does. Also why does it not fill in the arguments with defaults that yo...
New
AstonJ
Welcome to our thread for Linux users :smiley: Mac users please use this thread Windows users please use this thread For those who dis...
New
AstonJ
Do we have any frequent travellers or digital nomads here? If so where have you been and do you have any tips to share? (Particularly in...
New
jswanner
I was about to reply to Why doesn’t Phoenix use Conventional Commit prefixes? - #41 by sodapopcan with some git aliases that I use for th...
New
AndyL
With this week’s release, ElixirLS bundles an experimental MCP Server. (see CHANGELOG) Highlights Added Call hierarchy provider imple...
New
Tyson
I know there are lot of shell-theme nerds in this group. I want to share a little something that Claude and I have been working on in our...
New

Other popular topics Top

vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement