README
🚀 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 模式启动
# 使用 npx
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 客户端连接
// 步骤 1: 初始化会话
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');
// 步骤 2: 使用会话进行后续请求
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 提供的全面 API。
- Anthropic 开发的模型上下文协议。
- 开源社区。
为 Infomaniak 和 MCP 社区用心打造 ❤️
扫码联系在线客服