Elm软件包MCP服务器
\[!警告\] 已弃用: 此MCP服务器已被替换为 基于Claude代码技能的插件 其提供相同的功能,而不需要单独的服务器进程。 迁移,调用migrate-to-skills在Claude Code中提示,或按照以下步骤操作: 1./plugin marketplace add caseyWebb/elm-claude-plugin1./plugin install elm@caseyWebb1.claude mcp remove elm-packages新插件需要curl和jq待安装。
\[!小心\] 这是氛围编码。我几乎不了解Rust。我已经阅读了代码,但使用风险自负。
  ](https://github.com/caseyWebb/elm-package-mcp-server/releases/latest) 
一个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发布
最简单的安装方法是从 最新版本.
- 下载适合您平台的二进制文件:
- 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
- 提取二进制文件:
tar xzf elm-package-mcp-server-*.tar.gz- 将二进制文件移动到PATH中的某个位置:
# System-wide installation
sudo mv elm-package-mcp-server /usr/local/bin/
# User installation
mv elm-package-mcp-server ~/.local/bin/- 确保二进制文件可执行:
chmod +x /path/to/elm-package-mcp-server从源头构建
- 确保你已经安装了Rust(https://rustup.rs/)
- 克隆此存储库
- 构建二进制文件:
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..."
}工作流示例
- 首先,使用
list_installed_packages发现项目中的可用包,或使用search_packages要查找新包,请执行以下操作:
- list_installed_packages 返回所有包及其作者、名称和版本 - search_packages 在Elm注册表中查找与您的查询匹配的包
- 然后,使用返回的信息获取文档:
- 呼叫 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
