Sonatype Nexus について
Sonatype Nexus Repository 3.x の調査、監査、文書化を行う MCP サーバーです。標準では読み取り専用で、管理用の書き込みツールは有効化するまで公開されません。構成文書の生成や、宣言状態との差分確認にも対応します。
主な機能
- 01リポジトリと関連設定の調査
- 02構成説明と Markdown 文書の生成
- 03リポジトリ内容の監査とリスク確認
- 04実際の状態と宣言状態の比較
- 05インスタンスの REST API 操作の検出
- 06読み取り専用が既定で機密情報をマスキング
活用シーン
- 01Nexus のリポジトリとストレージ設定を棚卸し
- 02構成やリポジトリ一覧の文書を作成
- 03リポジトリ内容を監査し構成リスクを確認
- 04リポジトリ設定のドリフトを確認
MCP 対応
stdio または Streamable HTTP で MCP クライアントの要求を受け取り、REST API 経由で Nexus Repository 3.x にアクセスします。ツール、リソース、プロンプトを提供し、書き込みツールは既定で無効です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
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.1NEXUS_URLNexus base URL, for example https://nexus.example.comNEXUS_USERNAMENexus user; a read-only account is recommendedNEXUS_PASSWORDシークレットPassword for NEXUS_USERNAMENEXUS_VERIFY_TLSVerify the Nexus TLS certificateNEXUS_MCP_MODEreadonly, audit or adminNEXUS_MCP_ENABLE_WRITE_TOOLSWith admin mode, list and allow repository deletion and task runsNEXUS_MCP_ENABLE_RAW_APIList the nexus_api_call tool for REST paths under /service/rest/ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/oomchiller/nexus-mcp-server:0.2.1stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Sonatype Nexus MCP Server
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_TLS | true | Nexus の TLS 証明書を検証します。 |
NEXUS_CA_BUNDLE | 未設定 | パブリックルート証明書の代わりに信頼する CA 証明書の PEM ファイルです。NEXUS_VERIFY_TLS=true が必要です。 |
NEXUS_TIMEOUT_SECONDS | 30 | HTTP のタイムアウトです。 |
NEXUS_ALLOWED_HOSTS | NEXUS_URL のホスト | クライアントが接続できるホストをカンマ区切りで指定します。 |
NEXUS_LOG_LEVEL | INFO | ログレベル(stderr)です。 |
NEXUS_MCP_MODE | readonly | readonly、audit(readonly と同じ制限)、または admin です。 |
NEXUS_MCP_ENABLE_WRITE_TOOLS | false | admin の場合、書き込みツールを一覧に表示して使用可能にします。 |
NEXUS_MCP_ENABLE_RAW_API | false | nexus_api_call を一覧に表示します。 |
NEXUS_MCP_RAW_API_GET_ONLY | false | nexus_api_call を GET に制限します。 |
NEXUS_MCP_MAX_RAW_RESPONSE_BYTES | 1048576 | 受け付ける Nexus レスポンスの最大サイズです。 |
NEXUS_MCP_GRAPH_TTL_SECONDS | 60 | グラフツールが Knowledge Graph のビルドを再利用する時間です。0 にすると呼び出しごとに再ビルドします。 |
NEXUS_MCP_ENABLE_PROMPTS | true | プロンプトを登録します。 |
NEXUS_MCP_ENABLE_RESOURCES | true | リソースを登録します。 |
トークン認証は実装されていません。
サーバーは 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 |
| OpenAPI | nexus_openapi_list_operations、nexus_generate_capability_map |
有効にした場合のみ一覧に表示されます。
| ツール | 必要な設定 |
|---|---|
nexus_api_call | NEXUS_MCP_ENABLE_RAW_API=true。パスは正規化され、/service/rest/ に制限されます。 |
nexus_delete_repository、nexus_run_task | NEXUS_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.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。