alternatives
Find alternative packages
name必填
io.github.joshrotenberg由 GitHub 帳號 joshrotenberg 發布v0.3.1更新於 Oct 24, 2026
MCP server for hex.pm and hexdocs.pm: search, inspect, compare, and audit Elixir packages
面向 hex.pm 與 hexdocs.pm 的 MCP 伺服器,讓助理搜尋、檢視、比較、稽核 Elixir/Erlang 套件並查閱其文件。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.joshrotenberg%2Fhexpm-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"hex-pm": {
"type": "http",
"url": "https://hexpm-mcp.fly.dev/mcp"
}
}
}[CI] [Hex.pm] [Docs] [Elixir] [OTP] [License: MIT]
MCP server for querying hex.pm and hexdocs.pm -- the Elixir/Erlang package registry and documentation hosting.
Built with snodo. It speaks MCP
2026-07-28, 2025-11-25, and 2025-06-18 over stdio and Streamable HTTP.
See Protocol compatibility for what the older
revisions lack.
It provides 24 tools, six prompts, and package resources. Tool arguments are
validated against their JSON Schemas, each list fits on one page with cache
hints, and prompt and resource arguments complete package names. The
package_review prompt asks for its focus (quality, security, or upgrade)
when the argument is omitted and the client supports elicitation. Otherwise the
review covers all three.
The server sends instructions that name the tools to start with for each task.
hexpm_mcp init installs it as a Claude Code and Codex plugin, together with a
skill for evaluating, upgrading and auditing dependencies.
A public instance is running at https://hexpm-mcp.fly.dev/mcp. Add it to your MCP client config (Claude Desktop, Claude Code, or any MCP client):
A client that proposes a revision not in this table is offered 2025-11-25.
On 2025-11-25 and 2025-06-18:
package_review without a
focus returns a review across all three focuses instead of asking.initialize issues no Mcp-Session-Id, every later
request needs an MCP-Protocol-Version header, and GET and DELETE on
/mcp return 405.Upgrading from 0.3.7. 0.3.7 and earlier were built on anubis_mcp. They also served
2025-03-26and2024-11-05, and kept HTTP sessions with aGETevent stream. Clients that depend on those can no longer connect.
Checked over stdio on 2026-09-26: Codex 0.157.1 negotiates 2025-06-18, and
Claude Code 2.1.283 uses 2026-07-28.
Three ways to get it, depending on how you want to use it.
A self-contained binary for macOS, Linux, and Windows. It bundles the Erlang runtime, so no Elixir toolchain is required.
The installer resolves the latest release, picks the asset for your OS and
architecture, verifies its sha256, and installs to ~/.local/bin. It will tell
you if that directory is not on your PATH.
To choose a different directory or pin a version, pass the flags through sh:
Windows uses the PowerShell equivalent:
Every release also
attaches the archives and a combined checksums-sha256.txt if you would rather
install by hand.
Verify it works:
See Usage for the MCP client config, and
macOS: "Apple could not verify hexpm_mcp"
if Gatekeeper blocks a browser-downloaded copy. For Claude Code and Codex,
hexpm_mcp init sets it up in one
step.
For the public API from iex or your own code, without running an MCP server:
hexpm_mcp initCurated discovery via the Elixir Toolbox API. Project results carry GitHub/GitLab stats, a popularity score, and health signals not exposed by the raw hex.pm API.
hexpm_mcp init)From 0.3.9, the binary installs itself as a plugin for Claude Code and Codex.
The plugin bundles the MCP server with a skill that tells the agent when to use
these tools: before adding a dependency, when upgrading, when auditing a
project, and when writing code against a package's API. In Claude Code it also
adds a hook that suggests audit_mix_deps and upgrade_check after an edit to
mix.exs or mix.lock.
--dry-run shows the files and host commands without changing anything. init
writes a local plugin marketplace, including a copy of the binary, to
~/.local/share/hexpm_mcp (or $XDG_DATA_HOME/hexpm_mcp). It then registers
the marketplace with claude plugin and codex plugin. It configures whichever
of the two is installed, and --host claude or --host codex picks one. It
does not edit either host's configuration files directly. Reload plugins or
start a new session afterwards.
Run hexpm_mcp init again after upgrading the binary to update the plugin.
If you already added hexpm-mcp as an MCP server by hand, init lists that entry
when it finishes. The agent would otherwise see every tool twice, so remove one
of them, for example with claude mcp remove hexpm.
To remove the plugin:
init is not supported on Windows yet.
Once installed:
The binary defaults to stdio, so args can be omitted. Run hexpm_mcp --help
for the full option list.
To serve over HTTP instead, pass --transport http. MCP is served at /mcp:
The binaries are not code-signed or notarized. macOS attaches a quarantine attribute to anything downloaded by a browser, and refuses to run an unsigned executable carrying it:
"hexpm_mcp" Not Opened. Apple could not verify "hexpm_mcp" is free of malware that may harm your Mac or compromise your privacy.
Choose Done, not Move to Trash, then clear the attribute:
The System Settings route works too: Privacy & Security, then Open Anyway next to the blocked-binary notice.
The installer above is unaffected, because curl does not set the quarantine
attribute. Only browser downloads do, so installing with curl or wget avoids
this entirely. If you do download the tarball in a browser, extract it with
tar -xzf from a terminal rather than double-clicking, since Archive Utility
propagates the attribute to the extracted files.
To run from a checkout, e.g. for development:
The public API is available directly from iex without the MCP server, either via the Hex dependency or straight from a checkout:
Every function returns {:ok, structured_map} or {:error, reason}.
HexpmMcp -- 25 public functions returning structured maps, usable from iexHexpmMcp.Formatter -- markdown formatting for MCP tool outputHexpmMcp.Client -- Req-based hex.pm API client with rate limitingHexpmMcp.HexDocs -- hexdocs.pm browsing (sidebar data parsing, HTML-to-markdown)HexpmMcp.OSV -- OSV.dev vulnerability database clientHexpmMcp.Toolbox -- Elixir Toolbox client for curated package discoveryHexpmMcp.Cache -- ETS-based response cache with TTL and periodic sweepingHexpmMcp.CLI -- Cheer command tree; turns argv into the server's configuration,
or into the init subcommandHexpmMcp.Init -- hexpm_mcp init: writes the plugin marketplace and registers
it through the claude and codex CLIsHexpmMcp.MCP.StdioLifecycle -- owns the stdio serving Task, drains requests
on EOF, exits 0 on orderly disconnect, and reports transport failures with exit 1Snodo.Serversnodo and snodo_jsv come from Hex. To build against a local snodo checkout,
set SNODO_PATH, for example SNODO_PATH=../snodo mix deps.get.
test/fixtures/mcp_tool_catalog.json holds the tool catalog, and the tests check
the tool definitions against it. The acceptance tests seed domain data and
exercise resources, tool failures, and argument validation through direct
dispatch, stdio, and HTTP.
snodo's check with the official TypeScript client also runs against this
server, over stdio and HTTP, with seeded domain responses. It needs a snodo
checkout at ../snodo. Install its pinned Node dependencies once with
npm ci --ignore-scripts in snodo/interop/official_client, then:
Under mix there is no standalone binary to install, so init from a checkout
needs --binary pointing at a built or released hexpm_mcp:
The plugin sources are in priv/plugin/hexpm. test/hexpm_mcp/plugin_test.exs
checks that every tool the skill names is served.
MIT
來源:README.md,提交 48fe80e
Find alternative packages
name必填Audit package dependencies for risks
name必填versionAudit mix.exs dependencies for risks
deps必填Compare 2-5 packages side by side
packages必填Build a package dependency tree
name必填versionmax_depthGet dependencies for a package version
name必填versionGet documentation for a module or function
name必填module必填versionBrowse a package documentation module listing
name必填versionGet package download statistics
name必填Get optional features for a package release
name必填versionRun a comprehensive package health check
name必填Get detailed package information
name必填Get package owners and maintainers
name必填Get package README content
name必填versionGet detailed package release information
name必填version必填Search hex.pm packages
pagesortquery必填Search within package documentation
name必填query必填versionList projects in a Toolbox category
sortgroup必填category必填List categories in a Toolbox group
group必填Browse the Elixir Toolbox taxonomy
無需輸入參數。
Search packages through Elixir Toolbox
query必填List trending Elixir packages
limitCheck mix.exs dependencies for upgrades
deps必填List all package versions
name必填已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
{ "mcpServers": { "hexpm": { "type": "http", "url": "https://hexpm-mcp.fly.dev/mcp" } }}curl -fsSL https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.sh | shcurl -fsSL https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.sh | sh -s -- --install-dir /usr/local/bincurl -fsSL https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.sh | sh -s -- --version v0.3.6iex (irm https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.ps1)hexpm_mcp --versiondef deps do [{:hexpm_mcp, "~> 0.3"}]endgit clone https://github.com/joshrotenberg/hexpm-mcp.gitcd hexpm-mcpmix deps.get# Health Check: req
## Maintenance- Age: 4 years ago- Total versions: 52- Status: **Active**- Days since last release: 57
## Popularity- All-time downloads: 11.5M- Recent (90 days): 1.6M- Weekly: 141.5K
## Quality- Documentation: available- Licenses: Apache-2.0- Dependencies: 3 required, 4 optional- Elixir requirement: ~> 1.14
## Risk- Maintainers: 1 (single maintainer!)- Retired versions: 0# Package Comparison
| Metric | req | httpoison | finch || --------------- | ---------- | ---------- | ---------- || Downloads (all) | 11.5M | 129.2M | 54.1M || Downloads (90d) | 1.6M | 1.6M | 2.4M || Latest version | 0.5.17 | 2.3.0 | 0.21.0 || Last updated | 2026-02-07 | 2025-11-14 | 2026-01-22 || License | Apache-2.0 | MIT | MIT || Dependencies | 7 | 1 | 5 |# Dependency Audit: phoenix v1.8.5
Checked 10 dependencies. 8 warning(s) across 7 package(s).
- **bandit**: 1 retired version(s)- **jason**: single maintainer- **plug**: 2 retired version(s); 3 known vulnerability(ies)- **telemetry**: no issueshexpm_mcp init --dry-runhexpm_mcp initclaude plugin uninstall hexpm@hexpm-local --scope userclaude plugin marketplace remove hexpm-localcodex plugin remove hexpm@hexpm-localcodex plugin marketplace remove hexpm-local{ "mcpServers": { "hexpm": { "command": "hexpm_mcp", "args": ["--transport", "stdio"] } }}hexpm_mcp --transport http --port 1234# MCP endpoint: http://localhost:1234/mcpxattr -d com.apple.quarantine /path/to/hexpm_mcp{ "mcpServers": { "hexpm": { "command": "mix", "args": ["run", "--no-halt", "--", "--transport", "stdio"], "cwd": "/path/to/hexpm-mcp" } }}$ MIX_ENV=test iex -S mix
iex> HexpmMcp.get_info("phoenix"){:ok, %{ name: "phoenix", description: "Peace of mind from prototype to production", downloads: %{all: 148_100_000, recent: 2_600_000, week: 223_000, day: 13_000}, licenses: ["MIT"], latest_stable_version: "1.8.5", ...}}
iex> HexpmMcp.health_check("req"){:ok, %{ name: "req", maintenance: %{status: "Active", age: "4 years ago", days_since_release: 57}, popularity: %{all: 11_500_000, recent: 1_600_000, week: 141_000}, quality: %{has_docs: true, licenses: ["Apache-2.0"], required_deps: 3, optional_deps: 4}, risk: %{owner_count: 1, retired_count: 0}, ...}}
iex> HexpmMcp.compare_packages(["plug", "bandit"]){:ok, [ %{name: "plug", downloads_all: 156_000_000, dep_count: 3, ...}, %{name: "bandit", downloads_all: 9_900_000, dep_count: 5, ...}]}
iex> HexpmMcp.audit_mix_deps(~s({:phoenix, "~> 1.7"}, {:jason, "~> 1.0"})){:ok, %{total_checked: 2, total_warnings: 1, results: [...]}}# Search and lookupHexpmMcp.search(query, opts \\ [])HexpmMcp.get_info(name)HexpmMcp.get_downloads(name)HexpmMcp.get_owners(name)HexpmMcp.get_versions(name)
# Version-specific (pass nil for latest)HexpmMcp.get_release(name, version \\ nil)HexpmMcp.get_dependencies(name, version \\ nil)HexpmMcp.get_features(name, version \\ nil)
# Composite analysisHexpmMcp.compare_packages(names)HexpmMcp.health_check(name)HexpmMcp.audit_dependencies(name, version \\ nil)HexpmMcp.find_alternatives(name)HexpmMcp.dependency_tree(name, version \\ nil, opts \\ [])
# Mix.exs analysisHexpmMcp.audit_mix_deps(deps_string)HexpmMcp.upgrade_check(deps_string)
# HexDocs browsingHexpmMcp.get_readme(name, version \\ nil)HexpmMcp.get_docs(name, version \\ nil)HexpmMcp.get_doc_item(name, module, version \\ nil)HexpmMcp.search_docs(name, query, version \\ nil)
# Elixir Toolbox (curated discovery)HexpmMcp.toolbox_groups()HexpmMcp.toolbox_group(group)HexpmMcp.toolbox_category(group, category, opts \\ [])HexpmMcp.toolbox_trending(opts \\ [])HexpmMcp.toolbox_search(query)iex / Elixir code MCP clients | | HexpmMcp (public API) MCP Tools (thin wrappers) returns {:ok, map} | | calls HexpmMcp API Client / HexDocs / OSV / then Formatter -> markdown Toolbox (internal clients) then Snodo.Result.text()MIX_ENV=test mix compile --warnings-as-errorscd ../snodoHEXPM_MCP_BUILD_PATH=../hexpm-mcp/_build/test node interop/official_client/check_hexpm.mjs# Install dependenciesmix deps.get
# Run testsmix test
# Full CI checkmix format --check-formattedmix compile --warnings-as-errorsmix credo --strictmix dialyzer
# Run locally (HTTP on port 8765)mix run --no-halt
# Run locally (stdio for MCP clients)mix run --no-halt -- --transport stdiomix run -- init --dry-run --binary /path/to/hexpm_mcp