Connects AI assistants directly to Weishaupt heating systems through the WEM Portal API. Exposes device discovery, live parameter reading for temperatures and operating modes, and write operations to adjust target temperatures and schedules. Handles cookie-based session management with automatic login locking for concurrent requests. Start with wem_get_devices to discover your system topology, then use wem_get_overview for a complete snapshot across all modules including heat generators, heating circuits, and hot water systems. Useful if you want conversational control over your heating without opening the WEM Portal web interface or building custom home automation scripts.
Control and monitor your Weishaupt heating system with AI assistants via the WEM Portal
No installation needed. Configure your MCP client to run:
npx @disane-dev/weishaupt-wem-mcp-server
git clone https://github.com/Disane87/weishaupt-wem-mcp-server.git
cd weishaupt-wem-mcp-server
npm install
npm run build
Add to your Claude Desktop config:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"weishaupt-wem": {
"command": "npx",
"args": ["-y", "@disane-dev/weishaupt-wem-mcp-server"],
"env": {
"WEM_USERNAME": "your_email@example.com",
"WEM_PASSWORD": "your_password"
}
}
}
}
claude mcp add weishaupt-wem -- npx -y @disane-dev/weishaupt-wem-mcp-server
Set the environment variables WEM_USERNAME and WEM_PASSWORD before starting.
{
"mcpServers": {
"weishaupt-wem": {
"command": "node",
"args": ["/path/to/wem-mcp/build/index.js"],
"env": {
"WEM_USERNAME": "your_email@example.com",
"WEM_PASSWORD": "your_password"
}
}
}
}
| Variable | Required | Description |
|---|---|---|
WEM_USERNAME | Yes | Your WEM Portal email |
WEM_PASSWORD | Yes | Your WEM Portal password |
WEM_API_URL | No | API base URL (default: https://www.wemportal.com/app) |
| Tool | Description |
|---|---|
wem_get_devices | List all devices with modules. Call this first to discover IDs. |
wem_get_device_status | Get connection status of a device |
wem_get_overview | Full device overview: all modules with all parameters in one call |
wem_get_parameters | Get all parameters of a module with current values |
wem_get_parameter_meta | Get parameter metadata (names, min/max, enums, writable flag) |
wem_get_writable_parameters | List only adjustable parameters with ranges and options |
wem_read_parameters | Read specific parameter values by ID |
wem_write_parameter | Set a parameter value (e.g., target temperature) |
[!TIP] Start with
wem_get_devicesto discover yourdeviceId,moduleIndex, andmoduleType, then usewem_get_overviewfor a complete snapshot of your heating system.
1. wem_get_devices
-> Returns devices with modules (WE0=heat generator, HZK0=heating circuit, WW0=hot water)
2. wem_get_overview (deviceId)
-> Returns ALL modules with ALL parameters in one call
3. wem_get_writable_parameters (deviceId, moduleIndex, moduleType)
-> Shows what you can adjust, with min/max ranges
4. wem_write_parameter (deviceId, moduleIndex, moduleType, parameterId, numericValue)
-> Sets a writable parameter (e.g. target temperature)
| Type | Name | Description |
|---|---|---|
| 1 | SYSTEM | System overview |
| 2 | HZK | Heating circuit (temperatures, operating mode) |
| 3 | WW | Hot water (temperature, push, schedule) |
| 5 | TERMINAL | Control panel |
| 6 | GATEWAY | Communication gateway |
| 7 | WE | Heat generator (boiler/heat pump performance) |
| 9 | Device | Physical device unit |
| 10 | GROUND | Ground module |
| Command | Description |
|---|---|
npm run build | Build the project |
npm run watch | Watch mode (auto-rebuild on changes) |
npm start | Run server directly |
npm test | Test API connection |
npm run inspector | Official MCP Inspector (Web UI) |
npm run inspector:cli -- devices | CLI inspector for quick API tests |
[!NOTE] Make sure you can log in at wemportal.com before using this server.
| Issue | Solution |
|---|---|
| Authentication failed | Verify credentials, check if WEM Portal blocks after too many attempts |
| Connection timeout | Check internet, WEM Portal may be temporarily unavailable (30s default timeout) |
| Parameter values show 0 | Some parameters (e.g. room temperature) require a physical sensor connected to the device |
Contributions are welcome! Please open an issue or submit a pull request.
MIT - see LICENSE
disane.dev | Blog | GitHub | npm
WEM_USERNAMEYour WEM Portal email/username
WEM_PASSWORDYour WEM Portal password
WEM_API_URLWEM Portal API URL (default: https://www.wemportal.com/app)
io.github.infoinlet-marketplace/mcp-observability
betterdb-inc/monitor
com.mcparmory/datadog
thotischner/observability-mcp
io.github.tantiope/datadog-mcp
io.github.us-all/datadog