mcpField
N
nexus

nexus

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

nexus について

Nexus MCP Serverは、AIアシスタントからSonatype Nexus Repository Manager 3 OSSおよびProのMaven、Python、Docker成果物を検索するサーバーです。SSEまたはstreamable HTTPで読み取り専用ツールを提供し、認証情報はリクエストごとにHTTPヘッダーで渡します。

主な機能

  1. 01MavenとPythonパッケージの検索
  2. 02成果物とパッケージのバージョン一覧
  3. 03Dockerイメージとタグの一覧
  4. 04SSEとstreamable HTTPトランスポート
  5. 05HTTPヘッダーによるリクエストごとの認証情報
  6. 06Nexusへの読み取り専用クエリ

活用シーン

  1. 01Maven成果物の検索とバージョン確認
  2. 02Nexus内のPythonパッケージ検索
  3. 03Dockerイメージの一覧とタグ取得
  4. 04リクエスト単位の認証情報でMCPクライアントをNexusに接続

MCP 対応

MCPクライアントに6種類の読み取り専用Nexusクエリツールを提供します。SSEとstreamable HTTPに対応し、Nexus接続情報と認証情報はHTTPヘッダーで受け取ります。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"addozhang-nexus": {
"command": "uvx",
"args": [
"nexus-mcp-server"
],
"env": {
"NEXUS_BASE_URL": "<NEXUS_BASE_URL>",
"NEXUS_USERNAME": "<NEXUS_USERNAME>",
"NEXUS_PASSWORD": "<NEXUS_PASSWORD>"
}
}
}
}
起動コマンドuvx nexus-mcp-server
設定が必要な環境変数
NEXUS_BASE_URLBase URL of your Nexus Repository Manager instance (e.g., https://nexus.example.com)
NEXUS_USERNAMENexus username for authentication
NEXUS_PASSWORDシークレットNexus password or token for authentication

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

パッケージ
pypinexus-mcp-server0.1.1

ツール

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

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

詳細

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_artifactMaven アーティファクトを検索しますgroup_id, artifact_id, version, repository
get_maven_versionsMaven アーティファクトのすべてのバージョンを取得します(ページネーション対応)group_id, artifact_id, repository, page_size, continuation_token
🐍 Python/PyPI ツール
ツール説明パラメーター
search_python_packagePython パッケージを検索しますname, repository
get_python_versionsPython パッケージのすべてのバージョンを取得します(ページネーション対応)package_name, repository, page_size, continuation_token
🐳 Docker ツール
ツール説明パラメーター
list_docker_imagesリポジトリ内のすべての Docker イメージを一覧表示しますrepository
get_docker_tagsDocker イメージのすべてのタグを取得します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-UrlNexus インスタンスの URLhttps://nexus.company.comはい
X-Nexus-Usernameユーザー名adminはい
X-Nexus-Passwordパスワードsecret123はい
X-Nexus-Verify-SSLSSL 証明書を検証するかどうか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_artifactMaven リポジトリを検索します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_packagePython パッケージを検索します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 を提出する前に、テストとリントを実行してください。

コメント

MCP は初めてですか?

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

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