npm @disane-dev/weishaupt-wem-mcp-serverstdioMITupdated 2mo ago
Control and monitor your Weishaupt heating system with AI assistants via the WEM Portal
What can you do with Weishaupt WEM Portal?
Weishaupt WEM Portal MCP Server
Control and monitor your Weishaupt heating system with AI assistants via the WEM Portal
Features
- Device Discovery - List all devices and modules from your WEM Portal account
- Live Parameters - Read temperatures, pressure, operating modes with current values
- Full Overview - Get a complete snapshot of your entire heating system in one call
- Write Parameters - Adjust target temperatures, operating modes, schedules
- Device Status - Check connection status of your devices
- Writable Filter - List only the parameters you can actually change
- Session Management - Automatic cookie-based auth with login lock for concurrent requests
Quick Start
Install via npx (recommended)
No installation needed. Configure your MCP client to run:
npx @disane-dev/weishaupt-wem-mcp-server
Install from source
git clone https://github.com/Disane87/weishaupt-wem-mcp-server.git
cd weishaupt-wem-mcp-server
npm install
npm run build
Configuration
Add to your Claude Desktop config:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/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"
}
}
}
}
Environment Variables
| 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) |
Available Tools
| 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.
Typical Workflow
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)
Common Module Types
| 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 |
Development
| 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 |
Troubleshooting
[!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 |
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
License
MIT - see LICENSE
disane.dev | Blog | GitHub | npm
Install
Add Weishaupt WEM Portal to your client. Pick the one you use.
claude mcp add weishaupt-wem-mcp-server -- npx -y @disane-dev/weishaupt-wem-mcp-servercodex mcp add weishaupt-wem-mcp-server -- npx -y @disane-dev/weishaupt-wem-mcp-serveramp mcp add weishaupt-wem-mcp-server -- npx -y @disane-dev/weishaupt-wem-mcp-server{
"mcpServers": {
"weishaupt-wem-mcp-server": {
"command": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"weishaupt-wem-mcp-server": {
"command": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"weishaupt-wem-mcp-server","command":"npx","args":["-y","@disane-dev/weishaupt-wem-mcp-server"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"weishaupt-wem-mcp-server": {
"command": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"weishaupt-wem-mcp-server": {
"command": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"weishaupt-wem-mcp-server": {
"command": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"weishaupt-wem-mcp-server": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"weishaupt-wem-mcp-server": {
"command": {
"path": "npx",
"args": [
"-y",
"@disane-dev/weishaupt-wem-mcp-server"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y @disane-dev/weishaupt-wem-mcp-serverRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
8 tools
Weishaupt WEM Portal exposes 8 tools to a connected agent.
- 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)
Score
72 / 100
Good
- Documentation25/25
- Maintenance16/25
- Trust13/20
- Capability6/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 70 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 8 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.2.0Latest | Mar 19, 2026 |