Vulcan MCP Server Guide

Last updated: 1/9/2026

This function is experimental. Users should check inputs and outputs carefully before relying on them, particularly when inputs are AI generated.

Why use an MCP Server?

MCP ("Model Context Protocol") is an open-source standard for connecting AI applications to external systems. See https://modelcontextprotocol.io/ for more details on this protocol.

Vulcan's MCP Server enables direct access to selected Vulcan functionality for desktop AI clients (e.g., Claude or Cursor) or command-line scripts - without using the browser app:

Turn CSV files in the format created by the Geometry section (saved in input/base_models) into HEM input files (saved in input/batch_parameters/base_json)

View and edit the batch parameter files used in the Scenarios section, and create a Batch Config

Run a Batch Config, and check for progress and available outputs

Calculate metrics in a similar way to the Results section

This can be helpful to automate design option testing, input sensitivity checks, or deeper analysis of outputs.

Set up Instructions

Requirements

Vulcan's MCP helper is installed with npm, so requires Node.js 18 or later and npm. For help installing Node.js and npm, see https://docs.npmjs.com/downloading-and-installing-node-js-and-npm

You will also need to create a vulcan-mcp-config.json file. This file can be created in the Integrations menu in the Profile menu dropdown, by clicking Generate Config File. It will be created in your workspace, as the MCP server interacts with files there in the same way as the browser app. This file contains a license_token associated with your Vulcan authentication, that remains valid for 30 days.

Installation

Install the helper globally:

npm install -g @vulcan-energy/mcp-helper

From your Vulcan workspace, start the helper:

vulcan-mcp-helper

By default, the helper runs at http://127.0.0.1:5000/mcp.

Cursor Desktop configuration

Add the following JSON to your Cursor MCP configuration (~/.cursor/mcp.json or Cursor settings). This is optional to enable direct tool use within Cursor.

{
  "mcpServers": {
    "vulcan": {
      "url": "http://127.0.0.1:5000/mcp"
    }
  }
}

Restart Cursor after changing MCP configuration.

Claude Code configuration

Once Claude Code and vulcan-mcp-helper are installed, connect Claude Code to the local MCP URL shown by the helper.

To verify that the helper is running, open:

curl http://127.0.0.1:5000/health

Tool use

Start the MCP server

To start the server, from your workspace run:

vulcan-mcp-helper

Or specify the config and port:

vulcan-mcp-helper --config /path/to/vulcan-mcp-config.json --port 5000

CLI options:

--config <path> - Path to config file (default: ./vulcan-mcp-config.json)

--port <port> - Port to listen on (default: 5000, or HELPER_PORT env var if provided)

--help, -h - Show help message

Expected outputs:

[MCP Helper] Config loaded from: /path/to/vulcan-mcp-config.json
[MCP Helper] Workspace: /path/to/workspace
[MCP Helper] Server running on http://127.0.0.1:5000
[MCP Helper] MCP endpoint: http://127.0.0.1:5000/mcp

Available tools

The following tools are available for use. When vulcan-mcp-helper is integrated as an MCP server with Cursor or Claude, the client will handle connecting to the server, discovering tools, calling them with proper formatting and handling responses.

vulcan_merge_csv_to_json: Convert CSV geometry (such as that created by the Geometry section) to JSON inputs that can be run in HEM

vulcan_list_parameters: List parameter categories

category (optional, string): Filter by category name (e.g., base_json, heat_source_wet)

vulcan_view_parameter: View parameter details

category (required, string): Parameter category (e.g., heat_source_wet, controls, base_json)

parameter_id (required, string): Parameter ID (filename without .json extension)

vulcan_save_parameter: Create/edit parameters

category (required, string): Parameter category

parameter_id (required, string): Parameter ID (filename without .json extension)

content (required, object): Parameter JSON content

markdown_content (optional, string): Optional markdown documentation

vulcan_create_batch_config: Create batch configurations

config_name (required, string): Configuration name (saved as {config_name}.json)

base_model (required, string): Base model filename (without .json extension)

weather_file (required, string): Weather file name (with or without .epw extension)

wrapper (optional, string): Model wrapper (e.g., fhs_compliance, fhs_assumptions, passthrough)

parameters (required, object): Object mapping category to array of parameter IDs

vulcan_run_batch: Run batch simulations asynchronously

config_name (required, string): Configuration name (with or without .json extension)

job_id (optional, string): Custom job ID (defaults to mcp_{uuid})

vulcan_get_batch_status: Check batch progress

job_id (optional, string): Job ID returned from vulcan_run_batch

config_name (optional, string): Configuration name (alternative to job_id)

Note: Either job_id or config_name must be provided.

vulcan_list_batch_models: List models from completed batch

config_name (required, string): Configuration name (with or without .json extension)

vulcan_list_csv_columns: List CSV columns for a model

config_name (required, string): Configuration name (with or without .json extension)

model_name (required, string): Model name (e.g., "scenario_1_0")

vulcan_calculate_metrics: Calculate metrics from standard core result files created by model runs. For compliance-only outputs, use the Vulcan app or inspect the relevant report files directly.

config_name (required, string): Configuration name (with or without .json extension)

model_names (required, array): Array of model names to calculate metrics for

metric_definitions (required, array): Array of metric definition objects:

id (optional, string)

name (optional, string)

column (optional, string)

function (optional, enum): "sum", "average", "peak", "min", "cost", "sumIf", "averageIf", "countIf"

comparator (optional, string): For conditional metrics (">=", "<=", ">", "<", "=")

threshold (optional, number): For conditional metrics

time_range (optional, object): Time range filter

start (optional, number): Start timestep

end (optional, number): End timestep

tariff_file_path (optional, string): Path to tariff CSV (required for cost metrics)

tariff_column_index (optional, number): Zero-based index of tariff column (required for cost metrics)

Tool use outside MCP clients

For normal use, call these tools through an MCP client such as Cursor or Claude. Direct HTTP use is mainly for advanced testing or custom integrations.