mcpField
D
Directadmin

Directadmin

リモート
github.com/omryatiaクラウド・インフラ379 週間前に更新
リポジトリ

Directadmin について

DirectadminはAIアシスタントとDirectAdminをつなぐMCPサーバーです。管理者が自然言語でサーバー情報の照会や操作を行えます。SSEエンドポイント、コマンドラインクライアント、Dockerでのデプロイに対応します。

主な機能

  1. 01DirectAdmin情報の照会
  2. 02システム管理ツールの実行
  3. 03SSEによる通信
  4. 04コマンドラインクライアントを同梱
  5. 05Dockerでのデプロイに対応

活用シーン

  1. 01DirectAdminのバージョン確認
  2. 02サービス稼働状況の確認
  3. 03システム更新の確認や実行
  4. 04security.txtの管理

MCP 対応

DirectAdmin APIの操作をMCPツールとして公開し、SSEエンドポイントを通じてクライアントから接続できます。

設定

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

エンドポイントhttp://localhost:8888/sse
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

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

ツール

詳細

DirectAdmin MCP サーバー

version

自然言語を通じて AI アシスタントが DirectAdmin を操作できるようにする、DirectAdmin 連携用の Model Context Protocol(MCP)サーバーです。

機能

  • MCP 連携:Model Context Protocol を使用して、AI アシスタントを DirectAdmin に接続します
  • RESTful API:DirectAdmin 管理用の包括的な API
  • Server-Sent Events(SSE):クライアントとのリアルタイム通信
  • ツールベースのアーキテクチャ:ツールベースのコマンドを備えたモジュール設計
  • コマンドラインクライアント:テストやスクリプト作成に使用できるクライアントを同梱
  • Docker 対応:Docker と Docker Compose による簡単なデプロイ

アーキテクチャ

このプロジェクトは、AI アシスタントと DirectAdmin をつなぐブリッジとして機能するサーバーを実装しています。

┌──────────┐     ┌─────────────────┐     ┌────────────┐
│   AI     │     │  DirectAdmin    │     │ DirectAdmin│
│ Assistant├────►│  MCP Server     ├────►│   API      │
└──────────┘     └─────────────────┘     └────────────┘
      MCP                SSE                 HTTP

サーバーはツールベースのインターフェースを通じて DirectAdmin の機能を公開するため、AI アシスタントが DirectAdmin の操作を簡単に理解し、実行できます。

前提条件

  • Python 3.12+
  • API アクセスが可能な DirectAdmin サーバー
  • DirectAdmin のログインキー(推奨)またはユーザー名/パスワード

インストール

オプション 1:標準インストール
  1. リポジトリをクローンします。

    git clone https://github.com/omryatia/directadmin-mcp.git
    cd directadmin-mcp
    
  2. 仮想環境を作成します。

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 依存関係をインストールします。

    pip install -r requirements.txt
    
  4. 設定を作成します。

    cp .gitignore.sample .gitignore
    cp .env.sample .env
    # Edit .env with your DirectAdmin settings
    
オプション 2:Docker によるインストール
  1. リポジトリをクローンします。

    git clone https://github.com/omryatia/directadmin-mcp.git
    cd directadmin-mcp
    
  2. 設定を作成します。

    cp .env.sample .env
    # Edit .env with your DirectAdmin settings
    
  3. Docker Compose でビルドして起動します。

    docker-compose up -d
    

設定

.env ファイルを編集して DirectAdmin の認証情報を設定します。

# DirectAdmin Settings
DA_URL=https://your-directadmin-server:2222
DA_USERNAME=admin
DA_LOGIN_KEY=your_directadmin_login_key_here/password

# Server Settings
PORT=8888
LOG_LEVEL=INFO
DEBUG=false

# SSL Settings
SSL_VERIFY=true
設定オプション
変数説明デフォルト
DA_URLポートを含む DirectAdmin サーバー URL(必須)
DA_USERNAMEDirectAdmin のユーザー名(必須)
DA_LOGIN_KEYDirectAdmin のログインキー(必須)
PORTMCP サーバーの実行ポート8888
LOG_LEVELログレベル(DEBUG、INFO、WARNING、ERROR)INFO
DEBUG開発用のデバッグモードを有効にするfalse
SSL_VERIFYDirectAdmin API 呼び出し時に SSL 証明書を検証するtrue

使用方法

サーバーの起動

サーバーは次の 2 つの方法で起動できます。

  1. SSE 対応の FastAPI を使用する(推奨)。

    python main.py
    
  2. シンプルな MCP サーバーを使用する。

    python server.py
    

サーバーはデフォルトでポート 8888 で起動します(.env で変更できます)。

コマンドラインクライアントの使用

同梱のコマンドラインクライアントを使って、MCP サーバーを操作できます。

# Get server info
python client.py --info

# Check server health
python client.py --health

# Send a specific message
python client.py "Show me the version of DirectAdmin"

# Interactive mode
python client.py
クライアントのオプション
オプション説明
--server、-sMCP サーバーの URL
--key、-k認証用 API キー
--no-verifySSL 検証を無効にする
--timeout、-tリクエストのタイムアウト時間(秒)
--info、-iサーバー情報を取得する
--healthサーバーのヘルス状態を確認する
AI アシスタントの接続

MCP エンドポイントを使用するように AI アシスタントを設定します。

http://your-server:8888/sse

これにより、AI アシスタントは次の操作を行えます。

  1. DirectAdmin の情報を照会する
  2. DirectAdmin のコマンドを実行する
  3. リアルタイムの更新を受け取る

利用可能なツール

サーバーは次の DirectAdmin 操作をツールとして公開します。

システム管理
  • api_restart:DirectAdmin を再起動する
  • api_ping:DirectAdmin が稼働中か確認する
バージョン管理
  • api_get_version:DirectAdmin のバージョン情報を取得する
  • api_version_update:DirectAdmin を最新バージョンに更新する
  • api_change_update_channel:更新チャンネルを変更する
システム更新
  • api_system_packages_updates:利用可能なシステムパッケージの更新を取得する
  • api_system_packages_update_test:システムパッケージの更新をテストする
  • api_system_packages_update_run:システムパッケージの更新を実行する
セキュリティ
  • api_security_txt_status:security.txt の状態を確認する
  • api_security_txt_get:security.txt の内容を取得する
  • api_security_txt_update:security.txt の内容を更新する

API エンドポイント

エンドポイントメソッド説明
/GETHTML のウェルカムメッセージを表示するルートページ
/aboutGETサーバー情報
/healthGETヘルスチェックエンドポイント
/sseGETMCP SSE 接続エンドポイント
/messagesPOSTSSE メッセージを投稿する内部エンドポイント

開発

プロジェクト構成
directadmin-mcp/
├── README.md               # Project documentation
├── .env.sample             # Environment variables template
├── config.py               # Configuration module
├── main.py                 # FastAPI application with SSE support
├── server.py               # Simple MCP server
├── client.py               # Command-line client
├── da.py                   # DirectAdmin API client
├── mcp_instance.py         # MCP instance configuration
├── tools/                  # Tool modules directory
│   ├── __init__.py         # Tool loading mechanism
│   ├── common.py           # Common tool utilities
│   ├── misc.py             # Misc DirectAdmin operations
│   ├── security_txt.py     # Security.txt related tools
│   ├── system_update.py    # System update tools
│   └── versioning.py       # Versioning and update tools
│   └── and alot more ......
└── requirements.txt        # Project dependencies
新しいツールの追加
  1. tools ディレクトリにファイルを作成するか、既存のファイルを編集します
  2. @mcp.tool() デコレーターを使って新しい関数を追加します:
import logging
from mcp_instance import mcp
from da import call_da_api
from tools.common import log_tool_call, format_response

@mcp.tool()
@log_tool_call
async def my_new_tool(param1, param2):
    """
    Tool documentation.
    
    Args:
        param1: First parameter description
        param2: Second parameter description
        
    Returns:
        Description of the return value
    """
    # Implementation
    response = await call_da_api("/api/endpoint", method="GET")
    return format_response(response)

サーバーの起動時に、ツールは自動的に検出され、登録されます。

ロギング

サーバーでは包括的なロギングシステムを使用しています:

  • コンソールログ:ターミナルに表示されます
  • ファイルログ:logs ディレクトリに書き込まれます
  • エラーログ:エラー追跡用の別ファイルに記録されます

ログレベルは、.env ファイルの LOG_LEVEL 変数で設定できます。

Docker によるデプロイ

プロジェクトには、簡単にデプロイできるよう Docker サポートが含まれています:

# Build the image
docker build -t directadmin-mcp .

# Run the container
docker run -d \
  -p 8888:8888 \
  --env-file .env \
  --name directadmin-mcp \
  directadmin-mcp

または、Docker Compose を使うと、より簡単にデプロイできます:

docker-compose up -d

セキュリティ上の考慮事項

  • 本番環境では、有効な SSL 証明書を使用して HTTPS を設定してください
  • アクセスを制限するため、適切なファイアウォールルールを設定してください
  • 適切なセキュリティヘッダーを設定したリバースプロキシ(Nginx など)を使用してください
  • DirectAdmin のログインキーを安全に保管し、定期的にローテーションしてください
  • 本番環境で使用する場合は、MCP サーバーへの認証の追加を検討してください

トラブルシューティング

接続の問題

接続の問題が発生した場合:

  1. DirectAdmin サーバーにアクセスできることを確認してください
  2. DirectAdmin API の認証情報が正しいことを確認してください
  3. DirectAdmin API が有効になっていることを確認してください
  4. HTTPS を使用している場合は、SSL の設定を確認してください
よくあるエラーメッセージ
  • "Authentication failed":DirectAdmin の認証情報を確認してください
  • "SSL verification failed":.env で SSL_VERIFY=false を設定するか、証明書を修正してください
  • "Tool not found":ツールモジュールが正しく読み込まれていることを確認してください
  • "Connection refused":DirectAdmin が起動していて、アクセス可能であることを確認してください

貢献

貢献を歓迎します!お気軽に Pull Request を送信してください。

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更をコミットします(git commit -m 'Add some amazing feature')
  4. ブランチにプッシュします(git push origin feature/amazing-feature)
  5. Pull Request を作成します

ライセンス

このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。

謝辞

コメント

MCP は初めてですか?

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

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