Hex.pm MCP について
hexpm-mcpは、ElixirとErlangのパッケージを扱う開発者向けのMCPサーバーです。レジストリとHexDocsの検索に加え、依存関係の監査、脆弱性確認、パッケージ比較、厳選されたパッケージの探索を提供します。
主な機能
- 01Hexパッケージの検索と詳細確認
- 02HexDocsの閲覧と検索
- 03パッケージ比較と健全性評価
- 04依存関係の監査と更新確認
- 05既知の脆弱性の確認
- 06Elixir Toolbox経由のパッケージ探索
活用シーン
- 01採用前のパッケージ調査
- 02プロジェクト依存関係のリスク確認
- 03パッケージのバージョンや代替品の比較
- 04カテゴリ別のElixirパッケージ検索
MCP 対応
stdioとStreamable HTTPを通じて、MCPクライアントにツール、プロンプト、パッケージリソースを公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://hexpm-mcp.fly.dev/mcpclaude mcp add --transport http joshrotenberg-hexpm https://hexpm-mcp.fly.dev/mcp{"mcpServers":{"joshrotenberg-hexpm":{"type":"http","url":"https://hexpm-mcp.fly.dev/mcp"}}}Cursor で開く{"servers":{"joshrotenberg-hexpm":{"type":"http","url":"https://hexpm-mcp.fly.dev/mcp"}}}VS Code で開く{"mcpServers":{"joshrotenberg-hexpm":{"type":"http","url":"https://hexpm-mcp.fly.dev/mcp"}}}{"mcpServers":{"joshrotenberg-hexpm":{"serverUrl":"https://hexpm-mcp.fly.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
24| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | hex.pm 上のパッケージ名 |
詳細
hexpm-mcp
hex.pm と hexdocs.pm を照会する MCP サーバーです。hex.pm と hexdocs.pm は、Elixir/Erlang のパッケージレジストリおよびドキュメントホスティングサービスです。
snodo で構築されています。stdio と Streamable HTTP で MCP
2026-07-28、2025-11-25、2025-06-18 に対応しています。以前のリビジョンでサポートされない機能については、プロトコル互換性を参照してください。
24 個のツール、6 個のプロンプト、パッケージリソースを提供します。ツールの引数は JSON Schema に照らして検証され、各リストはキャッシュヒント付きで 1 ページに収まり、プロンプトとリソースの引数は完全なパッケージ名を必要とします。package_review プロンプトでは、引数が省略され、クライアントがエリシテーションに対応している場合、focus(品質、セキュリティ、アップグレード)を尋ねます。それ以外の場合、レビューでは 3 つすべてを扱います。
クイックスタート
公開インスタンスが https://hexpm-mcp.fly.dev/mcp で稼働しています。MCP クライアントの設定(Claude Desktop、Claude Code、または任意の MCP クライアント)に追加してください。
{
"mcpServers": {
"hexpm": {
"type": "http",
"url": "https://hexpm-mcp.fly.dev/mcp"
}
}
}
プロトコル互換性
| MCP リビジョン | stdio | Streamable HTTP |
|---|---|---|
2026-07-28 | はい | はい |
2025-11-25 | はい | はい |
2025-06-18 | はい | はい |
2025-03-26、2024-11-05 | いいえ | いいえ |
この表にないリビジョンを提示するクライアントには、2025-11-25 が提示されます。
2025-11-25 と 2025-06-18 では:
- サーバーはクライアントにリクエストを送信しないため、
focusを指定せずにpackage_reviewを実行すると、質問する代わりに 3 つすべての観点からレビューを返します。 - HTTP はステートレスです。
initializeではMcp-Session-Idが発行されず、それ以降のすべてのリクエストにMCP-Protocol-Versionヘッダーが必要です。また、/mcpへのGETとDELETEは 405 を返します。
0.3.7 からのアップグレード。 0.3.7 以前は anubis_mcp をベースに構築されていました。
2025-03-26と2024-11-05にも対応し、GETイベントストリームで HTTP セッションを維持していました。これらに依存するクライアントは、接続できなくなります。
2026-09-26 に stdio で確認済み:Codex 0.157.1 は 2025-06-18 をネゴシエートし、Claude Code 2.1.283 は 2026-07-28 を使用します。
インストール
使い方に応じて、3 つの方法があります。
スタンドアロンバイナリ(推奨)
macOS、Linux、Windows 用の自己完結型バイナリです。Erlang ランタイムがバンドルされているため、Elixir ツールチェーンは不要です。
curl -fsSL https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.sh | sh
インストーラーは最新リリースを特定し、お使いの OS とアーキテクチャに適したアセットを選び、sha256 を検証して、~/.local/bin にインストールします。そのディレクトリが PATH に含まれていない場合は通知します。
別のディレクトリを指定したり、バージョンを固定したりするには、sh にフラグを渡します。
curl -fsSL https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.sh | sh -s -- --install-dir /usr/local/bin
curl -fsSL https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.sh | sh -s -- --version v0.3.6
Windows では、同等の操作に PowerShell を使います。
iex (irm https://raw.githubusercontent.com/joshrotenberg/hexpm-mcp/main/scripts/install.ps1)
各リリースには、アーカイブと、手動でインストールする場合に使える統合版の checksums-sha256.txt も添付されています。
動作を確認します。
hexpm_mcp --version
MCP クライアントの設定については使い方を参照してください。また、ブラウザーからダウンロードしたファイルが Gatekeeper にブロックされる場合は、macOS:「Apple が hexpm_mcp を検証できませんでした」を参照してください。
Elixir ライブラリとして
MCP サーバーを実行せず、iex や独自のコードから公開 API を使う場合:
def deps do
[{:hexpm_mcp, "~> 0.3"}]
end
ソースから
git clone https://github.com/joshrotenberg/hexpm-mcp.git
cd hexpm-mcp
mix deps.get
機能
- hex.pm パッケージの検索、調査、比較、監査、発見に使える24個のツール
- 構造化されたパッケージデータや発見データにアクセスする5個のリソース
- ガイド付き分析プロンプト5個
- HexDocs の閲覧(モジュール一覧、ドキュメント検索、モジュールの全ドキュメント)
- Elixir Toolbox による厳選パッケージの発見(グループ、トレンド、情報を拡充した検索)
- OSV.dev による脆弱性チェック
- Mix.exs の依存関係監査とアップグレードチェック
- TTL を設定可能な ETS ベースのレスポンスキャッシュ
- 2種類のトランスポート:stdio(Claude Code/Desktop)と StreamableHTTP(リモート)
- iex から直接利用できる公開 Elixir API
ツール
パッケージ情報
| ツール | 説明 |
|---|---|
search | 名前やキーワードでパッケージを検索し、並べ替えやページネーションを行います |
info | パッケージのメタデータ、説明、リンク、ダウンロード統計 |
versions | 廃止状況を含むバージョン履歴 |
release | リリースの詳細、公開者、依存関係、ビルドツール |
features | オプションの依存関係と追加メタデータ |
dependencies | バージョンの依存関係一覧 |
downloads | ダウンロード統計(全期間、直近、週別、日別) |
owners | パッケージのメンテナー |
readme | README の内容を Markdown 形式で取得 |
ドキュメントの閲覧
| ツール | 説明 |
|---|---|
docs | hexdocs.pm のモジュール一覧(目次) |
doc_item | 特定のモジュールの全ドキュメント |
search_docs | パッケージのドキュメント内を検索 |
分析
| ツール | 説明 |
|---|---|
compare | 2~5個のパッケージを並べて比較します |
health | メンテナンス状況、人気度、品質、リスクを評価します |
audit | 依存関係のリスクを監査します(廃止バージョン、古さ、バス係数、CVE) |
alternatives | 類似パッケージを見つけて比較します |
dep_tree | 再帰的な依存関係ツリー(BFS、最大深度5) |
Mix.exs の分析
| ツール | 説明 |
|---|---|
audit_mix_deps | deps リストの古さ、廃止状況、CVE、バス係数を監査します |
upgrade_check | 新しいバージョンがある依存関係を確認し、破壊的変更にフラグを付けます |
発見(Elixir Toolbox)
Elixir Toolbox API を利用した厳選コンテンツの発見機能です。プロジェクトの検索結果には、GitHub/GitLab の統計、人気度スコア、ヘルスシグナルが含まれます。これらの情報は、hex.pm の標準 API では取得できません。
| ツール | 説明 |
|---|---|
toolbox_groups | 厳選されたグループとカテゴリーの分類を閲覧します |
toolbox_group | 1つのグループに含まれるカテゴリーを一覧表示します |
toolbox_category | カテゴリー内の厳選プロジェクト(名前またはダウンロード数で並べ替え可能) |
toolbox_trending | トレンドの Elixir パッケージ |
toolbox_search | 人気度とヘルスシグナルを含めてパッケージを検索します |
出力例
ヘルスチェック
# 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 issues
使用方法
スタンドアロンバイナリ(stdio)
インストール後:
{
"mcpServers": {
"hexpm": {
"command": "hexpm_mcp",
"args": ["--transport", "stdio"]
}
}
}
バイナリはデフォルトで stdio を使用するため、args は省略できます。すべてのオプションを確認するには、hexpm_mcp --help を実行してください。
代わりに HTTP で提供するには、--transport http を渡します。MCP は /mcp で提供されます:
hexpm_mcp --transport http --port 1234
# MCP endpoint: http://localhost:1234/mcp
macOS:「Apple は hexpm_mcp を検証できませんでした」
バイナリはコード署名も公証もされていません。macOS はブラウザーでダウンロードしたファイルに隔離属性を付与し、その属性が付いた未署名の実行ファイルの実行を拒否します。
「hexpm_mcp」は開かれていません。 Apple は、「hexpm_mcp」に Mac に損害を与えたり、プライバシーを侵害したりするマルウェアが含まれていないことを確認できませんでした。
「ゴミ箱に入れる」ではなく**「完了」**を選択してから、属性を削除します。
xattr -d com.apple.quarantine /path/to/hexpm_mcp
システム設定から操作することもできます。「プライバシーとセキュリティ」を開き、ブロックされたバイナリの通知の横にある**「このまま開く」**を選択してください。
上記のインストーラーには影響しません。curl は隔離属性を設定しないためです。属性が付与されるのはブラウザーでのダウンロードのみなので、curl または wget でインストールすれば、この問題を回避できます。ブラウザーで tarball をダウンロードした場合は、ダブルクリックせず、ターミナルから tar -xzf で展開してください。アーカイブユーティリティを使うと、展開したファイルにも属性が引き継がれるためです。
ソースから実行する(stdio)
開発などのためにチェックアウトから実行するには、次のようにします。
{
"mcpServers": {
"hexpm": {
"command": "mix",
"args": ["run", "--no-halt", "--", "--transport", "stdio"],
"cwd": "/path/to/hexpm-mcp"
}
}
}
iex
MCP サーバーを介さず、Hex の依存関係(Elixir ライブラリとして)を使うか、チェックアウトから直接、iex でパブリック API を利用できます。
$ 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: [...]}}
API リファレンス
各関数は {:ok, structured_map} または {:error, reason} を返します。
# Search and lookup
HexpmMcp.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 analysis
HexpmMcp.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 analysis
HexpmMcp.audit_mix_deps(deps_string)
HexpmMcp.upgrade_check(deps_string)
# HexDocs browsing
HexpmMcp.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()
HexpmMcp-- iex から利用できる、構造化マップを返す25個のパブリック関数HexpmMcp.Formatter-- MCP ツール出力の Markdown 形式への整形HexpmMcp.Client-- レート制限機能を備えた Req ベースの hex.pm API クライアントHexpmMcp.HexDocs-- hexdocs.pm の閲覧(サイドバーデータの解析、HTML から Markdown への変換)HexpmMcp.OSV-- OSV.dev 脆弱性データベースのクライアントHexpmMcp.Toolbox-- 厳選されたパッケージを検索する Elixir Toolbox クライアントHexpmMcp.Cache-- TTL と定期的な削除処理を備えた ETS ベースのレスポンスキャッシュHexpmMcp.CLI-- Cheer のコマンドツリー。argv をサーバーの設定に変換しますHexpmMcp.MCP.StdioLifecycle-- stdio のサービスタスクを管理し、EOF 時にリクエストを処理しきってから、正常な切断では終了コード 0 で終了し、トランスポート障害は終了コード 1 で報告します- MCP ツール、リソース、プロンプト --
Snodo.Serverに登録された、JSON 形式の薄いプロトコルコンポーネント
開発
snodo と snodo_jsv は Hex から取得します。ローカルの snodo チェックアウトに対してビルドするには、SNODO_PATH を設定します。たとえば、SNODO_PATH=../snodo mix deps.get のようにします。
test/fixtures/mcp_tool_catalog.json にはツールカタログが格納されており、テストではツール定義がカタログと一致するかを確認します。受け入れテストではドメインデータを用意し、直接ディスパッチ、stdio、HTTP を介して、リソース、ツールの失敗、引数の検証をテストします。
公式 TypeScript クライアントを使った snodo のチェックも、ドメインレスポンスを用意したうえで、このサーバーに対して stdio と HTTP 経由で実行されます。../snodo に snodo のチェックアウトが必要です。snodo/interop/official_client で npm ci --ignore-scripts を実行して、固定バージョンの Node 依存関係を一度インストールしたら、次のようにします。
MIX_ENV=test mix compile --warnings-as-errors
cd ../snodo
HEXPM_MCP_BUILD_PATH=../hexpm-mcp/_build/test node interop/official_client/check_hexpm.mjs
# Install dependencies
mix deps.get
# Run tests
mix test
# Full CI check
mix format --check-formatted
mix compile --warnings-as-errors
mix credo --strict
mix dialyzer
# Run locally (HTTP on port 8765)
mix run --no-halt
# Run locally (stdio for MCP clients)
mix run --no-halt -- --transport stdio
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。