Control and monitor Weishaupt heating systems via the WEM Portal
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
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @disane-dev/weishaupt-wem-mcp-serverMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-disane87-weishaupt-wem-mcp-server": {
"command": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@disane-dev/weishaupt-wem-mcp-servernpmWeishaupt WEM Portal works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.