nexus について
Nexus MCP Serverは、AIアシスタントからSonatype Nexus Repository Manager 3 OSSおよびProのMaven、Python、Docker成果物を検索するサーバーです。SSEまたはstreamable HTTPで読み取り専用ツールを提供し、認証情報はリクエストごとにHTTPヘッダーで渡します。
主な機能
- 01MavenとPythonパッケージの検索
- 02成果物とパッケージのバージョン一覧
- 03Dockerイメージとタグの一覧
- 04SSEとstreamable HTTPトランスポート
- 05HTTPヘッダーによるリクエストごとの認証情報
- 06Nexusへの読み取り専用クエリ
活用シーン
- 01Maven成果物の検索とバージョン確認
- 02Nexus内のPythonパッケージ検索
- 03Dockerイメージの一覧とタグ取得
- 04リクエスト単位の認証情報でMCPクライアントをNexusに接続
MCP 対応
MCPクライアントに6種類の読み取り専用Nexusクエリツールを提供します。SSEとstreamable HTTPに対応し、Nexus接続情報と認証情報はHTTPヘッダーで受け取ります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx nexus-mcp-serverNEXUS_BASE_URLBase URL of your Nexus Repository Manager instance (e.g., https://nexus.example.com)NEXUS_USERNAMENexus username for authenticationNEXUS_PASSWORDシークレットNexus password or token for authenticationローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Nexus MCP Server
English | 简体中文
Sonatype Nexus Repository Manager 3(OSS および Pro)向けの MCP(Model Context Protocol)サーバーです。AI アシスタントが Maven、Python(PyPI)、Docker リポジトリを検索できます。
機能
- 複数のトランスポートモード - SSE(デフォルト)または streamable-http トランスポート
- HTTP ストリーミングトランスポート - ヘッダー認証に対応した最新の SSE ベースのトランスポート
- リクエストごとの認証 - HTTP ヘッダーで認証情報を渡します(シークレットのハードコードは不要です)
- Maven のサポート - アーティファクトの検索、バージョンの一覧表示、メタデータの取得
- Python のサポート - パッケージの検索、バージョンの一覧表示、メタデータの取得
- Docker のサポート - イメージの一覧表示、タグの取得、イメージのメタデータ取得
- FastMCP フレームワーク - 高速で最新の Python 実装
互換性
対応する Nexus のバージョン:
- ✅ Nexus Repository Manager 3.x OSS(オープンソース)
- ✅ Nexus Repository Manager 3.x Pro
このサーバーは標準の Nexus REST API v1(/service/rest/v1)を使用します。この API は OSS 版と Pro 版の両方で利用できます。
利用可能なツール
この MCP サーバーは、Nexus リポジトリを検索するための読み取り専用ツールを 6 つ提供します。
📦 Maven ツール
| ツール | 説明 | パラメーター |
|---|---|---|
search_maven_artifact | Maven アーティファクトを検索します | group_id, artifact_id, version, repository |
get_maven_versions | Maven アーティファクトのすべてのバージョンを取得します(ページネーション対応) | group_id, artifact_id, repository, page_size, continuation_token |
🐍 Python/PyPI ツール
| ツール | 説明 | パラメーター |
|---|---|---|
search_python_package | Python パッケージを検索します | name, repository |
get_python_versions | Python パッケージのすべてのバージョンを取得します(ページネーション対応) | package_name, repository, page_size, continuation_token |
🐳 Docker ツール
| ツール | 説明 | パラメーター |
|---|---|---|
list_docker_images | リポジトリ内のすべての Docker イメージを一覧表示します | repository |
get_docker_tags | Docker イメージのすべてのタグを取得します | repository, image_name |
注: すべてのツールは読み取り専用で、安全に使用できます。書き込み操作(作成/更新/削除)には対応していません。
インストール
ソースから
# Clone the repository
git clone https://github.com/your-org/nexus-mcp-server.git
cd nexus-mcp-server
# Create virtual environment
python -m venv venv
source venv/bin/activate # or venv/bin/activate.fish
# Install in development mode
pip install -e ".[dev]"
# Run the server (defaults to http://0.0.0.0:8000)
python -m nexus_mcp
Docker を使用
# Quick start
docker run -p 8000:8000 addozhang/nexus-mcp-server:latest
# Or use docker-compose
docker-compose up
# See DOCKER.md for detailed deployment guide
詳しいデプロイガイドについては、DOCKER.md を参照してください。
設定
サーバーの設定
サーバーはコマンドライン引数または環境変数で設定できます。
| 変数 | CLI 引数 | 説明 | デフォルト |
|---|---|---|---|
NEXUS_MCP_HOST | --host | バインドするホスト | 0.0.0.0 |
NEXUS_MCP_PORT | --port | リッスンするポート | 8000 |
NEXUS_MCP_TRANSPORT | --transport | トランスポートモード(sse または streamable-http) | sse |
優先順位: CLI 引数 > 環境変数 > デフォルト値
トランスポートモード:
sse(デフォルト)- ほとんどの MCP クライアントと互換性のある Server-Sent Events トランスポートstreamable-http- このプロトコルを優先するクライアント向けのストリーミング可能な HTTP トランスポート
サーバーの実行
ローカル開発
# SSE mode (default)
python -m nexus_mcp
# Streamable-HTTP mode
python -m nexus_mcp --transport streamable-http
# Custom port
python -m nexus_mcp --port 9000
# Custom host and port
python -m nexus_mcp --host 127.0.0.1 --port 9000
Docker を使用
# SSE mode (default)
docker run -p 8000:8000 addozhang/nexus-mcp-server:latest
# Streamable-HTTP mode
docker run -e NEXUS_MCP_TRANSPORT=streamable-http -p 8000:8000 addozhang/nexus-mcp-server:latest
# Custom port
docker run -e NEXUS_MCP_PORT=9000 -p 9000:9000 addozhang/nexus-mcp-server:latest
# Or use docker-compose
docker-compose up
# See DOCKER.md for detailed deployment guide
詳しいデプロイガイドについては、DOCKER.md を参照してください。
HTTP ヘッダーによる認証
各リクエストで、HTTP ヘッダーを使って認証情報を渡します。
| ヘッダー | 説明 | 例 | 必須 |
|---|---|---|---|
X-Nexus-Url | Nexus インスタンスの URL | https://nexus.company.com | はい |
X-Nexus-Username | ユーザー名 | admin | はい |
X-Nexus-Password | パスワード | secret123 | はい |
X-Nexus-Verify-SSL | SSL 証明書を検証するかどうか | false | いいえ(デフォルト:true) |
注: 自己署名証明書を使用するセルフホストの Nexus インスタンスに接続する場合は、X-Nexus-Verify-SSL: false を設定してください。
MCP クライアントの設定(Claude Desktop)
Claude Desktop の設定(~/.config/claude/claude_desktop_config.json)に追加します。
{
"mcpServers": {
"nexus": {
"url": "http://localhost:8000/mcp",
"headers": {
"X-Nexus-Url": "https://nexus.company.com",
"X-Nexus-Username": "admin",
"X-Nexus-Password": "secret123"
}
}
}
}
自己署名証明書を使用する場合:
{
"mcpServers": {
"nexus": {
"url": "http://localhost:8000/mcp",
"headers": {
"X-Nexus-Url": "https://nexus.company.com",
"X-Nexus-Username": "admin",
"X-Nexus-Password": "secret123",
"X-Nexus-Verify-SSL": "false"
}
}
}
}
MCP クライアントの設定(その他のクライアント)
HTTP トランスポートに対応しているその他の MCP クライアントの場合:
{
"url": "http://localhost:8000/mcp",
"headers": {
"X-Nexus-Url": "https://nexus.company.com",
"X-Nexus-Username": "your-username",
"X-Nexus-Password": "your-password"
}
}
MCP ツール
Maven ツール
| ツール | 説明 | パラメーター |
|---|---|---|
search_maven_artifact | Maven リポジトリを検索します | group_id、artifact_id、version、repository |
get_maven_versions | アーティファクトのバージョンを取得します(ページネーション対応) | group_id、artifact_id、repository、page_size(デフォルトは50)、continuation_token |
ページネーションの例:
# First page
response = get_maven_versions("com.example", "myapp")
# response contains: versions, hasMore, continuationToken (if hasMore is true)
# Next page
if response["hasMore"]:
next_response = get_maven_versions(
"com.example",
"myapp",
continuation_token=response["continuationToken"]
)
Python ツール
| ツール | 説明 | パラメーター |
|---|---|---|
search_python_package | Python パッケージを検索します | name、repository |
get_python_versions | パッケージのバージョンを取得します(ページネーション対応) | package_name、repository、page_size(デフォルトは50)、continuation_token |
ページネーション: Maven と同じパターンです。hasMore を確認し、後続のページには continuationToken を使用してください。
Docker ツール
| ツール | 説明 | パラメーター |
|---|---|---|
list_docker_images | リポジトリ内のイメージを一覧表示します | repository |
get_docker_tags | イメージのタグを取得します | repository、image_name |
開発
テストの実行
pytest tests/ -v
型チェック
mypy src/
リント
ruff check src/ tests/
プロジェクト構成
nexus-mcp-server/
├── specs/ # Requirements documents
│ ├── authentication.md
│ ├── maven-support.md
│ ├── python-support.md
│ ├── docker-support.md
│ ├── mcp-architecture.md
│ └── http-streaming.md
├── src/nexus_mcp/ # Source code
│ ├── __init__.py # Package init with version
│ ├── __main__.py # CLI entry point
│ ├── server.py # FastMCP server with tools
│ ├── nexus_client.py # Nexus REST API client
│ ├── auth.py # Authentication types
│ ├── dependencies.py # Credential extraction from headers
│ └── tools/ # Tool implementations
│ ├── __init__.py
│ └── implementations.py
├── tests/ # Test suite
│ ├── conftest.py # Fixtures and sample data
│ ├── test_nexus_client.py # Client unit tests
│ ├── test_tools.py # Tool integration tests
│ └── test_http_transport.py # HTTP transport tests
├── AGENTS.md # Operational guide
├── IMPLEMENTATION_PLAN.md # Task tracking
└── pyproject.toml # Python project metadata
トラブルシューティング
接続エラー
- MCP サーバーが実行中であることを確認します(
python -m nexus_mcp) - ポート 8000 にアクセスできることを確認します
X-Nexus-Urlヘッダーが正しく、アクセス可能であることを確認します- Nexus インスタンスへのネットワーク接続を確認します
- HTTPS 証明書が有効であることを確認します(または、ローカルインスタンスには HTTP を使用します)
認証エラー
X-Nexus-UsernameおよびX-Nexus-Passwordヘッダーが正しいことを確認します- ユーザーにリポジトリの読み取り権限があることを確認します
- Nexus インスタンスで特定の認証方式が必要かどうかを確認します
認証情報がない場合のエラー
- 3つすべてのヘッダーが設定されていることを確認します:
X-Nexus-Url、X-Nexus-Username、X-Nexus-Password - MCP クライアントが HTTP ヘッダーに対応していることを確認します
結果が空の場合
- リポジトリ名が正しいことを確認します
- パッケージ/アーティファクトが Nexus に存在することを確認します
- Python パッケージの場合は、ハイフンとアンダースコアの両方の名前を試します
トランスポートモードの問題
streamable-http で接続がタイムアウトする場合:
- クライアントが streamable-http トランスポートに対応していることを確認します
- 代わりに SSE モードを使用してみてください:
python -m nexus_mcp --transport sse - ファイアウォールのルールで HTTP 接続が許可されていることを確認します
ツールが表示されない場合:
- SSE と streamable-http はどちらも同じツールを公開します
- ヘッダーが正しく渡されていることを確認します(X-Nexus-*)
- サーバーログで認証エラーを確認します
ライセンス
MIT
コントリビューション
コントリビューションを歓迎します!PR を提出する前に、テストとリントを実行してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。