Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PCM600_BINNoPCM600 bin dir containing PCM600Cmd.exe. Auto-detected if not set.auto-detected
PCM_MCP_AUDIT_LOGNoJSONL audit path.$WORKSPACE/.pcm-mcp-audit.jsonl
PCM_MCP_WORKSPACEYesAllowlisted root for all file access. Required. No safe default; the server refuses to start without it.
PCM_MCP_CLI_TIMEOUTNoSeconds per PCM600Cmd call.600
PCM_MCP_ALLOW_WRITESNo1 enables mutating tools (none exist yet — Phase 4).0

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
scl_summaryA

Summarise an SCL file: header, substation topology, and IED inventory counts.

Start here when handed an unfamiliar .scd/.icd/.cid file.

scl_list_iedsA

List every IED in an SCL file with manufacturer, type, config version and address.

scl_get_iedB

Detail one IED: logical devices, logical nodes, datasets and control blocks.

scl_list_datasetsC

List datasets and their FCDA members. Optionally restrict to one IED.

scl_list_gooseA

List GOOSE publishers (GSEControl blocks) with their dataset and network addressing.

Cross-references the IED section against the Communication section, and flags any publisher that has no GSE address assigned — a common cause of GOOSE that silently never transmits.

scl_list_reportsC

List report control blocks with buffering, trigger options and timing.

scl_list_addressesB

List IP addressing per IED access point, grouped by subnetwork.

Flags duplicate IP addresses and duplicate GOOSE APPID/MAC values, both of which break communication in ways that are painful to diagnose on site.

scl_check_goose_bindingsA

Trace GOOSE publishers to subscribers and flag every way the binding can be broken.

Reports: publishers nobody subscribes to, publishers with no network address, subscriptions naming an IED or control block that does not exist, and — the subtle one — subscriptions to a signal the publisher's dataset does not actually carry.

Needs a file containing all the IEDs involved (an .scd), since bindings are cross-IED. A single-IED .cid cannot show them.

scl_validateA

Validate an SCL file's internal consistency, and optionally against an XSD schema.

The default check is referential integrity, which is what actually breaks commissioning: control blocks pointing at missing datasets, dataset members pointing at missing logical nodes, Communication entries for IEDs that are not in the file, duplicate IPs / GOOSE APPIDs / MACs, duplicate names, empty datasets, report blocks with no trigger.

xsd_path is optional. The IEC 61850-6 schema is a licensed IEC deliverable and is not bundled with this server (nor shipped with PCM600), so supply your own copy if you want schema validation as well. Schema validation only catches syntax — it will not find any of the referential problems above.

scl_diffA

Structurally compare two SCL files — the as-built vs. design review.

Compares the parsed model, not the text. PCM600 reorders elements and rewrites attributes on every export, so a text diff of two SCDs is unusable; a one-setting change can look like a thousand-line rewrite. This reports added / removed / changed per IED, logical device, dataset (including membership), GOOSE publisher, report control block, subscription, IP and GSE addressing, and substation bay.

apcmp_summaryA

Inspect a PCM600 .apcmp project archive without importing it.

Reports the project name to pass to PCM600Cmd -p, the IED inventory, and — critically — whether the connectivity packages the project needs are actually installed on this machine.

Run this BEFORE importing any .apcmp. PCM600's import defaults to silently ignoring IEDs whose object type it does not recognise, so importing a project whose connectivity package is missing can discard IEDs with no error reported.

The engineering data itself (SCL, parameters) lives in SQL Server databases inside the archive and cannot be read without a PCM600 import — this tool reads only the metadata sidecars.

apcmp_logicA

Read a project's ACT application logic out of a .apcmp archive without importing it.

PCM600 stores the ACT logic sheets as XML inside the project database, and that XML survives as readable text — so the application logic can be reviewed even when the connectivity package needed for an import is missing. Returns worksheet names, ACT signals, function-block instance names, and the IEC 61850 function instances referenced.

Also flags naming problems and structural asymmetry: the same negated concept written two different ways, names containing & or /, and — most usefully — concepts that exist for some devices in a group but not others (e.g. present for B1 and B2 but missing for B3), which is how an absent supervision or interlock hides in plain sight.

Limits, which matter: block-to-block wiring and all setting values are not recoverable this way. Absence of something in this output is not proof it is absent from the project. Use it for review, not as a substitute for opening the project.

pcm_cli_infoA

Report the detected PCM600 installation and prove the CLI is reachable.

Runs export-system-info, the only command that needs no project, so this doubles as a health check. Also lists installed connectivity packages, which bound what IED types can be handled at all.

pcm_export_scdA

Export a project's SCD file from the PCM600 database. Read-only; no relay contact.

project is the PCM600 project name, which is not necessarily the database name — if you have the .apcmp, run apcmp_summary first to get the right one. scl_version selects the IEC 61850 edition; omit it for the PCM600 default.

Refuses to overwrite an existing file unless overwrite=true, since an existing export is often the baseline you are about to diff against.

pcm_export_parametersA

Export one IED's parameters to .csv or .xrio (chosen by the file suffix).

technical_key is the PCM600 object-tree identity, e.g. AA1J1Q01A1not the SCL IED name. Read-only; no relay contact.

pcm_export_bulk_parametersA

Export .xrio parameter files for every IED in a project into one directory.

Needs no technical key, which makes it the easiest way to discover what IEDs a project holds and what their keys are. Read-only; no relay contact.

pcm_export_iedA

Export a single IED as an .apcmi file. Read-only; no relay contact.

pcm_export_projectA

Export a whole project as an .apcmp archive. Read-only; no relay contact.

Useful as a snapshot before any change — but note PCM600 has no CLI command to restore an .apcmp. Restoring one is a manual GUI import. Do not treat this as automated rollback.

pcm_validate_parametersA

Check a parameter file against an IED in the project and list deviations.

Validates only — imports nothing, changes nothing. This is the pre-flight you run before any parameter import, and the deviations it lists are what that import would change.

pcm_import_scdA

Import an SCD file into a PCM600 project. MODIFIES THE PROJECT.

Requires PCM_MCP_ALLOW_WRITES=1 and confirm=true. Before importing it snapshots the project, and it counts the IEDs in the source SCD; afterwards it re-exports the SCD and counts again, so a silent IED loss is reported rather than passing as success.

That verification matters: PCM600's import defaults to ignoring IEDs whose object type it does not recognise, without reporting an error. If a connectivity package is missing, IEDs vanish quietly. Run apcmp_summary or check pcm_cli_info connectivity packages first.

ln_overwrite_allowed / smt_overwrite_allowed permit overwriting existing logical-node and Signal Matrix configuration. Both default to off because both discard engineering work.

pcm_import_parametersA

Import a parameter file into one IED of a project. MODIFIES PROTECTION SETTINGS.

Requires PCM_MCP_ALLOW_WRITES=1 and confirm=true. Snapshots the project first, and runs validate-parameters beforehand so the deviations this import will apply are reported rather than applied blind.

These are protection relay settings. A wrong value can mean failure to trip on a fault or a spurious trip. Read the validation output and agree it with the user before confirming.

The signature-bypass option (--allow-unsigned-file) is not available through this server.

pcm_import_bulk_parametersA

Import .xrio parameter files for many IEDs at once. MODIFIES PROTECTION SETTINGS.

Requires PCM_MCP_ALLOW_WRITES=1 and confirm=true. Snapshots first. Note this has a wider blast radius than the single-IED import and there is no per-file pre-flight validation available for the bulk form — prefer pcm_import_parameters per IED when the change matters.

pcm_import_iedA

Import an IED file (.apcmi/.apcmt/.pcmi/.pcmt) into a project. MODIFIES THE PROJECT.

Requires PCM_MCP_ALLOW_WRITES=1 and confirm=true. target_level must be one of bay, voltage-level or substation. Snapshots first.

Prompts

Interactive templates invoked by user choice

NameDescription
review_scdGuided review of an SCD file: consistency, GOOSE bindings, addressing, naming.
commissioning_diffCompare a design baseline against an as-built export and report what changed.

Resources

Contextual data attached and managed by the client

NameDescription
config_resourceResolved server configuration and which tool tiers are currently available.
cli_help_resourceVerbatim `PCM600Cmd -h` output captured from the installed CLI, for self-orientation.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/controlLogix/PCM600-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server