Skip to main content

idfkit-mcp

Release Build status codecov License

An MCP server that lets AI assistants work directly with EnergyPlus building energy models. Connect it to Claude, ChatGPT, Cursor, Codex, or any MCP-compatible client and use natural language to:

  • Build models from scratch — describe a building and let the agent create zones, surfaces, constructions, schedules, and HVAC systems
  • Edit existing models — load an IDF or epJSON file, rename objects, swap materials, adjust setpoints, and validate as you go
  • Run simulations — pick a weather file, launch EnergyPlus, and query or export the results without leaving the conversation
  • Explore the schema — ask what fields a ZoneHVAC:IdealLoadsAirSystem accepts, what values are valid, and get links to the official EnergyPlus documentation
  • Search the docs — full-text search across the EnergyPlus I/O Reference, Engineering Reference, and other documentation sets hosted on docs.idfkit.com

Built on idfkit, it supports EnergyPlus 8.9 through 26.2 (18 versions with bundled schemas). Schema exploration, model editing, and validation work out of the box with no external dependencies. Running simulations requires a local EnergyPlus install — the server discovers it automatically via PATH, the ENERGYPLUS_DIR env var, or standard OS install locations. A Docker image with EnergyPlus bundled is also available.

Documentation | GitHub

Tools

The server exposes 37 tools across ten categories, plus 13 MCP resources for read-only data access:

Category Tools What they do
Schema 4 Explore object types, fields, constraints, and valid references
Model Read 6 Load IDF/epJSON/OSM files, inspect objects, search, and read change history
Model Write 10 Create models, add/update/remove/rename/duplicate objects, save, and manage sessions
Validation 2 Schema validation and pre-simulation integrity checks
Simulation 8 Run EnergyPlus, query variables and tabular reports, export time series, analyze peak loads, and view reports
Weather 2 Search weather stations worldwide and download EPW/DDY files
Geometry 1 Interactive 3D building geometry viewer (MCP Apps)
Schedules 1 Interactive schedule heatmap viewer (MCP Apps)
Migration 1 Migrate IDF models forward across EnergyPlus versions
Documentation 2 Search and read EnergyPlus documentation from docs.idfkit.com

All tools return structured Pydantic models. Schema, validation, and search results include direct doc_url links to the relevant EnergyPlus documentation.

Session state (loaded model, simulation results, weather file) is persisted to disk automatically, so clients that restart the server between turns (e.g. Codex) can resume where they left off.

Installation

pip install idfkit-mcp

Or with uv:

uv add idfkit-mcp

Usage

Run as stdio MCP server (default):

idfkit-mcp

Run as Streamable HTTP MCP server:

idfkit-mcp --transport streamable-http --host 127.0.0.1 --port 8000

Quick MCP Setup

Add idfkit-mcp to your MCP client. Example for Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "idfkit": {
      "command": "uvx",
      "args": ["--from", "idfkit-mcp", "idfkit-mcp"]
    }
  }
}

See MCP Client Setup for all supported clients (Claude Desktop, Cursor, VS Code, Claude Code, Windsurf, ChatGPT, Codex, JetBrains, Cline, Continue, and Zed).

Development

This project uses uv for dependency management and Zensical for documentation.

Setup

# Clone the repository
git clone https://github.com/idfkit/idfkit-mcp.git
cd idfkit-mcp

# Install dependencies and pre-commit hooks
make install

Commands

make install    # Install dependencies and pre-commit hooks
make check      # Run linting, formatting, and type checks
make test       # Run tests with coverage
make docs       # Serve documentation locally
make docs-test  # Test documentation build
make docker-build  # Build base Docker image (no EnergyPlus)
make docker-build-sim ENERGYPLUS_TARBALL_URL=<linux-tarball-url>  # Build simulation image
make docker-build-sim DOCKER_PLATFORM=linux/amd64 ENERGYPLUS_TARBALL_URL=<linux-x86_64-tarball-url>  # Apple Silicon + x86 tarball
make docker-run    # Run Docker container

Releasing

  1. Bump the version: uv version --bump <major|minor|patch>
  2. Commit and push
  3. Create a new release on GitHub with a tag matching the version (e.g., 1.0.0)

The GitHub Action will automatically publish to PyPI.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Metadata

Release files for idfkit-mcp 0.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for idfkit-mcp 0.11.0
File Size Uploaded
idfkit_mcp-0.11.0.tar.gz 410.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for idfkit-mcp 0.11.0
File Interpreter ABI Platform
idfkit_mcp-0.11.0-py3-none-any.whl Python 3 none any Details

Total release size: 515.9 kB

Release files / idfkit_mcp-0.11.0.tar.gz

Download URL idfkit_mcp-0.11.0.tar.gz
Size 410.0 kB
Tags Source
SHA-256 checksum
How to use checksums
aa1803f979e3b154b9a1e89eeb18bc6c3908522096183ca105bb2d9015cd1ebd
BLAKE2b-256 checksum
How to use checksums
87df1c57de21c0fb52082640b5033c1b4f389fb48939a30f6d9115b095760782
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / idfkit_mcp-0.11.0-py3-none-any.whl

Download URL idfkit_mcp-0.11.0-py3-none-any.whl
Size 105.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
60cdcf1ba4e96d5df63fd4f2f35dd05162b03a806cf11e72fae4eda0c2050a0b
BLAKE2b-256 checksum
How to use checksums
12d95a6ca6a5f04d46e33e0c31cd03d35efb8bcaa3e593173401ee2f2e3f4f47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.11.0 This release

2 release files

0.10.0

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page