Skip to main content

An MCP server exposing EnergyPlus model authoring, validation, and simulation via idfkit

Project description

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 25.2 (16 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 32 tools across seven categories:

Category Tools What they do
Schema 4 Explore object types, fields, constraints, and valid references
Model Read 7 Load IDF/epJSON/OSM files, inspect objects, search, and trace references
Model Write 9 Create models, add/update/remove/rename/duplicate objects, save, and manage sessions
Validation 2 Schema validation and dangling-reference detection
Simulation 5 Run EnergyPlus, summarize results, query output variables, and export time series
Weather 2 Search weather stations worldwide and download EPW/DDY files
Documentation 3 Look up, 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

idfkit_mcp-0.5.0.tar.gz (215.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

idfkit_mcp-0.5.0-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

File details

Details for the file idfkit_mcp-0.5.0.tar.gz.

File metadata

  • Download URL: idfkit_mcp-0.5.0.tar.gz
  • Upload date:
  • Size: 215.0 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for idfkit_mcp-0.5.0.tar.gz
Algorithm Hash digest
SHA256 d6b76d825a1573ee4a5fc3a653694a5c0efab403b939c6651244d28c32ff7295
MD5 90f39bca9e5d37681b14d578bdfbcb78
BLAKE2b-256 e14c9fd3881f36904b90c5bac6c7a7a6072a64859101b6db24c14fee9fd637de

See more details on using hashes here.

File details

Details for the file idfkit_mcp-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: idfkit_mcp-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 37.1 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for idfkit_mcp-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e5742bb0bcbd256d430adb4a2a2596d058042fbdec02c260dcdd2094915c73d
MD5 b59f026783c2a41d3b0b5b2555ee7a10
BLAKE2b-256 dee9c896e891b2f8e39d38500b0b7929bbf4103bb665fa345a222172bfe4e85d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page