项目简介
ElixirLS是一个功能丰富的Elixir语言服务器和调试适配器。它集成了一个MCP(Model Context Protocol)服务器,旨在使大型语言模型(LLMs)能够通过标准化协议与Elixir代码库进行交互。这个MCP服务器提供了强大的代码智能、文档检索、依赖分析以及其他工具,帮助LLMs理解和操作Elixir代码。
主要功能点
- 查找定义: 能够定位并检索Elixir/Erlang模块、函数、类型和宏的源代码定义。
- 获取环境信息: 提供代码特定位置的全面环境信息,包括模块/函数上下文、别名、导入、作用域变量(含类型)、模块属性等。
- 检索文档: 批量获取Elixir模块、函数、类型、回调或属性的详细文档。
- 分析依赖: 深入分析模块的依赖关系,包括直接/反向依赖、传递依赖、编译时/运行时依赖等。
- 查找实现: 发现代码库中行为、协议和回调的具体实现。
- 获取类型信息: 提取Elixir模块的类型定义、规范、回调规范和Dialyzer推断的契约信息。
安装步骤
ElixirLS MCP 服务器作为 ElixirLS 的内置功能,随 ElixirLS 一同启动。要使用它,您需要首先安装 ElixirLS。
- 安装ElixirLS:
- VSCode 用户: 直接通过VSCode marketplace安装ElixirLS扩展。
- Emacs 用户:
- 下载最新版ElixirLS发行包并解压。
- 根据您的Emacs LSP客户端('lsp-mode' 或 'eglot')配置ElixirLS路径。
- 例如,对于 'eglot',将 '(add-to-list 'eglot-server-programs '(elixir-mode "path-to-elixir-ls/release/language_server.sh"))' 中的路径替换为实际解压路径。
- 其他IDE/编辑器: 请查阅您IDE/编辑器对应插件的安装指南。
- 确保ElixirLS MCP服务器已启用: 默认情况下,MCP 服务器可能处于禁用状态。您需要通过 ElixirLS 的配置将其启用。
- 在您的编辑器设置中,查找 'elixirLS.mcpEnabled' 选项并将其设置为 'true'。
- (可选)您可以设置 'elixirLS.mcpPort' 来指定MCP服务器监听的端口,例如 'elixirLS.mcpPort: 4328'。如果未设置,服务器会自动计算一个端口。
- 启动ElixirLS后,检查其输出日志,会看到类似 '[MCP] Server listening on port 4328' 的消息,其中 '4328' 是实际监听的端口号。
服务器配置(供MCP客户端使用)
MCP 客户端需要知道如何启动并连接到 ElixirLS MCP 服务器。通常,这通过一个 JSON 配置文件完成,其中定义了服务器的启动命令和参数。
以下是一个供MCP客户端使用的 'mcp.json' 配置文件示例。请根据您的实际ElixirLS安装路径和MCP服务器监听端口进行修改。
{ "mcpServers": { "elixir-ls-bridge": { "command": "elixir", "args": [ "/absolute/path/to/elixir-ls/scripts/tcp_to_stdio_bridge.exs", "4328" ] } } }
配置说明:
- 'elixir-ls-bridge': 这是MCP服务器实例的唯一名称,您可以自定义。
- 'command': 用于启动MCP桥接脚本的命令,通常是 'elixir'。
- 'args': 传递给 'command' 的参数列表,包含两部分:
- 第一个参数 '"/absolute/path/to/elixir-ls/scripts/tcp_to_stdio_bridge.exs"': 请替换为您的ElixirLS安装目录中 'tcp_to_stdio_bridge.exs' 脚本的绝对路径。 该脚本负责在LLM(通常通过STDIO通信)和ElixirLS MCP服务器(通过TCP通信)之间建立桥梁。
- 第二个参数 '"4328"': 请替换为ElixirLS日志中显示的MCP服务器实际监听端口号。
基本使用方法
一旦 ElixirLS MCP 服务器正确启动并通过 'tcp_to_stdio_bridge.exs' 桥接脚本与您的 MCP 客户端建立连接,您的 LLM 客户端即可通过发送 JSON-RPC 请求来调用上述的 MCP 工具。例如,LLM 客户端可以请求 'find_definition' 工具来获取特定 Elixir 符号的源代码定义,或者使用 'get_docs' 来检索模块文档,从而增强其对 Elixir 代码库的理解和交互能力。
信息
分类
开发者工具