mcpField
H
Hex.pm MCP

Hex.pm MCP

リモート
github.com開発ツール24 週間前に更新
リポジトリ公式サイト

Hex.pm MCP について

hexpm-mcpは、ElixirとErlangのパッケージを扱う開発者向けのMCPサーバーです。レジストリとHexDocsの検索に加え、依存関係の監査、脆弱性確認、パッケージ比較、厳選されたパッケージの探索を提供します。

主な機能

  1. 01Hexパッケージの検索と詳細確認
  2. 02HexDocsの閲覧と検索
  3. 03パッケージ比較と健全性評価
  4. 04依存関係の監査と更新確認
  5. 05既知の脆弱性の確認
  6. 06Elixir Toolbox経由のパッケージ探索

活用シーン

  1. 01採用前のパッケージ調査
  2. 02プロジェクト依存関係のリスク確認
  3. 03パッケージのバージョンや代替品の比較
  4. 04カテゴリ別のElixirパッケージ検索

MCP 対応

stdioとStreamable HTTPを通じて、MCPクライアントにツール、プロンプト、パッケージリソースを公開します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://hexpm-mcp.fly.dev/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

24
パラメーター型必須説明
namestringはいhex.pm 上のパッケージ名

詳細

hexpm-mcp

CI Hex.pm Docs Elixir OTP License: MIT

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 リビジョンstdioStreamable 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パッケージのメンテナー
readmeREADME の内容を Markdown 形式で取得
ドキュメントの閲覧
ツール説明
docshexdocs.pm のモジュール一覧(目次)
doc_item特定のモジュールの全ドキュメント
search_docsパッケージのドキュメント内を検索
分析
ツール説明
compare2~5個のパッケージを並べて比較します
healthメンテナンス状況、人気度、品質、リスクを評価します
audit依存関係のリスクを監査します(廃止バージョン、古さ、バス係数、CVE)
alternatives類似パッケージを見つけて比較します
dep_tree再帰的な依存関係ツリー(BFS、最大深度5)
Mix.exs の分析
ツール説明
audit_mix_depsdeps リストの古さ、廃止状況、CVE、バス係数を監査します
upgrade_check新しいバージョンがある依存関係を確認し、破壊的変更にフラグを付けます
発見(Elixir Toolbox)

Elixir Toolbox API を利用した厳選コンテンツの発見機能です。プロジェクトの検索結果には、GitHub/GitLab の統計、人気度スコア、ヘルスシグナルが含まれます。これらの情報は、hex.pm の標準 API では取得できません。

ツール説明
toolbox_groups厳選されたグループとカテゴリーの分類を閲覧します
toolbox_group1つのグループに含まれるカテゴリーを一覧表示します
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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。