dynu-mcp
dynu-mcp
Dynu 用の MCP サーバー — ダイナミック DNS、ドメイン登録、メールホスティング、クラウドコンピュート (VPS) プロバイダーです。Dynu の公開 REST API v2 全体を MCP ツールとして公開します。
概要
ステートレスな HTTP サービス。認証情報は一切永続化されません。各リクエストは独自の API キーをヘッダーで提供し、その単一リクエストの期間のみ使用されます。
同時リクエストをサポート。リクエストごとの認証情報の分離は、グローバル/共有クライアントインスタンスではなく、Python の
contextvarsによって行われます。エントリポイント:
POST /mcp(MCP プロトコル) とGET /health(ヘルスチェック)。デフォルトポート:
8080(MCP_HTTP_PORTで設定可能)。
Related MCP server: dynadot-mcp
スコープ
30 ツール。Dynu の完全な OpenAPI 3.0 仕様をカバーする当初の 117 ツール構成から削減されました。この MCP が背後で動作するプラットフォームは、有効なすべてのベンダー MCP のツールを単一の Gemini/Vertex モデル呼び出しに集約し、合計 512 の関数宣言に制限されます。50 以上のベンダー MCP が登録されているため、それぞれをスリムに保つ必要があります。同じ 6 カテゴリにわたって保持: dns (8 — MSPbots の実際の GET /dns エンドポイントとコアなレコード/サービス CRUD)、email (7 — サービス一覧/詳細、アカウント作成/読み取り/更新/削除)、compute (4 — インスタンス一覧/詳細/起動/停止)、domain (2 — 一覧/詳細)、monitor (7、カテゴリ全体)、ping (2、カテゴリ全体)。完全に削除: ドメイン登録管理 (グルーレコード、ネームサーバー、自動更新、ロック/ロック解除)、メールのブラックリスト/ホワイトリスト/エイリアス/配布リスト/DKIM 管理、およびコンピュートのバックアップ/スナップショット/VNC/再インストール操作 — 既知のギャップ を参照。MSPbots 自体は 1 つのエンドポイント (GET /dns) のみを呼び出し、これは保持されます。
認証
Dynu は単一の静的 API キー (Dynu コントロールパネルの API 資格情報エリアにあります) で認証します。MSPbots の統合規約では、このキーを API-Key ヘッダーの生の値として送信し、このサーバーはそのまま転送します。
ヘッダー認証パラメータの説明
ヘッダー | 型 | 必須 | デフォルト値 | 列挙値 | フィールド説明 | 例 |
| string | 必須 | なし | なし | Dynu 静的 API キー。上流の |
|
ヘッダーがない場合は 401 を返します:
{
"error": "Missing credentials",
"message": "This server requires the X-Dynu-Api-Key header",
"required_headers": ["X-Dynu-Api-Key"],
"optional_headers": []
}環境変数
変数 | 型 | 必須 | デフォルト値 | 説明 |
| int | 任意 |
| HTTP リッスンポート |
| string | 任意 |
| HTTP リッスンアドレス |
| string | 任意 |
| Dynu API ベース URL |
MCP エンドポイント
POST /mcp— MCP プロトコル (ストリーミング可能な HTTP トランスポート)GET /health— ヘルスチェック。{"status": "ok"}を返します (純粋なローカル liveness プローブであり、Dynu API には依存しません)
ツール一覧
ツール名は、ベンダーの OpenAPI 仕様における各操作のサマリーから派生しています (例: "Get a list of domains for DNS service" → dynu_get_list_domains_dns_service)。1 つの名前の衝突 (GET /ping と POST /ping の両方が同一のサマリーを共有) は、_get/_post サフィックスで区別されます。POST 操作の body パラメータは汎用の dict として受け入れられます。各リソースの正確なフィールド名/型については、ベンダーの OpenAPI 仕様の Models セクション (下記リンク) を参照してください。
カテゴリ | ツール | 機能 | メソッド+パス | パラメータ |
dns |
| DNS サービスの新しい DNS レコードを追加します。 | POST /dns/{id}/record | id(必須), body(必須,dict) |
dns |
| 新しい DNS サービスを追加します。 | POST /dns | body(必須,dict) |
dns |
| DNS サービスの DNS レコードの詳細を取得します。 | GET /dns/{id}/record/{dnsRecordId} | id(必須), dns_record_id(必須) |
dns |
| DNS サービスのドメインの詳細を取得します。 | GET /dns/{id} | id(必須) |
dns |
| DNS サービスの DNS レコードの一覧を取得します。 | GET /dns/{id}/record | id(必須) |
dns |
| DNS サービスのドメインの一覧を取得します。 | GET /dns | |
dns |
| DNS サービスから DNS レコードを削除します。 | DELETE /dns/{id}/record/{dnsRecordId} | id(必須), dns_record_id(必須) |
dns |
| DNS サービスの既存の DNS レコードを更新します。 | POST /dns/{id}/record/{dnsRecordId} | id(必須), dns_record_id(必須), body(必須,dict) |
domain |
| ドメイン登録ドメインの詳細を取得します。 | GET /domain/{id} | id(必須) |
domain |
| ドメイン登録サービスのドメインの一覧を取得します。 | GET /domain | |
| メールサービスの新しいメールアカウントを追加します。 | POST /email/{id}/account | id(必須), body(必須,dict) | |
| メールアカウントの詳細を取得します。 | GET /email/{id}/account/{accountId} | id(必須), account_id(必須) | |
| メールサービスの詳細を取得します。 | GET /email/{id} | id(必須) | |
| メールサービスのメールアカウントの一覧を取得します。 | GET /email/{id}/account | id(必須) | |
| メールサービスの一覧を取得します。 | GET /email | ||
| メールサービスからメールアカウントを削除します。 | DELETE /email/{id}/account/{accountId} | id(必須), account_id(必須) | |
| メールサービスの既存のメールアカウントを更新します。 | POST /email/{id}/account/{accountId} | id(必須), account_id(必須), body(必須,dict) | |
compute |
| インスタンスを取得します。 | GET /compute/instance/{id} | id(必須) |
compute |
| インスタンスの一覧を取得します。 | GET /compute/instance | |
compute |
| インスタンスを起動します。 | GET /compute/instance/{id}/start | id(必須) |
compute |
| インスタンスを停止 (一時停止) します。 | GET /compute/instance/{id}/stop | id(必須) |
monitor |
| 新しいモニターを追加します。 | POST /monitor | body(必須,dict) |
monitor |
| モニターを削除します。 | DELETE /monitor/{id} | id(必須) |
monitor |
| モニターの詳細を取得します。 | GET /monitor/{id} | id(必須) |
monitor |
| モニターの一覧を取得します。 | GET /monitor | |
monitor |
| モニタリングに関連する制限。 | GET /monitor/limit | |
monitor |
| モニターを一時停止します。 | GET /monitor/{id}/pause | id(必須) |
monitor |
| モニターの一時停止を解除します。 | GET /monitor/{id}/unpause | id(必須) |
ping |
| API サーバーに ping を送信して pong 応答を取得します。 | GET /ping | message(必須) |
ping |
| API サーバーに ping を送信して pong 応答を取得します。 | POST /ping | body(必須,dict) |
テスト例
# Health check
curl -s http://localhost:8080/health
# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp -H "X-Dynu-Api-Key: <your-dynu-api-key>" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -H "mcp-session-id: <session-id-from-initialize>" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dynu_get_list_domains_dns_service",
"arguments": {}
}
}'ライブ検証済み (2026-07-29): dynu_get_list_domains_dns_service (MSPbots 自体が呼び出す同じエンドポイント、パラメータなし) が、実際の API キーを使用してこの実行中のサーバーを通じてエンドツーエンドで呼び出され、アカウントの実際の DNS ドメインレコードが返されました。
API リファレンス
公式 OpenAPI 3.0 仕様 (Swagger): https://www.dynu.com/files/dynu.api/Dynu.API.OAS.zip
既知のギャップ
ツールを117個から30個に削減(ユーザーの明示的な決定による): このMCPが動作するプラットフォームは、有効化されたすべてのベンダーMCPのツールを単一のGemini/Vertexモデル呼び出しに集約するが、これは合計512個の関数宣言に制限される。50以上のベンダーMCPが登録されているため、各MCPはスリムに保つ必要がある。維持したもの: MSPbotsの実際の
GET /dnsエンドポイント、コアDNSレコード/サービスCRUD(8)、コアメールサービス/アカウントCRUD(7)、基本的なコンピュートインスタンスの一覧/詳細/起動/停止(4)、ドメインの一覧/詳細(2)、およびMonitor/Pingの全機能(9)。完全に削除したもの: ドメインレジストラ管理(グルーレコード、ネームサーバー、自動更新、ロック/アンロック/キャンセル)、メールのブラックリスト/ホワイトリスト/エイリアス/配布リスト/DKIM管理、およびコンピュートのバックアップ/スナップショット/VNC/再インストール/パスワード変更操作。実際のユースケースで必要になれば、これらはリクエストに応じて再追加できる。コンピュートおよびドメインの書き込み操作は、削減後もリスクが高いまま —
dynu_start_instance/dynu_stop_suspend_instanceは実際のVPSインスタンスに対して動作する。これらは破壊的/不可逆的として扱い、呼び出す前に人間による確認を行うこと。bodyパラメータは型指定なし(dict)であり、完全にモデル化されていない — OpenAPI仕様のModelsセクションがリソースごとの正確なスキーマを定義している(例:DNS.dnsRecordA)が、それらすべてを型指定されたPythonパラメータとして再現することは範囲外だった。呼び出し側は、リンクされた仕様に従ってbodydictを整形する必要がある。実アカウントデータでライブ検証されたのは
dynu_get_list_domains_dns_service(MSPbots独自のエンドポイント)のみ。残りの29ツールは構造的に正しい(スキーマ検証済み、MCPプロトコルのtools/list確認済み、削減後のツール数も再確認済み)が、個別のスモークテストは実施されていない。そのうちのいくつかは書き込み/破壊的操作であり、実際のDNSレコード、メールアカウント、またはVPSインスタンスを作成・変更・削除するため、ライブのテストアカウントに対して実行されなかった。
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
Remote MCP for 1,500+ APIs. Vault-managed credentials; OAuth or API key. Search, load, and execute.
135 MCP tools: geo, email, phone, company, DNS, FX, equities, weather, tax, econ, intel — one key.
49 developer tools via MCP: DNS, WHOIS, IP lookup, JWT, hashing, QR, and more.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for Dynadot domain registrar API3 — manage domains, DNS, contacts, transfers & more6736 npm1MIT
- FlicenseCqualityCmaintenanceMCP server for Dynadot API to manage domains, DNS, contacts, nameservers, folders, and aftermarket.1001-
- AlicenseNot gradedqualityDmaintenanceEnables DNS record CRUD operations (list, get, create, update, delete) through MCP tools, provider-agnostic and secure.MIT
- FlicenseNot gradedqualityDmaintenanceEnables managing Cloudflare domains, DNS records, SSL certificates, zone operations, analytics, and cache purging via MCP or CLI.5 npm-