Elm包文档查询服务

一个提供Elm语言包文档查询功能的MCP服务器,支持依赖列表获取、README读取、导出函数查询等功能。

  • by caseyWebb
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 caseyWebb/elm-package-mcp-server

使用说明

Elm软件包MCP服务器

[!警告] 已弃用: 此MCP服务器已被替换为 基于Claude代码技能的插件 其提供相同的功能,而不需要单独的服务器进程。

迁移,调用 migrate-to-skills 在Claude Code中提示,或按照以下步骤操作:

  1. /plugin marketplace add caseyWebb/elm-claude-plugin
  2. /plugin install elm@caseyWebb
  3. claude mcp remove elm-packages

新插件需要 curl 和 jq 待安装。

[!小心] 这是氛围编码。我几乎不了解Rust。我已经阅读了代码,但使用风险自负。

一个MCP(模型上下文协议)服务器,提供查找Elm包文档的工具。该服务器允许AI助手读取elm.json文件,并从官方的elm包存储库中获取包文档。

特性

  • 列出Elm软件包:列出Elm.json中所有直接和间接的Elm语言依赖项
  • 获取Elm包README:通过指定作者、名称和版本,获取任何Elm包的README内容
  • 获取Elm包导出:获取Elm包模块的所有导出及其类型签名,但不带注释(更有效地探索可用函数)
  • 获取Elm包导出文档:获取Elm包模块中特定导出(函数、类型或别名)的文档注释

安装

使用npx(推荐)

使用此MCP服务器的最简单方法是通过npx(仅限macOS)。

使用Claude代码快速设置

claude mcp add elm-packages npx @caseywebb/elm-package-mcp-server

手动配置(.mcp.json)

{
  "mcpServers": {
    "elm-package": {
      "command": "npx",
      "args": ["@caseywebb/elm-package-mcp-server"]
    }
  }
}

来自GitHub发布

最简单的安装方法是从 最新版本.

  1. 下载适合您平台的二进制文件:

    • Linux x86_64: elm-package-mcp-server-linux-x86_64.tar.gz
    • macOS x86_64(英特尔): elm-package-mcp-server-macos-x86_64.tar.gz
    • macOS aarch64(苹果硅): elm-package-mcp-server-macos-aarch64.tar.gz
  2. 提取二进制文件:

    tar xzf elm-package-mcp-server-*.tar.gz
    
  3. 将二进制文件移动到PATH中的某个位置:

    # System-wide installation
    sudo mv elm-package-mcp-server /usr/local/bin/
    
    # User installation
    mv elm-package-mcp-server ~/.local/bin/
    
  4. 确保二进制文件可执行:

    chmod +x /path/to/elm-package-mcp-server
    

从源头构建

  1. 确保你已经安装了Rust(https://rustup.rs/)
  2. 克隆此存储库
  3. 构建二进制文件:
cargo build --release

二进制文件将在 target/release/elm-package-mcp-server

用法

服务器必须从包含elm.json文件的目录或elm项目的任何子目录运行。它将通过搜索目录树自动找到elm.json文件。

可用工具

服务器提供了五个使用Elm包的工具。所有工具都以前缀 elm 在使用Elm语言项目时,帮助提高可发现性。

list_installed_packages

列出Elm.json文件中的所有Elm包。此工具可发现项目中可用的Elm语言依赖关系。

参数:

  • include_indirect (可选,布尔值):包括间接依赖关系(默认值:false)

示例响应:

{
  "packages": [
    {
      "author": "elm",
      "name": "core",
      "version": "1.0.5",
      "type": "direct"
    }
  ],
  "total": 1,
  "direct_count": 1,
  "indirect_count": 0
}

搜索包

在Elm包注册表中搜索与查询匹配的包。对包名称和描述使用模糊匹配。非常适合发现新包裹。

参数:

  • query (必填,字符串):搜索查询-可以是包名、关键字或您要查找的内容的描述(例如,“json解码”、“http”、“日期格式”)
  • already_included (可选,布尔值):包含elm.json中已有的包(默认值:true)。设置为false仅显示尚未安装的软件包。

示例响应:

{
  "query": "json",
  "results": [
    {
      "name": "elm/json",
      "summary": "Encode and decode JSON values",
      "license": "BSD-3-Clause",
      "version": "1.1.3"
    }
  ],
  "count": 1,
  "excluded_installed": false
}

get_elm_package_readme

从package.Elm-lang.org获取特定Elm语言包的README文档。

参数:

  • author (必填,字符串):包作者(例如“elm”)
  • name (必填,字符串):包名称(例如“core”)
  • version (必填,字符串):软件包版本(例如“1.0.5”)

get_elm_package_exports

获取Elm包模块的所有导出及其类型签名,但不带注释。当您只需要探索可用函数时,这比get_elm_package_docs更有效。

参数:

  • author (必填,字符串):包作者(例如“elm”)
  • name (必填,字符串):包名称(例如“core”)
  • version (必填,字符串):软件包版本(例如“1.0.5”)
  • module (可选,字符串):筛选到特定模块

示例响应包括按类型(联合、别名、值、binops)组织的所有导出及其类型签名,但没有文档注释。

get_elm_package_export_docs

获取Elm包模块中特定导出(函数、类型或别名)的文档注释。

参数:

  • author (必填,字符串):包作者(例如“elm”)
  • name (必填,字符串):包名称(例如“core”)
  • version (必填,字符串):软件包版本(例如“1.0.5”)
  • module (必填,字符串):模块名称(例如“List”)
  • export_name (必填,字符串):要获取注释的导出名称(例如,“map”、“Maybe”)

示例响应:

{
  "author": "elm",
  "name": "core",
  "version": "1.0.5",
  "module": "List",
  "export_name": "map",
  "export_type": "value",
  "type_annotation": "map : (a -> b) -> List a -> List b",
  "comment": "Apply a function to every element of a list..."
}

工作流示例

  1. 首先,使用 list_installed_packages 发现项目中的可用包,或使用 search_packages 要查找新包,请执行以下操作:
    • list_installed_packages 返回所有包及其作者、名称和版本
    • search_packages 在Elm注册表中查找与您的查询匹配的包
  2. 然后,使用返回的信息获取文档:
    • 呼叫 get_elm_package_readme 包含作者、姓名和版本以供概述
    • 呼叫 get_elm_package_exports 查看所有可用的函数和类型,不添加注释
    • 呼叫 get_elm_package_export_docs 获取特定项目的详细文档

可用资源

elm://elm.json

项目的elm.json文件,可作为资源访问。

可用提示

服务器提供了六个提示,以帮助使用常见的Elm开发工作流:

分析依赖关系

分析Elm项目的依赖关系,解释每个包的作用并提出优化建议。当您询问elm.json或项目结构时,主动使用。

无需参数

探索套餐

通过检查特定Elm包的导出、模块和关键功能来探索其功能。

参数:

  • package (必填):包名格式为“作者/名称”(例如,“elm/core”)

例子: /explore-package package=elm/json

查找函数

在Elm依赖项中搜索与特定功能或用例匹配的函数。

参数:

  • capability (必填):您想要完成的任务(例如,“解析JSON”、“在列表上映射”、“处理HTTP错误”)

例子: /find-function capability="parse JSON"

调试导入

解释特定Elm模块导入中可用的功能和类型。当您有导入错误或对导入中的可用函数有疑问时,这很有用。

参数:

  • module_path (必填):完整模块路径(例如,“List”、“Html.Attributes”、“Json.Decode”)

例子: /debug-import module_path=Json.Decode

发现软件包

根据特定需求或用例发现新的Elm软件包。在描述可能需要新包的问题时主动使用。

参数:

  • need (必填):您需要完成的任务(例如,“解析CSV”、“处理日期”、“发出HTTP请求”)

例子: /discover-packages need="working with dates"

包装比较

比较两个Elm软件包,以帮助为特定用例选择最佳软件包。

参数:

  • package1 (必填):格式为“作者/姓名”的第一个包
  • package2 (必填):格式为“作者/姓名”的第二个包

例子: /package-comparison package1=elm/json package2=NoRedInk/elm-json-decode-pipeline

CLI选项

默认情况下,服务器以MCP服务器模式运行。使用以下选项检查服务器的功能:

  • --tools:显示可用的Elm包工具
  • --resources:显示可用资源
  • --prompts:显示可用提示
  • --json:以JSON格式输出信息

发展

此服务器是使用以下方式构建的:

为npm构建

要构建和发布npm包(仅限macOS):

# Prepare binaries for current architecture
just npm-prepare-binaries

# Create npm package tarball
just npm-pack

# Test locally
just npm-test-local

# Publish to npm (requires npm login)
just npm-publish

许可证

阿帕奇-2.0