Skip to content

Releases: idfkit/idfkit-mcp

v0.9.0

28 Apr 01:36
a9676db

Choose a tag to compare

Highlights

  • Extensible objects (e.g. BuildingSurface:Detailed, Schedule:Compact) are now first-class in describe_object_type — a dedicated extensible_group block names the wrapper key, lists item fields, and includes a worked example. Heterogeneous fields (e.g. Schedule:Compact's number-or-string field) are reported correctly via union types like "number|string".
  • Deprecation warnings emitted by idfkit are now surfaced on add_object / update_object / batch_add_objects responses under a warnings key, so agents using deprecated forms (flat extensible kwargs like vertex_x_coordinate_2) see the signal and can self-correct.
  • Peak-load facility totals now correctly account for zone multipliers.
  • MCP session resolution is identity-based and no longer breaks when Mcp-Session-Id rotates.

Dependency bumps

  • idfkit 0.8.0 → 0.10.3

Pull requests

  • #58 — fix: account for zone multipliers in peak-load facility totals
  • #61 — Support extensible groups in object descriptions
  • #62 — Refactor extensible access and richer extensible-group examples
  • #63 — chore: bump idfkit to 0.10.2 and surface deprecation warnings on tool responses
  • #64 — chore: bump idfkit to 0.10.3 and add flat-kwargs deprecation regression tests

v0.8.1

23 Apr 02:27

Choose a tag to compare

Full Changelog: v0.8.0...v0.8.1

v0.8.0

23 Apr 02:17

Choose a tag to compare

What's Changed

Full Changelog: v0.7.0...v0.8.0

v0.7.0

16 Apr 19:17

Choose a tag to compare

What's New

New Tools

  • `migrate_model` (#55) — forward-migrates the loaded model across EnergyPlus versions via `idfkit.async_migrate` (which drives the `IDFVersionUpdater` transition binaries). Replaces the in-memory document on success; call `save_model(path=...)` to persist. `target_version` is optional — explicit `"X.Y.Z"` wins; when omitted, the tool uses the installed EnergyPlus version reported by `find_energyplus()`. Requires a local EnergyPlus install (the transition binaries ship with it).

New Resources

  • `idfkit://migration/report` (#55) — the latest migration report with per-step stdout/stderr (tail-truncated to 4 KB), structural schema diff across bundled versions, and version summary. Read after every `migrate_model` call for the full QA picture.

Improvements

  • `load_model` accepts uploads from FastMCP's `FileUpload` provider (#54) — remote connectors (Claude.ai, ChatGPT, Cursor) can drag-and-drop IDF/epJSON files directly in chat instead of needing a shared filesystem. The new `upload_name` parameter is mutually exclusive with the existing `file_path`; stdio/local clients are unaffected.
    • Custom `IdfUploadStore` keeps `read_file` off the LLM tool surface so `.epJSON` uploads don't round-trip their full content through the model (which would burn hundreds of thousands of tokens per upload). Bytes flow through a server-only `get_bytes()` accessor that materialises to a per-session cache dir; the LLM only sees the upload filename and the bounded `ModelSummary` returned by `load_model`.
  • Health check endpoint (and matching Dockerfile healthcheck) for production deployments; the Dockerfile-level HEALTHCHECK was subsequently removed in favour of ECS Express's native check.
  • Dockerfile restructured for cleaner user-permission handling.
  • Agent instructions updated to surface the new `load_model → migrate_model → validate_model → save_model` flow.

Bug Fixes

  • HTML and viewport now enforce a minimum height so the model/schedule/peak-loads viewers don't collapse inside narrow iframes.

Dependencies

  • Bumped `idfkit` from 0.7.1 to 0.8.0 — picks up EnergyPlus 26.1.0 schema support (17 versions now covered, 8.9.0 through 26.1.0) and the new `idfkit migrate` CLI that backs the `migrate_model` tool.

Full Changelog: v0.6.0...v0.7.0

v0.6.0

07 Apr 19:06

Choose a tag to compare

What's New

New Tools

  • check_model_integrity — domain QA: orphan objects, missing controls, boundary mismatches (#41)
  • get_zone_properties — typed summary of zone geometry, surfaces, constructions, and HVAC (#42)
  • get_change_log — session mutation history (#40)
  • query_simulation_table and list_simulation_reports — query any EnergyPlus output table (#43)
  • analyze_peak_loads — peak heating/cooling load decomposition with QA flags (#46)

Interactive Viewers (MCP Apps)

  • 3D geometry viewer — interactive WebGL model visualization (#34)
  • Schedule heatmap viewer — visual schedule inspection (#35)
  • Simulation report viewer — interactive HTML report browser (#53)

Improvements

  • Simulation QA diagnostics: unmet hours, end-use breakdown, classified warnings, actionable flags (#44)
  • Peak load QA/QC and simulation pre-flight checks (#46)
  • Hardened MCP tools against adversarial inputs (#39)
  • MCP resources for model summary, objects, references, and simulation results (#26, #30)
  • Migration to FastMCP v3 with middleware execution (#21)
  • Session persistence across server restarts (#14)
  • Per-session state isolation and tool call logging (#17)
  • Optimized docs search with pre-computed index (#31)

Bug Fixes

  • Fixed resource reads missing session context over streamable-http
  • Fixed SQL thread affinity errors with fresh handle per query (#37)
  • Fixed resource template MIME type defaulting to text/plain (#32)

Full Changelog: v0.5.1...v0.6.0

v0.5.1

27 Mar 14:34

Choose a tag to compare

Patch release to fix the v0.5.0 PyPI publish (lock file was out of sync).

See v0.5.0 release notes for the full changelog.

v0.5.0

27 Mar 14:30

Choose a tag to compare

Breaking Changes

Read tools migrated to MCP resources (#30)

Five read-only tools have been replaced by MCP resource URIs, reducing the tool surface:

Removed Tool Replacement Resource
get_model_summary() idfkit://model/summary
get_object() idfkit://model/objects/{type}/{name}
get_references() idfkit://model/references/{name}
lookup_documentation() idfkit://docs/{object_type}
get_results_summary() idfkit://simulation/results

The check_references() tool has also been removed — its functionality is integrated into validation.

Migration: Use MCP resource reads (resources/read) instead of tool calls for these endpoints.

Improvements

Optimized docs search with pre-computed index (#31)

search_docs and get_doc_section now use a pre-computed tokenized index per EnergyPlus version, avoiding redundant re-tokenization and HTML stripping on every call.

Performance & token efficiency (#30)

  • LRU cache for expensive schema introspection in describe_object_type
  • Optimized _find_object_by_name() to use collection index lookups before fallback scan
  • Field notes omitted from serialized descriptions to reduce token overhead
  • Doc URLs removed from validation error output

Internal

  • Session concurrency tests covering multi-session isolation (#31)
  • All read-only tests migrated to resource-based patterns (#30)
  • Added read_resource_json() test helper (#30)

v0.4.0

27 Mar 02:55
eb71e9b

Choose a tag to compare

Breaking Changes

Migrate to FastMCP v3 with middleware (#21)

The server now uses fastmcp>=3.1.0 as the MCP framework instead of the older mcp.server.fastmcp. The safe_tool decorator has been replaced by a centralized ToolExecutionMiddleware that handles session binding, error normalization, and logging for all tools. The public create_server() function has been removed — import mcp directly from idfkit_mcp.server instead.

Migration: If you were importing create_server, replace with:

from idfkit_mcp.server import mcp

Reduced default limits for token efficiency (#25)

Several tools now return fewer results by default to reduce token overhead:

Tool Old default New default
search_schema limit=50 limit=10
search_weather_stations limit=10 limit=5
search_docs max limit=20 max limit=10
search_docs text truncation 500 chars 250 chars
search_schema memo truncation 200 chars 100 chars

Migration: Pass explicit limit values if you need more results than the new defaults.

Tool parameter descriptions moved to schema (#25)

All tool parameters now use Annotated[type, Field(description=...)] instead of docstring Args: blocks. Tool docstrings are shortened to one-line summaries. This produces richer inputSchema in the MCP tools/list response but changes the shape of tool descriptions seen by clients.

New Features

MCP Resources (#26)

Four read-only MCP resources let clients subscribe to model state without tool calls:

URI Description
idfkit://model/summary Current model summary
idfkit://schema/{object_type} Full field schema for an object type
idfkit://model/objects/{object_type}/{name} All field values for a specific object
idfkit://simulation/results Latest simulation results summary

Response size capping (#20)

Tool responses are now capped to prevent client OOM on large models:

  • Validation errors/warnings truncated to 50 each (with errors_truncated/warnings_truncated flags)
  • check_references includes a returned count vs total dangling_count
  • get_doc_section respects max_length parameter (default 8000)

Tool registration via decorators (#24)

Tools are now registered with @mcp.tool() decorators instead of explicit register() calls, eliminating boilerplate.

Fixes

  • Fix ctx: Context parameter leaking into MCP tool schemas (#19)
  • Fix MCP output discovery and object serialization for get_object (field order preserved)

Internal

  • Migrate tests from direct function calls to async MCP Client protocol (#27)
  • Add token audit script for measuring tool response sizes (#28)
  • Fix documentation drift from recent code changes (#29)

v0.3.0

26 Mar 19:11
d0875dc

Choose a tag to compare

What's New

Comprehensive logging with configurable verbosity (#18)

  • --log-level CLI flag and IDFKIT_MCP_LOG_LEVEL env var — choose between DEBUG, INFO, WARNING, ERROR (default: INFO)
  • idfkit core library logs captured — parser, schema, validation, and geometry logs from the underlying idfkit library now flow through the server's log output
  • Per-tool logging — all 7 tool modules (schema, read, write, validation, simulation, weather, docs) emit contextual log messages:
    • DEBUG: search queries, parameters, resolved paths, result counts
    • INFO: model loads/saves, object mutations, simulation start/completion, weather downloads, validation summaries
    • WARNING: batch add failures, file overwrites, dangling references, empty model validation, simulation failures
  • Cleaner default output — CALL/OK per-tool traces demoted from INFO to DEBUG, so the default log stream focuses on significant operations
  • Documentation updated — new "Log Verbosity" section in installation docs, "Enable Debug Logging" added to troubleshooting guide

v0.2.0

26 Mar 17:20
db2c0a9

Choose a tag to compare

What's New

Singleton object support

  • get_object, update_object, remove_object, and duplicate_object now correctly handle EnergyPlus singleton types (SimulationControl, GlobalGeometryRules, etc.)
  • New resolve_object() helper centralizes object lookup with singleton fallback

Per-session state isolation

  • Each streamable-http connection gets its own isolated ServerState, preventing cross-session contamination when multiple clients connect concurrently
  • LRU eviction at 20 sessions; stdio transport behaves as before (single session)

Tool call logging

  • Every tool invocation now logs: tool name, session ID, wall-clock timing (ms), and truncated I/O payloads
  • Format: CALL search_schema | session=abc123 | {"query": "Zone"}

Dependencies

  • Bumped idfkit minimum to 0.6.2

Full Changelog

v0.1.0...v0.2.0