A Model Context Protocol (MCP) server for interacting with the Infomaniak API. This server enables AI assistants like Claude to manage Infomaniak services including domains, email, web hosting, kDrive, and more.
- π Domain Management - List domains, full DNS record CRUD operations
- π§ Email Services - Manage mailboxes, aliases, and mail configurations
- π₯οΈ Web Hosting - Manage sites, PHP versions, and MySQL databases
- πΎ kDrive - Access and manage kDrive cloud storage
- π Swiss Backup - View and manage backup products
- π§ VPS & Servers - Control VPS instances and dedicated servers
- π SSL Certificates - View certificate information
- π° Invoicing - Access billing and invoice data
- π§ Generic API - Make custom API calls for advanced operations
- Node.js 18 or higher
- An Infomaniak account with API access
- An API token from Infomaniak
- Log in to your Infomaniak Manager
- Navigate to Account β API Tokens or visit token management
- Click "Create a token"
- Select the appropriate scopes for your needs:
account- Account managementdomain- Domain managementmail- Email servicesweb- Web hostingdrive- kDrive accessswiss_backup- Backup servicesvps- VPS managementdedicated- Dedicated serverscertificate- SSL certificatesinvoicing- Billing access
- Copy and securely store your token
npm install -g infomaniak-mcp-servergit clone https://github.com/YOUR_USERNAME/infomaniak-mcp-server.git
cd infomaniak-mcp-server
npm install
npm run buildAdd to your Claude Desktop configuration file:
| OS | Path |
|---|---|
| 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"
}
}
}
}Or if installed globally or from source:
{
"mcpServers": {
"infomaniak": {
"command": "node",
"args": ["/path/to/infomaniak-mcp-server/build/index.js"],
"env": {
"INFOMANIAK_API_TOKEN": "your-api-token-here"
}
}
}
}| Variable | Required | Default | Description |
|---|---|---|---|
INFOMANIAK_API_TOKEN |
Yes | - | Your Infomaniak API token |
MCP_TRANSPORT |
No | stdio |
Transport mode: stdio or http |
MCP_PORT |
No | 3000 |
HTTP server port (when using http transport) |
MCP_STATELESS |
No | false |
Set to true for stateless mode |
The server supports HTTP transport with SSE streaming, enabling web-based MCP clients and remote connections.
# Using npx
MCP_TRANSPORT=http MCP_PORT=3000 INFOMANIAK_API_TOKEN=your-token npx infomaniak-mcp-server
# From source
MCP_TRANSPORT=http MCP_PORT=3000 INFOMANIAK_API_TOKEN=your-token node build/index.js| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check - returns server status |
/mcp |
POST | Send JSON-RPC messages (initialize, tool calls, etc.) |
/mcp |
GET | Open SSE stream for server-to-client notifications |
/mcp |
DELETE | Terminate a session |
/mcp/sessions |
GET | List active sessions (for debugging) |
- Stateful (default): Maintains session state across requests. Each client gets a unique session ID returned in the
Mcp-Session-Idheader after initialization. - Stateless: Each request is independent. Set
MCP_STATELESS=truefor serverless deployments.
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"]# Build and run
docker build -t infomaniak-mcp .
docker run -p 3000:3000 -e INFOMANIAK_API_TOKEN=your-token infomaniak-mcp// Step 1: Initialize session
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');
// Step 2: Use session for subsequent requests
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
})
});| Tool | Description |
|---|---|
infomaniak_ping |
Test API connectivity |
infomaniak_get_profile |
Get current user profile |
infomaniak_list_accounts |
List all accessible accounts |
infomaniak_get_account |
Get account details |
infomaniak_list_products |
List account products |
| Tool | Description |
|---|---|
infomaniak_list_domains |
List all domains |
infomaniak_get_domain |
Get domain details |
infomaniak_list_dns_records |
List DNS records |
infomaniak_create_dns_record |
Create DNS record (A, AAAA, CNAME, MX, TXT, etc.) |
infomaniak_update_dns_record |
Update DNS record |
infomaniak_delete_dns_record |
Delete DNS record |
| Tool | Description |
|---|---|
infomaniak_list_mail_services |
List mail services |
infomaniak_get_mail_service |
Get mail service details |
infomaniak_list_mailboxes |
List mailboxes |
infomaniak_get_mailbox |
Get mailbox details |
infomaniak_create_mailbox |
Create new mailbox |
infomaniak_update_mailbox |
Update mailbox |
infomaniak_delete_mailbox |
Delete mailbox |
infomaniak_add_mailbox_alias |
Add email alias |
infomaniak_delete_mailbox_alias |
Remove email alias |
| Tool | Description |
|---|---|
infomaniak_list_web_hostings |
List web hostings |
infomaniak_get_web_hosting |
Get hosting details |
infomaniak_list_sites |
List sites |
infomaniak_get_site |
Get site details |
infomaniak_create_site |
Create new site |
infomaniak_update_site |
Update site |
infomaniak_delete_site |
Delete site |
infomaniak_list_databases |
List databases |
infomaniak_get_database |
Get database details |
infomaniak_create_database |
Create database |
infomaniak_delete_database |
Delete database |
| Tool | Description |
|---|---|
infomaniak_list_kdrives |
List kDrives |
infomaniak_get_kdrive |
Get kDrive details |
infomaniak_list_swiss_backups |
List Swiss Backups |
infomaniak_get_swiss_backup |
Get backup details |
infomaniak_list_swiss_backup_slots |
List backup slots |
| Tool | Description |
|---|---|
infomaniak_list_vps |
List VPS instances |
infomaniak_get_vps |
Get VPS details |
infomaniak_reboot_vps |
Reboot VPS |
infomaniak_shutdown_vps |
Shutdown VPS |
infomaniak_boot_vps |
Boot VPS |
infomaniak_list_dedicated_servers |
List dedicated servers |
infomaniak_get_dedicated_server |
Get server details |
infomaniak_reboot_dedicated_server |
Reboot server |
| Tool | Description |
|---|---|
infomaniak_list_certificates |
List SSL certificates |
infomaniak_get_certificate |
Get certificate details |
infomaniak_list_invoices |
List invoices |
infomaniak_get_invoice |
Get invoice details |
| Tool | Description |
|---|---|
infomaniak_api_call |
Make custom API calls to any endpoint |
"List all my Infomaniak accounts"
"Add an A record for www.example.com pointing to 192.168.1.100"
"Show all DNS records for mydomain.ch"
"Delete the TXT record with ID 12345 from example.com"
"Create a new email address info@mydomain.com with password SecurePass123"
"Show me the status of all my VPS instances"
"Reboot my VPS with ID 456"
"Make a GET request to /1/account to see all account details"
git clone https://github.com/YOUR_USERNAME/infomaniak-mcp-server.git
cd infomaniak-mcp-server
npm installnpm run buildnpm run devINFOMANIAK_API_TOKEN=your-token npm run inspectorThe Infomaniak API has a rate limit of 60 requests per minute. Be mindful of request frequency when using automation.
Ensure you've set the INFOMANIAK_API_TOKEN in your MCP client configuration.
Your API token may be invalid or expired. Generate a new token from Infomaniak Manager.
Your token doesn't have the required scope. Create a new token with appropriate permissions.
Rate limit exceeded. Wait before making more requests.
Contributions are welcome! Please read our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Infomaniak for their comprehensive API
- Anthropic for the Model Context Protocol
- The open-source community
Made with β€οΈ for the Infomaniak and MCP community
