Directadmin について
DirectadminはAIアシスタントとDirectAdminをつなぐMCPサーバーです。管理者が自然言語でサーバー情報の照会や操作を行えます。SSEエンドポイント、コマンドラインクライアント、Dockerでのデプロイに対応します。
主な機能
- 01DirectAdmin情報の照会
- 02システム管理ツールの実行
- 03SSEによる通信
- 04コマンドラインクライアントを同梱
- 05Dockerでのデプロイに対応
活用シーン
- 01DirectAdminのバージョン確認
- 02サービス稼働状況の確認
- 03システム更新の確認や実行
- 04security.txtの管理
MCP 対応
DirectAdmin APIの操作をMCPツールとして公開し、SSEエンドポイントを通じてクライアントから接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://localhost:8888/sseclaude mcp add --transport http directadmin http://localhost:8888/sse{"mcpServers":{"directadmin":{"type":"http","url":"http://localhost:8888/sse"}}}Cursor で開く{"servers":{"directadmin":{"type":"http","url":"http://localhost:8888/sse"}}}VS Code で開く{"mcpServers":{"directadmin":{"type":"http","url":"http://localhost:8888/sse"}}}{"mcpServers":{"directadmin":{"serverUrl":"http://localhost:8888/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
DirectAdmin MCP サーバー
自然言語を通じて 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:標準インストール
-
リポジトリをクローンします。
git clone https://github.com/omryatia/directadmin-mcp.git cd directadmin-mcp -
仮想環境を作成します。
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
依存関係をインストールします。
pip install -r requirements.txt -
設定を作成します。
cp .gitignore.sample .gitignore cp .env.sample .env # Edit .env with your DirectAdmin settings
オプション 2:Docker によるインストール
-
リポジトリをクローンします。
git clone https://github.com/omryatia/directadmin-mcp.git cd directadmin-mcp -
設定を作成します。
cp .env.sample .env # Edit .env with your DirectAdmin settings -
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_USERNAME | DirectAdmin のユーザー名 | (必須) |
DA_LOGIN_KEY | DirectAdmin のログインキー | (必須) |
PORT | MCP サーバーの実行ポート | 8888 |
LOG_LEVEL | ログレベル(DEBUG、INFO、WARNING、ERROR) | INFO |
DEBUG | 開発用のデバッグモードを有効にする | false |
SSL_VERIFY | DirectAdmin API 呼び出し時に SSL 証明書を検証する | true |
使用方法
サーバーの起動
サーバーは次の 2 つの方法で起動できます。
-
SSE 対応の FastAPI を使用する(推奨)。
python main.py -
シンプルな 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、-s | MCP サーバーの URL |
--key、-k | 認証用 API キー |
--no-verify | SSL 検証を無効にする |
--timeout、-t | リクエストのタイムアウト時間(秒) |
--info、-i | サーバー情報を取得する |
--health | サーバーのヘルス状態を確認する |
AI アシスタントの接続
MCP エンドポイントを使用するように AI アシスタントを設定します。
http://your-server:8888/sse
これにより、AI アシスタントは次の操作を行えます。
- DirectAdmin の情報を照会する
- DirectAdmin のコマンドを実行する
- リアルタイムの更新を受け取る
利用可能なツール
サーバーは次の 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 エンドポイント
| エンドポイント | メソッド | 説明 |
|---|---|---|
/ | GET | HTML のウェルカムメッセージを表示するルートページ |
/about | GET | サーバー情報 |
/health | GET | ヘルスチェックエンドポイント |
/sse | GET | MCP SSE 接続エンドポイント |
/messages | POST | SSE メッセージを投稿する内部エンドポイント |
開発
プロジェクト構成
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
新しいツールの追加
toolsディレクトリにファイルを作成するか、既存のファイルを編集します@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 サーバーへの認証の追加を検討してください
トラブルシューティング
接続の問題
接続の問題が発生した場合:
- DirectAdmin サーバーにアクセスできることを確認してください
- DirectAdmin API の認証情報が正しいことを確認してください
- DirectAdmin API が有効になっていることを確認してください
- HTTPS を使用している場合は、SSL の設定を確認してください
よくあるエラーメッセージ
- "Authentication failed":DirectAdmin の認証情報を確認してください
- "SSL verification failed":
.envでSSL_VERIFY=falseを設定するか、証明書を修正してください - "Tool not found":ツールモジュールが正しく読み込まれていることを確認してください
- "Connection refused":DirectAdmin が起動していて、アクセス可能であることを確認してください
貢献
貢献を歓迎します!お気軽に Pull Request を送信してください。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - Pull Request を作成します
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
謝辞
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。