mcpField
S
Sonatype Nexus

Sonatype Nexus

ローカル
github.com開発ツール01 週間前に更新

Sonatype Nexus について

Sonatype Nexus Repository 3.x の調査、監査、文書化を行う MCP サーバーです。標準では読み取り専用で、管理用の書き込みツールは有効化するまで公開されません。構成文書の生成や、宣言状態との差分確認にも対応します。

主な機能

  1. 01リポジトリと関連設定の調査
  2. 02構成説明と Markdown 文書の生成
  3. 03リポジトリ内容の監査とリスク確認
  4. 04実際の状態と宣言状態の比較
  5. 05インスタンスの REST API 操作の検出
  6. 06読み取り専用が既定で機密情報をマスキング

活用シーン

  1. 01Nexus のリポジトリとストレージ設定を棚卸し
  2. 02構成やリポジトリ一覧の文書を作成
  3. 03リポジトリ内容を監査し構成リスクを確認
  4. 04リポジトリ設定のドリフトを確認

MCP 対応

stdio または Streamable HTTP で MCP クライアントの要求を受け取り、REST API 経由で Nexus Repository 3.x にアクセスします。ツール、リソース、プロンプトを提供し、書き込みツールは既定で無効です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"oomchiller-nexus": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"NEXUS_URL",
"-e",
"NEXUS_USERNAME",
"-e",
"NEXUS_PASSWORD",
"-e",
"NEXUS_VERIFY_TLS",
"-e",
"NEXUS_MCP_MODE",
"-e",
"NEXUS_MCP_ENABLE_WRITE_TOOLS",
"-e",
"NEXUS_MCP_ENABLE_RAW_API",
"ghcr.io/oomchiller/nexus-mcp-server:0.2.1"
],
"env": {
"NEXUS_URL": "<NEXUS_URL>",
"NEXUS_USERNAME": "<NEXUS_USERNAME>",
"NEXUS_PASSWORD": "<NEXUS_PASSWORD>",
"NEXUS_VERIFY_TLS": "<NEXUS_VERIFY_TLS>",
"NEXUS_MCP_MODE": "<NEXUS_MCP_MODE>",
"NEXUS_MCP_ENABLE_WRITE_TOOLS": "<NEXUS_MCP_ENABLE_WRITE_TOOLS>",
"NEXUS_MCP_ENABLE_RAW_API": "<NEXUS_MCP_ENABLE_RAW_API>"
}
}
}
}
起動コマンドdocker run -i --rm -e NEXUS_URL -e NEXUS_USERNAME -e NEXUS_PASSWORD -e NEXUS_VERIFY_TLS -e NEXUS_MCP_MODE -e NEXUS_MCP_ENABLE_WRITE_TOOLS -e NEXUS_MCP_ENABLE_RAW_API ghcr.io/oomchiller/nexus-mcp-server:0.2.1
設定が必要な環境変数
NEXUS_URLNexus base URL, for example https://nexus.example.com
NEXUS_USERNAMENexus user; a read-only account is recommended
NEXUS_PASSWORDシークレットPassword for NEXUS_USERNAME
NEXUS_VERIFY_TLSVerify the Nexus TLS certificate
NEXUS_MCP_MODEreadonly, audit or admin
NEXUS_MCP_ENABLE_WRITE_TOOLSWith admin mode, list and allow repository deletion and task runs
NEXUS_MCP_ENABLE_RAW_APIList the nexus_api_call tool for REST paths under /service/rest/

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/oomchiller/nexus-mcp-server:0.2.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Sonatype Nexus MCP Server

CI Release License

AI アシスタントが Sonatype Nexus Repository Manager 3.x インスタンスを 調査、監査、文書化できる Model Context Protocol サーバーです。 デフォルトでは読み取り専用で、管理ツールは有効にしない限り一覧にも表示されません。

flowchart LR
    AI[MCP client] <-->|stdio / Streamable HTTP| Server[nexus-mcp-server]
    Server <-->|REST API| Nexus[Nexus Repository 3.x]

機能

  • 設定されたアカウントから参照できる範囲で、リポジトリ、Blob ストア、タスク、クリーンアップポリシー、ルーティングルール、コンテンツセレクター、ユーザー、ロール、権限を一覧表示します。
  • 関係グラフ(リポジトリ → Blob ストア、グループ → メンバー、リポジトリ → クリーンアップポリシー、ロール → 権限)に基づき、アーキテクチャの説明、リスクチェック、Markdown ドキュメントの生成を行います。
  • 1 つのリポジトリの全コンテンツを対象に、完了の証拠を含む範囲を限定した監査を行います。
  • 宣言された状態と照らし合わせて、リポジトリのドリフトをチェックします。
  • インスタンスの REST 操作を OpenAPI で検出します。
  • すべてのツールで readOnlyHint、destructiveHint、idempotentHint、openWorldHint を宣言します。出力とログでは、設定されたパスワードと秘密情報と思われるキーをマスキングします。
  • 設定なしで起動するため、クライアントやレジストリはツールを一覧表示できます。呼び出し時には、不足している設定が報告されます。

Nexus Pro 3.96.1-01 で本番環境にて読み取り専用モードで使用されています。OSS 3.70 では一部検証済みです。docs/COMPATIBILITY.md を参照してください。

クイックスタート

MCP Registry には io.github.oomchiller/nexus-mcp-server として登録されています。レジストリ対応クライアントは、そこからインストールできます。手動で設定する場合:

コンテナー
docker run --rm -i \
  -e NEXUS_URL=https://nexus.example.com \
  -e NEXUS_USERNAME=readonly-user \
  -e NEXUS_PASSWORD \
  ghcr.io/oomchiller/nexus-mcp-server:0.2.1

イメージは linux/amd64 および linux/arm64 向けに公開されています。標準権限を持たないユーザーとして stdio 経由で実行され、環境変数のみで設定できます。リリースのダイジェストは リリースページ に掲載されています。

ローカルプロセス
{
  "mcpServers": {
    "nexus": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/oomchiller/[email protected]", "nexus-mcp-server"],
      "env": {
        "NEXUS_URL": "https://nexus.example.com",
        "NEXUS_USERNAME": "readonly-user",
        "NEXUS_PASSWORD": "change-me"
      }
    }
  }
}

その他のクライアント例(Claude Desktop、Codex CLI、Gemini CLI)は examples/ にあります。

設定

設定は、環境変数または作業ディレクトリ内の .env ファイルから読み込まれます。

変数デフォルト意味
NEXUS_URL未設定Nexus のベース URL です。設定されていなくてもサーバーは起動しますが、呼び出し時に Nexus が設定されていないことが通知されます。
NEXUS_USERNAME / NEXUS_PASSWORD未設定基本認証です。読み取り専用の Nexus アカウントを使用してください。
NEXUS_VERIFY_TLStrueNexus の TLS 証明書を検証します。
NEXUS_CA_BUNDLE未設定パブリックルート証明書の代わりに信頼する CA 証明書の PEM ファイルです。NEXUS_VERIFY_TLS=true が必要です。
NEXUS_TIMEOUT_SECONDS30HTTP のタイムアウトです。
NEXUS_ALLOWED_HOSTSNEXUS_URL のホストクライアントが接続できるホストをカンマ区切りで指定します。
NEXUS_LOG_LEVELINFOログレベル(stderr)です。
NEXUS_MCP_MODEreadonlyreadonly、audit(readonly と同じ制限)、または admin です。
NEXUS_MCP_ENABLE_WRITE_TOOLSfalseadmin の場合、書き込みツールを一覧に表示して使用可能にします。
NEXUS_MCP_ENABLE_RAW_APIfalsenexus_api_call を一覧に表示します。
NEXUS_MCP_RAW_API_GET_ONLYfalsenexus_api_call を GET に制限します。
NEXUS_MCP_MAX_RAW_RESPONSE_BYTES1048576受け付ける Nexus レスポンスの最大サイズです。
NEXUS_MCP_GRAPH_TTL_SECONDS60グラフツールが Knowledge Graph のビルドを再利用する時間です。0 にすると呼び出しごとに再ビルドします。
NEXUS_MCP_ENABLE_PROMPTStrueプロンプトを登録します。
NEXUS_MCP_ENABLE_RESOURCEStrueリソースを登録します。

トークン認証は実装されていません。

サーバーは SSL_CERT_FILE やシステムの信頼ストアを読み込みません。プライベート CA の背後にある Nexus では、検証を無効にするのではなく NEXUS_CA_BUNDLE を設定してください。読み取れないバンドル、または検証が無効な状態でのバンドルは、サーバーの起動を停止させます。

複数のインスタンスを並行して実行し、ツール名のみをプレフィックスで区別するゲートウェイ(Docker MCP Gateway)では、NEXUS_MCP_ENABLE_PROMPTS=false と NEXUS_MCP_ENABLE_RESOURCES=false を設定してください。

コマンドライン
--transport {stdio,sse,streamable-http}   default stdio
--host HOST / --port PORT                 HTTP bind, default 127.0.0.1:8000, no authentication
--nexus-url URL                           overrides NEXUS_URL
--nexus-username USERNAME                 overrides NEXUS_USERNAME
--verify-ssl / --no-verify-ssl            overrides NEXUS_VERIFY_TLS
--ca-bundle PATH                          overrides NEXUS_CA_BUNDLE

NEXUS_PASSWORD はコマンドラインではなく、環境変数に設定してください。

ツール

グループツール
説明nexus_understand_architecture、nexus_explain_repository、nexus_explain_storage_strategy
インベントリとドキュメントnexus_generate_inventory_json、nexus_generate_architecture_md、nexus_generate_repository_catalog_md、nexus_audit_repository_content
監査nexus_detect_architecture_smells、nexus_generate_audit_report
ドリフトnexus_compare_live_state_with_declared_state
OpenAPInexus_openapi_list_operations、nexus_generate_capability_map

有効にした場合のみ一覧に表示されます。

ツール必要な設定
nexus_api_callNEXUS_MCP_ENABLE_RAW_API=true。パスは正規化され、/service/rest/ に制限されます。
nexus_delete_repository、nexus_run_taskNEXUS_MCP_MODE=admin および NEXUS_MCP_ENABLE_WRITE_TOOLS=true。

リソース:nexus://instance/summary、nexus://repositories、 nexus://blobstores、nexus://tasks、nexus://cleanup-policies、 nexus://security/summary、nexus://architecture、nexus://knowledge_graph。 プロンプト:nexus_audit_prompt、nexus_iac_drift_prompt。

把握しておくべき制限:ドリフト比較の対象はリポジトリ名、フォーマット、タイプのみです。 リスクチェックが対象とするのは一部のグラフルールのみです。検出結果の網羅性は、アカウントから参照できる REST API の範囲に限られます。 バージョン、エディション、または権限の理由で利用できないオプションのエンドポイントは、失敗ではなく制限事項として表示されます。

安全性

  • デフォルトでは読み取り専用です。有効にしない限り、書き込みツールと未加工 API は一覧に表示されず、書き込み操作は呼び出し時にも毎回モードがチェックされます。
  • クライアントが接続するのは NEXUS_ALLOWED_HOSTS のホストのみで、パスは NEXUS_URL からの相対パスに限られます。
  • リダクションは多層防御であり、最小権限の Nexus アカウントの代わりにはなりません。SECURITY.md を参照してください。

開発

uv sync --locked
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run mypy src tests

CONTRIBUTING.md、ARCHITECTURE.md、 DECISIONS.md、ROADMAP.md を参照してください。

License

MIT; see LICENSE.

コメント

MCP は初めてですか?

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

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