返回市场
elm包管理mcp服务器

elm包管理mcp服务器

作者:caseyWebb2 星标更新:2025-10-27

项目介绍

Elm Package MCP Server

[!CAUTION] 这是用Vibe编码的。我对Rust了解不多。我已经阅读了代码,但请自行承担风险使用。

CI Nightly Build GitHub release License

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

功能

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

安装

使用npx(推荐)

最简单的方式是通过npx(仅限macOS)。

快速设置与Claude Code

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 (Intel): elm-package-mcp-server-macos-x86_64.tar.gz
    • macOS aarch64 (Apple Silicon): elm-package-mcp-server-macos-aarch64.tar.gz
  2. 解压二进制文件:

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

    # 全局安装
    sudo mv elm-package-mcp-server /usr/local/bin/
    
    # 用户安装
    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
}

search_packages

搜索Elm包注册表中匹配查询的包。对包名和描述进行模糊匹配。非常适合发现新包。

参数:

  • query(必需,字符串):搜索查询——可以是包名、关键词或您正在寻找的内容的描述(例如,“json decode”,“http”,“日期格式化”)
  • already_included(可选,布尔值):是否包含已在elm.json中的包(默认:true)。设置为false仅显示尚未安装的包。

示例响应:

{
  "query": "json",
  "results": [
    {
      "name": "elm/json",
      "summary": "编码和解码JSON值",
      "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(可选,字符串):过滤到特定模块

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

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": "将一个函数应用于列表中的每个元素..."
}

工作流程示例

  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开发工作流:

analyze-dependencies

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

无需参数

explore-package

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

参数:

  • package(必需):包名,格式为'author/name'(例如,'elm/core')

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

find-function

搜索跨您的Elm依赖项的函数,匹配特定功能或用例。

参数:

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

示例: /find-function capability="解析JSON"

debug-import

解释从特定Elm模块导入的功能和类型。当您遇到导入错误或有关导入可用函数的问题时,非常有用。

参数:

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

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

discover-packages

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

参数:

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

示例: /discover-packages need="处理日期"

package-comparison

比较两个Elm包,帮助选择最适合特定用例的包。

参数:

  • package1(必需):第一个包,格式为'author/name'
  • package2(必需):第二个包,格式为'author/name'

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

CLI选项

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

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

开发

此服务器使用以下技术构建:

为npm构建

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

# 准备当前架构的二进制文件
just npm-prepare-binaries

# 创建npm包tarball
just npm-pack

# 本地测试
just npm-test-local

# 发布到npm(需要npm登录)
just npm-publish

许可证

Apache-2.0