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.

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:

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?

sodapopcan

sodapopcan

Could always start a poll!

Where Next?

Popular in Dev Env & Tools Top

AstonJ
Following the Is your computer's internet connection wired or wireless? (Poll) I thought it might be an idea to have an accompany thread ...
New
New
ariandanim
Dear all, Does anyone has tried using ARM Laptop Snapdragon? I am planning to buy new one for my daily coding, but still need some sugg...
New
aziz
I’m happy to finally present to you the best Sublime Text package for Elixir, templates and more! :partying_face: :confetti_ball: Elixi...
New
New
DaAnalyst
Note: Not a strictly Elixir question but relates to us as well. A year or so ago I asked Grok (or ChatGPT, can’t remember) what would ha...
New
AstonJ
Inspired by @jdiago’s post containing this slide: I thought it would be interesting discussing what independent languages like Elixir...
#ai
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
Not sure I’m going to upgrade myself yet, but curious what others think: How are you finding it for dev? What are your thoughts of it g...
New
AstonJ
Following on from this post in Do you use LittleSnitch or the equivalent on your OS? I think it might be worth us creating this thread so...
New

Other popular topics Top

vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
AstonJ
You’re a programmer, so you don’t need spoon feeding with the conventional drivel about “this is an integer.” No. You need to know what’s...
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 27727 240
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New

We're in Beta

About us Mission Statement