🚀 Infomaniak MCP 服務器
這是一個用於與 Infomaniak API 交互的 模型上下文協議 (MCP) 服務器。該服務器使 Claude 等 AI 助手能夠管理 Infomaniak 的各項服務,包括域名、電子郵件、網站託管、kDrive 等。
🚀 快速開始
要使用 Infomaniak MCP 服務器,你需要完成以下幾個步驟:
- 確保滿足前置條件,包括安裝 Node.js 18 或更高版本,擁有 Infomaniak 賬戶並獲取 API 令牌。
- 按照安裝指南進行安裝,可以選擇使用 npm 安裝或從源代碼安裝。
- 進行配置,根據不同的使用場景(如 Claude Desktop)設置相應的配置文件和環境變量。
- 選擇合適的傳輸模式(如 HTTP 傳輸)並啟動服務器。
✨ 主要特性
- 🌐 域名管理 - 列出域名,進行完整的 DNS 記錄增刪改查操作。
- 📧 電子郵件服務 - 管理郵箱、別名和郵件配置。
- 🖥️ 網站託管 - 管理網站、PHP 版本和 MySQL 數據庫。
- 💾 kDrive - 訪問和管理 kDrive 雲存儲。
- 🔒 瑞士備份 - 查看和管理備份產品。
- 🖧 VPS 與服務器 - 控制 VPS 實例和專用服務器。
- 📜 SSL 證書 - 查看證書信息。
- 💰 發票管理 - 訪問賬單和發票數據。
- 🔧 通用 API - 進行自定義 API 調用以執行高級操作。
📋 前置條件
- Node.js 18 或更高版本。
- 具有 API 訪問權限的 Infomaniak 賬戶。
- 從 Infomaniak 獲取的 API 令牌。
🔑 獲取 API 令牌
- 登錄你的 Infomaniak 管理器。
- 導航到 賬戶 → API 令牌 或訪問 令牌管理。
- 點擊 "創建令牌"。
- 根據你的需求選擇適當的作用域:
account - 賬戶管理
domain - 域名管理
mail - 電子郵件服務
web - 網站託管
drive - kDrive 訪問
swiss_backup - 備份服務
vps - VPS 管理
dedicated - 專用服務器
certificate - SSL 證書
invoicing - 賬單訪問
- 複製並安全存儲你的令牌。
📦 安裝指南
使用 npm(推薦)
npm install -g infomaniak-mcp-server
從源代碼安裝
git clone https://github.com/YOUR_USERNAME/infomaniak-mcp-server.git
cd infomaniak-mcp-server
npm install
npm run build
⚙️ 配置
Claude Desktop
將以下內容添加到你的 Claude Desktop 配置文件中:
| 操作系統 |
路徑 |
| macOS |
~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows |
%APPDATA%\Claude\claude_desktop_config.json |
| Linux |
~/.config/Claude/claude_desktop_config.json |
{
"mcpServers": {
"infomaniak": {
"command": "npx",
"args": ["-y", "infomaniak-mcp-server"],
"env": {
"INFOMANIAK_API_TOKEN": "your-api-token-here"
}
}
}
}
或者,如果是全局安裝或從源代碼安裝:
{
"mcpServers": {
"infomaniak": {
"command": "node",
"args": ["/path/to/infomaniak-mcp-server/build/index.js"],
"env": {
"INFOMANIAK_API_TOKEN": "your-api-token-here"
}
}
}
}
環境變量
| 變量 |
是否必需 |
默認值 |
描述 |
INFOMANIAK_API_TOKEN |
是 |
- |
你的 Infomaniak API 令牌 |
MCP_TRANSPORT |
否 |
stdio |
傳輸模式:stdio 或 http |
MCP_PORT |
否 |
3000 |
HTTP 服務器端口(使用 http 傳輸時) |
MCP_STATELESS |
否 |
false |
設置為 true 以啟用無狀態模式 |
🌐 HTTP 傳輸
服務器支持帶有 SSE 流的 HTTP 傳輸,允許基於 Web 的 MCP 客戶端和遠程連接。
以 HTTP 模式啟動
MCP_TRANSPORT=http MCP_PORT=3000 INFOMANIAK_API_TOKEN=your-token npx infomaniak-mcp-server
MCP_TRANSPORT=http MCP_PORT=3000 INFOMANIAK_API_TOKEN=your-token node build/index.js
HTTP 端點
| 端點 |
方法 |
描述 |
/health |
GET |
健康檢查 - 返回服務器狀態 |
/mcp |
POST |
發送 JSON-RPC 消息(初始化、工具調用等) |
/mcp |
GET |
打開 SSE 流以接收服務器到客戶端的通知 |
/mcp |
DELETE |
終止會話 |
/mcp/sessions |
GET |
列出活動會話(用於調試) |
會話模式
- 有狀態(默認):在請求之間保持會話狀態。每個客戶端在初始化後會在
Mcp-Session-Id 標頭中獲得一個唯一的會話 ID。
- 無狀態:每個請求都是獨立的。對於無服務器部署,設置
MCP_STATELESS=true。
Docker 部署
FROM node:20-alpine
WORKDIR /app
RUN npm install -g infomaniak-mcp-server
ENV MCP_TRANSPORT=http
ENV MCP_PORT=3000
EXPOSE 3000
CMD ["infomaniak-mcp-server"]
docker build -t infomaniak-mcp .
docker run -p 3000:3000 -e INFOMANIAK_API_TOKEN=your-token infomaniak-mcp
從 Web 客戶端連接
const initResponse = await fetch('http://localhost:3000/mcp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json, text/event-stream'
},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'initialize',
params: { protocolVersion: '2025-03-26', capabilities: {}, clientInfo: { name: 'my-client', version: '1.0.0' } },
id: 1
})
});
const sessionId = initResponse.headers.get('Mcp-Session-Id');
const response = await fetch('http://localhost:3000/mcp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json, text/event-stream',
'Mcp-Session-Id': sessionId
},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'tools/list',
id: 2
})
});
🛠️ 可用工具
賬戶與個人資料
| 工具 |
描述 |
infomaniak_ping |
測試 API 連接性 |
infomaniak_get_profile |
獲取當前用戶個人資料 |
infomaniak_list_accounts |
列出所有可訪問的賬戶 |
infomaniak_get_account |
獲取賬戶詳細信息 |
infomaniak_list_products |
列出賬戶產品 |
域名管理
| 工具 |
描述 |
infomaniak_list_domains |
列出所有域名 |
infomaniak_get_domain |
獲取域名詳細信息 |
infomaniak_list_dns_records |
列出 DNS 記錄 |
infomaniak_create_dns_record |
創建 DNS 記錄(A、AAAA、CNAME、MX、TXT 等) |
infomaniak_update_dns_record |
更新 DNS 記錄 |
infomaniak_delete_dns_record |
刪除 DNS 記錄 |
電子郵件服務
| 工具 |
描述 |
infomaniak_list_mail_services |
列出郵件服務 |
infomaniak_get_mail_service |
獲取郵件服務詳細信息 |
infomaniak_list_mailboxes |
列出郵箱 |
infomaniak_get_mailbox |
獲取郵箱詳細信息 |
infomaniak_create_mailbox |
創建新郵箱 |
infomaniak_update_mailbox |
更新郵箱 |
infomaniak_delete_mailbox |
刪除郵箱 |
infomaniak_add_mailbox_alias |
添加郵箱別名 |
infomaniak_delete_mailbox_alias |
刪除郵箱別名 |
網站託管
| 工具 |
描述 |
infomaniak_list_web_hostings |
列出網站託管服務 |
infomaniak_get_web_hosting |
獲取託管服務詳細信息 |
infomaniak_list_sites |
列出網站 |
infomaniak_get_site |
獲取網站詳細信息 |
infomaniak_create_site |
創建新網站 |
infomaniak_update_site |
更新網站 |
infomaniak_delete_site |
刪除網站 |
infomaniak_list_databases |
列出數據庫 |
infomaniak_get_database |
獲取數據庫詳細信息 |
infomaniak_create_database |
創建數據庫 |
infomaniak_delete_database |
刪除數據庫 |
雲存儲
| 工具 |
描述 |
infomaniak_list_kdrives |
列出 kDrive |
infomaniak_get_kdrive |
獲取 kDrive 詳細信息 |
infomaniak_list_swiss_backups |
列出瑞士備份 |
infomaniak_get_swiss_backup |
獲取備份詳細信息 |
infomaniak_list_swiss_backup_slots |
列出備份插槽 |
基礎設施
| 工具 |
描述 |
infomaniak_list_vps |
列出 VPS 實例 |
infomaniak_get_vps |
獲取 VPS 詳細信息 |
infomaniak_reboot_vps |
重啟 VPS |
infomaniak_shutdown_vps |
關閉 VPS |
infomaniak_boot_vps |
啟動 VPS |
infomaniak_list_dedicated_servers |
列出專用服務器 |
infomaniak_get_dedicated_server |
獲取服務器詳細信息 |
infomaniak_reboot_dedicated_server |
重啟服務器 |
證書與賬單
| 工具 |
描述 |
infomaniak_list_certificates |
列出 SSL 證書 |
infomaniak_get_certificate |
獲取證書詳細信息 |
infomaniak_list_invoices |
列出發票 |
infomaniak_get_invoice |
獲取發票詳細信息 |
高級功能
| 工具 |
描述 |
infomaniak_api_call |
對任何端點進行自定義 API 調用 |
💻 使用示例
列出所有賬戶
"列出我所有的 Infomaniak 賬戶"
管理 DNS 記錄
"為 www.example.com 添加一個指向 192.168.1.100 的 A 記錄"
"顯示 mydomain.ch 的所有 DNS 記錄"
"從 example.com 刪除 ID 為 12345 的 TXT 記錄"
創建郵箱
"創建一個新的電子郵件地址 info@mydomain.com,密碼為 SecurePass123"
檢查基礎設施
"顯示我所有 VPS 實例的狀態"
"重啟 ID 為 456 的 VPS"
自定義 API 調用
"對 /1/account 進行 GET 請求以查看所有賬戶詳細信息"
🔧 開發
環境搭建
git clone https://github.com/YOUR_USERNAME/infomaniak-mcp-server.git
cd infomaniak-mcp-server
npm install
構建項目
npm run build
監聽模式
npm run dev
使用 MCP 檢查器進行測試
INFOMANIAK_API_TOKEN=your-token npm run inspector
⚠️ API 速率限制
Infomaniak API 的速率限制為 每分鐘 60 個請求。在使用自動化操作時,請注意請求頻率。
🐛 故障排除
"INFOMANIAK_API_TOKEN 環境變量是必需的"
確保你已在 MCP 客戶端配置中設置了 INFOMANIAK_API_TOKEN。
"Infomaniak API 錯誤 (401)"
你的 API 令牌可能無效或已過期。從 Infomaniak 管理器生成一個新的令牌。
"Infomaniak API 錯誤 (403)"
你的令牌沒有所需的作用域。創建一個具有適當權限的新令牌。
"Infomaniak API 錯誤 (429)"
速率限制已超出。等待一段時間後再進行更多請求。
🤝 貢獻
歡迎貢獻代碼!請閱讀我們的 貢獻指南 以獲取詳細信息。
- 分叉倉庫。
- 創建你的功能分支 (
git checkout -b feature/amazing-feature)。
- 提交你的更改 (
git commit -m 'feat: add amazing feature')。
- 推送到分支 (
git push origin feature/amazing-feature)。
- 打開一個拉取請求。
📄 許可證
本項目採用 MIT 許可證 - 有關詳細信息,請參閱 LICENSE 文件。
🔗 資源
🙏 致謝
為 Infomaniak 和 MCP 社區用心打造 ❤️