🚀 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 社区用心打造 ❤️