Skip to content

v0.3.0

Latest

Choose a tag to compare

@qian-harvard qian-harvard released this 22 Aug 20:57
13ff9b8

PowerMCP 0.3.0 tracks PowerIO 0.9.0, moves every bundled server to the MCP 2 SDK, and adds two new connectors.

Breaking

  • MCP 2 SDK. Every server now imports mcp.server.mcpserver.MCPServer; the dependency floor is mcp>=2,<3. mcp.server.fastmcp is gone upstream, so a 1.x client environment will not work.
  • PowerIO 0.9.0 is the new core floor, and PowerIO is a core dependency — a bare pip install powermcp always provides the conversion server.
  • run_eigenvalue_analysis return shape. eigenvectors and state_variables are removed; they read attributes ANDES's EIG routine has never had and only ever returned []. n_eigenvalues and eigenvalues are retained.

New connectors

  • GenX (#51, #59) — capacity-expansion analysis over completed GenX.jl runs: capacity aggregation and bar plots, time-weighted diurnal generation profiles with pairwise scenario comparison, capacity-cost computation from reserve-margin duals, and SLURM job preview/submission. pip install "powermcp[genx]", then powermcp config set genx.repo_root <path>.
  • PLEXOSDB (#55) — plexosdb-mcp CRUD re-export plus translate_to_sienna / compare_solutions via r2x.

ANDES

  • run_eigenvalue_analysis was silently broken and is fixed (#52, #58). It read ss.EIG.vectors and ss.EIG.state_desc, neither of which exists, so hasattr guards returned [] for those fields from the day the tool was written. It now returns per-mode frequency, damping ratio, and participation factors, sorted least-damped first. Real eigenvalues report ±100% damping, matching ANDES's own report, so monotonic instability sorts to the top rather than into the middle of the list.
  • PSS/E raw+dyr loading. run_power_flow takes an optional dyr_path, so time-domain and small-signal analysis can operate on real dynamics rather than static topology alone. n_dynamic_generators and dynamic_models_loaded report what actually attached, across synchronous and inverter-based generator groups.

PowerIO interchange

Solver import tools accept .pio.json packages directly, with explicit operating_point / study_commit selection when a package carries stored state.

Hardening

Path containment (POWERIO_MCP_ALLOWED_ROOTS) now covers every model-supplied path argument across the bundled servers, including generated run directories. GenX job names are restricted to a safe character set and every value interpolated into a generated SLURM script is shell-quoted.

Install

pip install powermcp==0.3.0

Full changelog: v0.2.1...v0.3.0