EnergyPlus
STDIO提供35个EnergyPlus建筑能耗仿真工具的MCP服务器
提供35个EnergyPlus建筑能耗仿真工具的MCP服务器
A Model Context Protocol (MCP) server that provides 35 comprehensive tools for working with EnergyPlus building energy simulation models. This server enables AI assistants and other MCP clients to load, validate, modify, and analyze EnergyPlus IDF files through a standardized interface.
Version: 0.1.0
EnergyPlus Compatibility: 25.1.0
Python: 3.10+
EnergyPlus MCP Server makes EnergyPlus building energy simulation accessible to AI assistants and automation tools through the Model Context Protocol.
Key Features:
Choose the appropriate setup for your AI assistant or IDE:
Build the Docker image (one-time setup):
git clone https://github.com/tsbyq/EnergyPlus_MCP.git cd EnergyPlus_MCP/.devcontainer docker build -t energyplus-mcp-dev .
Configure Claude Desktop:
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{ "mcpServers": { "energyplus": { // Server name shown in Claude Desktop "command": "docker", // Main command to execute "args": [ "run", // Docker subcommand to run a container "--rm", // Remove container after it exits (cleanup) "-i", // Interactive mode for stdio communication "-v", "/path/to/EnergyPlus-MCP:/workspace", // Mount local dir to container "-w", "/workspace/energyplus-mcp-server", // Working dir in container "energyplus-mcp-dev", // Docker image name we built "uv", "run", "python", "-m", "energyplus_mcp_server.server" // Server startup command ] } } }
Important:
/path/to/EnergyPlus-MCP with your actual repository path//) when adding to the actual config file, as JSON doesn't support commentsRestart Claude Desktop and the EnergyPlus server should connect automatically.
Build the Docker image (same as Claude Desktop step 1 above)
Configure VS Code:
Add to .vscode/settings.json in your project:
{ "mcp.servers": { "energyplus": { // Server name shown in VS Code "command": "docker", // Main command to execute "args": [ "run", // Docker subcommand to run a container "--rm", // Remove container after it exits (cleanup) "-i", // Interactive mode for stdio communication "-v", "${workspaceFolder}:/workspace", // Mount workspace to container "-w", "/workspace/energyplus-mcp-server", // Working dir in container "energyplus-mcp-dev", // Docker image name we built "uv", "run", "python", "-m", "energyplus_mcp_server.server" // Server startup command ] } } }
Important: Remove all comments (text after //) when adding to the actual config file
Restart VS Code for the changes to take effect.
Build the Docker image (same as Claude Desktop step 1 above)
Configure Cursor:
Add to ~/.cursor/mcp.json:
{ "mcpServers": { "energyplus": { // Server name shown in Cursor "command": "docker", // Main command to execute "args": [ "run", // Docker subcommand to run a container "--rm", // Remove container after it exits (cleanup) "-i", // Interactive mode for stdio communication "-v", "/path/to/EnergyPlus-MCP:/workspace", // Mount local dir to container "-w", "/workspace/energyplus-mcp-server", // Working dir in container "energyplus-mcp-dev", // Docker image name we built "uv", "run", "python", "-m", "energyplus_mcp_server.server" // Server startup command ] } } }
Important:
/path/to/EnergyPlus-MCP with your actual repository path//) when adding to the actual config file, as JSON doesn't support commentsRestart Cursor for the changes to take effect.
For contributors who want to modify or extend the MCP server:
The easiest development setup with all dependencies pre-configured.
Prerequisites:
Steps:
Clone and open in VS Code:
git clone https://github.com/tsbyq/EnergyPlus_MCP.git cd EnergyPlus_MCP code .
Click "Reopen in Container" when prompted (or press Ctrl+Shift+P → "Dev Containers: Reopen in Container")
The container automatically installs EnergyPlus 25.1.0 and all dependencies
For direct Docker development without VS Code:
# Clone repository git clone https://github.com/tsbyq/EnergyPlus_MCP.git cd EnergyPlus_MCP # Build container docker build -t energyplus-mcp-dev -f .devcontainer/Dockerfile . # Run container docker run -it --rm -v "$(pwd)":/workspace -w /workspace/energyplus-mcp-server energyplus-mcp-dev bash # Inside container, install dependencies uv sync --extra dev
For local development (requires EnergyPlus installation):
Prerequisites:
# Clone and install git clone https://github.com/tsbyq/EnergyPlus_MCP.git cd EnergyPlus_MCP/energyplus-mcp-server uv sync --extra dev # Run server for testing uv run python -m energyplus_mcp_server.server
The server provides 35 tools organized into 5 categories:
load_idf_model - Load and validate IDF filesvalidate_idf - Comprehensive model validationlist_available_files - Browse sample files and weather datacopy_file - Intelligent file copying with path resolutionget_model_summary - Extract basic model informationcheck_simulation_settings - Review simulation control settingsmodify_simulation_control - Modify simulation parametersmodify_run_period - Adjust simulation time periodsget_server_configuration - Get server configuration infolist_zones - List all thermal zones with propertiesget_surfaces - Get building surface informationget_materials - Extract material definitionsinspect_schedules - Analyze all schedule objectsinspect_people - Analyze occupancy settingsinspect_lights - Analyze lighting loadsinspect_electric_equipment - Analyze equipment loadsget_output_variables - Get/discover output variablesget_output_meters - Get/discover energy metersmodify_people - Update occupancy settingsmodify_lights - Update lighting loadsmodify_electric_equipment - Update equipment loadschange_infiltration_by_mult - Modify infiltration ratesadd_window_film_outside - Add window filmsadd_coating_outside - Apply surface coatingsadd_output_variables - Add output variablesadd_output_meters - Add energy metersrun_energyplus_simulation - Execute simulationscreate_interactive_plot - Generate HTML visualizationsdiscover_hvac_loops - Find all HVAC loopsget_loop_topology - Get HVAC loop detailsvisualize_loop_diagram - Generate HVAC diagramsget_server_status - Check server healthget_server_logs - View recent logsget_error_logs - Get error logsclear_logs - Clear/rotate log filesLoad a model:
{ "tool": "load_idf_model", "arguments": { "idf_path": "sample_files/1ZoneUncontrolled.idf" } }
Inspect zones:
{ "tool": "list_zones", "arguments": { "idf_path": "sample_files/1ZoneUncontrolled.idf" } }
Run simulation:
{ "tool": "run_energyplus_simulation", "arguments": { "idf_path": "sample_files/1ZoneUncontrolled.idf", "weather_file": "sample_files/USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw", "annual": true } }
Create visualization:
{ "tool": "create_interactive_plot", "arguments": { "output_directory": "outputs/1ZoneUncontrolled", "file_type": "variable" } }
HVAC System Analysis:
{ "tool": "discover_hvac_loops", "arguments": { "idf_path": "sample_files/5ZoneAirCooled.idf" } }
Generate HVAC Diagram:
{ "tool": "visualize_loop_diagram", "arguments": { "idf_path": "sample_files/5ZoneAirCooled.idf", "loop_name": "VAV Sys 1", "format": "png" } }
Discover Output Variables:
{ "tool": "get_output_variables", "arguments": { "idf_path": "sample_files/5ZoneAirCooled.idf", "discover_available": true, "run_days": 1 } }
Test tools interactively:
cd energyplus-mcp-server uv run mcp-inspector energyplus_mcp_server.server
The server follows a layered architecture:
┌─────────────────────────┐
│ MCP Protocol Layer │ FastMCP server handling client communications
├─────────────────────────┤
│ Tools Layer │ 35 tools organized into 5 categories
├─────────────────────────┤
│ Orchestration Layer │ EnergyPlus Manager & Config Module
├─────────────────────────┤
│ EnergyPlus Integration │ Direct interface to simulation engine
└─────────────────────────┘
Project Structure:
energyplus-mcp-server/
├── energyplus_mcp_server/
│ ├── server.py # FastMCP server with tools
│ ├── energyplus_tools.py # Core EnergyPlus integration
│ ├── config.py # Configuration management
│ └── utils/ # Specialized utilities
├── sample_files/ # Sample IDF and weather files
├── tests/ # Unit tests
└── pyproject.toml # Dependencies
The server auto-detects EnergyPlus installation and uses sensible defaults. Configuration can be customized via environment variables:
EPLUS_IDD_PATH: Path to EnergyPlus IDD fileEPLUS_SAMPLE_PATH: Custom sample files directoryEPLUS_OUTPUT_PATH: Output directory for resultsCommon Issues:
uv sync to install dependenciesDebugging:
get_server_statusget_server_logsget_error_logsuv run ruff check uv run black . uv run pytest
EnergyPlus Model Context Protocol Server (EnergyPlus-MCP) Copyright (c) 2025, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved.
This software is distributed under a modified BSD license. See License.txt for full license text and Copyright.txt for the copyright notice.
If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Intellectual Property Office at [email protected].
Government Rights Notice: This Software was developed under funding from the U.S. Department of Energy and the U.S. Government consequently retains certain rights. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, distribute copies to the public, prepare derivative works, and perform publicly and display publicly, and to permit others to do so.