XServer MCP Server
MCP server for Xserver hosting that provides tools to manage mail accounts, DNS records, server information, and domain verification through natural language.
README
XServer MCP Server
English | 日本語
Xserver 公式の サーバーパネル REST API (https://api.xserver.ne.jp) を MCP ツールとして公開する Node.js サーバー。
現状の対象 tag は メールアカウント / サーバー情報 / DNSレコード および複合ツール (domain_verification)。
ロードマップ
対応を予定している公式 API タグ (優先順位順・未確定):
WordPress簡単インストール—list/install/update/deleteCron設定—list/create/update/deleteメール振り分け—list/create/deleteFTPアカウント—list/create/update/deleteサブドメイン/ドメイン設定—list/create/delete(破壊的なためconfirmガード必須)MySQL/PHPバージョン/SSL設定など残りのタグ
機能要望は Issue から受け付けます。
⚠ 非公式プロジェクトです 本プロジェクトは XServer / エックスサーバー (エックスサーバー株式会社 / XServer Inc.) が公式に提供・監修・承認するものではありません。XServer 社とは資本・契約関係のない個人有志による非公式 (unofficial) な OSS クライアントです。 "XServer" / "エックスサーバー" は XServer Inc. の商標・サービス名であり、本 README での言及は同社サービスに対応した API クライアントであることを説明する目的 (nominative use) に限られます。XServer Inc. のロゴ・ブランドリソースは使用していません。 本ソフトウェアの利用によって XServer アカウント・ドメイン・サーバー上のデータに生じたいかなる損害についても、著作者は責任を負いません (MIT License 参照)。
XSERVER_API_KEYはユーザー自身が発行・管理するものであり、本プロジェクトが第三者に送信・収集することはありません。
提供ツール
全ツールは日本語ドメイン (IDN) をそのまま受け付け、MCP 側で Punycode に自動正規化する (src/tools/domain.ts)。書き込み系ツールのレスポンスには実際に送信された resolved_domain / resolved_mail_address が含まれる。DNS レコードの host / content はラベル・任意文字列なので変換しない。
toolset: mail
| ツール | メソッド | パス |
|---|---|---|
list_mail_accounts |
GET | /v1/server/{sv}/mail |
create_mail_account |
POST | /v1/server/{sv}/mail |
get_mail_account |
GET | /v1/server/{sv}/mail/{mail_account} |
update_mail_account |
PUT | /v1/server/{sv}/mail/{mail_account} |
delete_mail_account |
DELETE | /v1/server/{sv}/mail/{mail_account} (confirm=true 必須) |
get_mail_forwarding |
GET | /v1/server/{sv}/mail/{mail_account}/forwarding |
update_mail_forwarding |
PUT | /v1/server/{sv}/mail/{mail_account}/forwarding |
toolset: server
| ツール | メソッド | パス |
|---|---|---|
get_server_info |
GET | /v1/server/{sv}/server-info |
get_server_usage |
GET | /v1/server/{sv}/server-info/usage |
get_server_info のレスポンスに含まれる domain_validation_token は、新規ドメインの TXT 認証 (_xserver-verify.{domain} に xserver-verify={token}) に利用する。
toolset: dns
| ツール | メソッド | パス |
|---|---|---|
list_dns_records |
GET | /v1/server/{sv}/dns |
create_dns_record |
POST | /v1/server/{sv}/dns |
update_dns_record |
PUT | /v1/server/{sv}/dns/{dns_id} |
delete_dns_record |
DELETE | /v1/server/{sv}/dns/{dns_id} (confirm=true 必須) |
toolset: domain_verification (複合ツール)
| ツール | 概要 |
|---|---|
ensure_domain_verified |
_xserver-verify.{domain} TXT レコードを現在の domain_validation_token と一致する状態に揃える。既に一致するレコードがあれば何もしない。 |
create_mail_account_with_verification |
既存確認 → ensure_domain_verified → POST /mail (最大 verification_wait_ms ぶんリトライ) を 1 呼び出しで完遂する mail-address-creator 向け高レベルツール。 |
servername ({sv}) は .env の XSERVER_SERVERNAME で固定され、各ツールの引数には含まれない。
エラー応答形式
全ツールは失敗時に以下の正規化された形式を返す (MCP の isError: true 付き):
{
"error": "XserverValidationError: 入力が不正です",
"code": "VALIDATION_ERROR",
"detail": {
"status": 422,
"body": { "error": { "code": "VALIDATION_ERROR", "message": "...", "errors": [...] } },
"errors": ["mail_address は必須です"],
"retry_after_seconds": 3, // 429 のみ
"rate_limit": { "remaining": 0 } // 429 のみ
}
}
code は公式仕様の BAD_REQUEST / UNAUTHORIZED / FORBIDDEN / NOT_FOUND / OPERATION_ERROR / VALIDATION_ERROR / RATE_LIMIT_EXCEEDED / INTERNAL_ERROR / BACKEND_ERROR / API_ERROR のいずれか。domain_verification の高レベルツールはこれに加えて DOMAIN_VERIFICATION_TIMEOUT / ALREADY_EXISTS を返すことがある。
前提条件
- Node.js 24 以上 (
package.jsonのengines準拠) - Xserver サーバーパネルで発行した API キー
- 発行手順: Xserver マニュアル「APIキー」 (同内容: サポートサイト版)
インストール
npm 経由 (推奨)
npm パッケージ として公開されています。ほとんどのユーザーはソースをクローンする必要はなく、MCP クライアントの設定で npx から起動できます (Claude Code / Claude Desktop での使用 参照)。
グローバルインストールして CLI として試すこともできます:
npm install -g xserver-mcp-server
XSERVER_API_KEY=xxx XSERVER_SERVERNAME=sv12345.xserver.jp xserver-mcp-server
ソースから (開発・デバッグ)
git clone https://github.com/Mink16/xserver-mcp.git
cd xserver-mcp
cp .env.example .env
# .env の XSERVER_API_KEY と XSERVER_SERVERNAME を実値に書き換える
npm ci
npm run build
.env は npx や npm install -g 経由で起動した場合は読み込まれない (CWD 依存のため)。MCP クライアントから起動するときは後述のとおり env フィールドで渡す。
環境変数
| 変数 | 必須 | 既定 | 用途 |
|---|---|---|---|
XSERVER_API_KEY |
✅ | — | Xserver API の Bearer トークン (サーバーパネル → API で発行) |
XSERVER_SERVERNAME |
✅ | — | サーバー名 (例: sv12345.xserver.jp) |
XSERVER_BASE_URL |
https://api.xserver.ne.jp |
API ベース URL (テスト差し替え用) | |
XSERVER_HTTP_CONCURRENCY |
3 |
同時接続上限。プラン別上限 (スタンダード 5 / プレミアム 10 / ビジネス 20) より保守的に設定 | |
XSERVER_HTTP_RETRY_MAX_ATTEMPTS |
2 |
429 の総試行回数。1 でリトライ無効 |
|
XSERVER_HTTP_RETRY_MAX_WAIT_SEC |
10 |
Retry-After がこの秒数を超えたらリトライせず即返す |
|
ENABLE_TOOLSETS |
(全有効) | 有効化する toolset をカンマ区切りで指定。mail / server / dns / domain_verification |
Claude Code / Claude Desktop での使用
npm 経由 (推奨)
プロジェクト側の .mcp.json もしくは claude_desktop_config.json に以下を追記:
{
"mcpServers": {
"xserver": {
"command": "npx",
"args": ["-y", "xserver-mcp-server"],
"env": {
"XSERVER_API_KEY": "your-api-key",
"XSERVER_SERVERNAME": "sv12345.xserver.jp"
}
}
}
}
env で指定していない他の環境変数 (XSERVER_HTTP_CONCURRENCY など) はすべて任意で、省略時は既定値が使われる。
ソースビルドから
ローカルでクローンしたもの (開発用) を呼ぶ場合:
{
"mcpServers": {
"xserver": {
"command": "node",
"args": ["/絶対パス/to/xserver-mcp/build/index.js"]
}
}
}
この構成では .env が CWD 基準で読み込まれるため、env フィールドを書かなくてもよい (ただし MCP クライアントによって CWD の扱いが異なるので env で明示するのが安全)。
別の MCP サーバーから子プロセスとして呼ぶ場合も同様に node <path>/build/index.js で起動する。相対パス指定時は呼び出し側の CWD を基準とする。
開発
npm run test:watch # TDD
npm run typecheck # tsc --noEmit
npm run dev # tsx 直接実行 (build 不要)
OpenAPI 仕様 (開発者向けリファレンス)
Xserver 公式 API の OpenAPI 仕様 (docs/xserver-openapi.json) は著作権の都合上リポジトリに含めていない (.gitignore 済)。開発時に参照したい場合は 公式ドキュメント から取得して docs/xserver-openapi.json として配置する。ビルド・テストには不要。
MCP Inspector で動作確認
npm run build
npx @modelcontextprotocol/inspector node build/index.js
ブラウザが開くので Tools タブから各ツールを実行できる。
テスト
- Vitest。
npm testで全テスト、npm run test:coverageでカバレッジ。 global.fetchをtests/helpers/mockFetch.tsでモックし、HTTP 呼び出しの URL / method / body / ヘッダ を検証。- 各ツールにつき 正常系 + 入力スキーマ検証 + API エラーを網羅。
コントリビュート
TDD (RED → GREEN → REFACTOR) サイクルを厳守する。手順・エージェントの使い分け・完了ゲートは .claude/rules/tdd-workflow.md を参照。PR 前のチェックリストは .claude/rules/pull-requests.md。
CLAUDE.md と .claude/ 配下 (rules/ / agents/ / skills/) は Claude Code などの LLM エージェントがこのリポジトリのコンテキストとして読み込むためのファイルで、人間の読み物としても本リポジトリの設計判断・運用ポリシーを知るのに役立つ。
バージョニング方針
変更履歴は CHANGELOG.md に Keep a Changelog 形式で記録します。
本プロジェクトは将来的に Semantic Versioning に準拠しますが、0.x の期間中は互換性を保証しません。minor バージョン間でも破壊的変更 (ツール名・入出力スキーマ・エラー code の変更等) が入る可能性があります。安定化後に 1.0.0 をリリースします。
行動規範
本プロジェクトの Issue / PR / Discussion での振る舞いは Contributor Covenant v2.1 に従います。
セキュリティ脆弱性は公開 Issue ではなく SECURITY.md の手順で非公開報告してください。
ライセンス
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。