十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何接入ElixirLS内置MCP服务器:让Claude/Copilot即时查询Elixir符号定义

如何接入ElixirLS内置MCP服务器:让Claude/Copilot即时查询Elixir符号定义 如何接入ElixirLS内置MCP服务器让Claude/Copilot即时查询Elixir符号定义【免费下载链接】vscode-elixir-lsElixir language support and debugger for VS Code, powered by ElixirLS.项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls在 VS Code 中安装vscode-elixir-lsElixirLS 扩展后你可以通过它内置的 MCPModel Context Protocol服务器让 Claude、Copilot 等 AI 助手直接查询 Elixir 符号定义与源码无需手动复制粘贴代码。本文是一篇面向新手的完整指南介绍 ElixirLS MCP 服务器的工作原理、最快配置步骤和常见问题的解决办法。什么是 ElixirLS 内置 MCP 服务器简单来说MCP 服务器是 AI 助手与本地开发环境之间的桥梁。ElixirLS 扩展把这个桥直接内置了扩展会在启动时为每个 Elixir 工作区自动注册一个 MCP 服务器定义ElixirLS MCP (工作区名)你不再需要手写mcp.json配置文件AI 助手可以借此调用 ElixirLS 语言服务器的能力即时查询模块、函数、宏的定义和源码支持多根工作区Multi-root workspaces每个最外层工作区会对应一个独立的 MCP 服务器。它是如何工作的如果你好奇背后的机制核心逻辑都在 mcp.ts 中整体流程非常简洁端口计算每个工作区的 MCP 服务器运行在一个可预测的端口上——默认规则是3789 hash(工作区路径)对rootUri做 MD5 后取模 1000保证不同项目互不冲突协议转换ElixirLS 的 MCP 服务器通过 TCP 提供而 VS Code 的 MCP 客户端使用 stdio 传输。扩展自带了一个tcp_to_stdio_bridge.exs桥接脚本把 TCP 转成 stdio自动完成对接动态注册扩展通过vscode.lm.registerMcpServerDefinitionProvider向 VS Code 注册 MCP 定义provider id 为elixirLS.mcp注册声明见 package.json 中的mcpServerDefinitionProviders字段。当你开启 MCP 或调整工作区时服务器列表会自动刷新。三步快速接入 ElixirLS MCP 服务器整个配置只需要动两个设置项是最快的接入方式第 1 步安装 ElixirLS 扩展确认已安装 vscode-elixir-ls 扩展ElixirLS for VS Code并打开一个 Elixir 项目例如包含mix.exs的 Phoenix 项目。第 2 步开启 MCP 服务器打开 VS Code 设置Ctrl/Cmd ,搜索elixirLS.mcpEnabled将其设置为true。也可以直接在工作区的.vscode/settings.json中配置{ elixirLS.mcpEnabled: true }第 3 步重启并验证重启编辑器或重新加载窗口。在 VS Code 的 MCP 服务器列表中你应该能看到名为ElixirLS MCP (你的工作区名)的服务器。此时 Claude 或 Copilot 就能通过它查询 Elixir 符号定义了。 使用 asdf / mise 等版本管理器的用户无需额外操作——扩展会让桥接脚本在项目目录下运行从而正确解析 Elixir 版本。如何指定 MCP 服务器端口避免端口冲突默认端口是自动计算的但如果该端口恰好被占用MCP 服务器可能会退避到其他端口导致桥接失败。最稳妥的做法是手动指定端口{ elixirLS.mcpPort: 4321 }elixirLS.mcpPort的详细说明见 package.json 中的设置定义默认值0表示使用自动端口。接入之后让 AI 即时查询 Elixir 符号除了 MCP 通道ElixirLS 还内置了一个语言模型工具elixir-definition让 AI 直接查找符号定义实现细节见 definition-tool.ts 和设计说明文档 LLM_DEFINITION_TOOL.md。AI 可以接受多种格式的符号名符号类型示例模块MyModule、MyModule.SubModule函数MyModule.my_function、MyModule.my_function/2Erlang 模块:erlang、:etsAI 返回的结果会包含定义所在文件、行号、doc文档和spec类型标注。典型的使用场景写代码时提问帮我看看Phoenix.LiveView中handle_event/3的实现调试时追问让 AI 解释某个宏展开后的真实逻辑Code Review让 AI 基于真实源码而不是记忆来回答 API 行为。扩展的测试运行能力如代码旁的 Test Lens 悬浮按钮也基于同一套语言服务器MCP 服务器与其共享同一个已编译好的项目索引查询速度很快。常见问题排查看不到 MCP 服务器确认elixirLS.mcpEnabled已设为true且使用的是支持 MCP API 的较新 VS Code 版本部分编辑器分支未实现该 API扩展会自动跳过注册MCP 服务器连不上大概率是自动端口被占用按上文手动设置elixirLS.mcpPort即可消除歧义多根工作区出现重复服务器扩展已按最外层工作区自动去重嵌套文件夹共享同一个语言服务器不会产生重复的桥接进程查看日志打开View Output在下拉框选择 ElixirLS 查看输出日志定位问题。相关源码与文档路径想深入了解实现的开发者可以查看这些文件src/mcp.tsMCP 服务器注册与端口计算的核心逻辑src/definition-tool.tsAI 符号定义查询工具的实现LLM_DEFINITION_TOOL.md语言模型工具的完整设计说明package.jsonelixirLS.mcpEnabled、elixirLS.mcpPort设置及 MCP provider 注册声明walkthroughs/扩展内置的分步引导文档安装 Elixir、打开项目、运行测试等。按照本文配置后你的 Claude / Copilot 就拥有了对 Elixir 项目源码的实时视野——问什么查什么答案永远来自你工作区里的真实代码。【免费下载链接】vscode-elixir-lsElixir language support and debugger for VS Code, powered by ElixirLS.项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表