mainframe-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DB2_HOST | No | Host for the Db2 REST services endpoint. | |
| DB2_PORT | No | Port for the Db2 REST services endpoint. | 50400 |
| CMCI_HOST | No | Host for the CICS CMCI REST endpoint. | |
| CMCI_PORT | No | Port for the CICS CMCI REST endpoint. | 1490 |
| LOG_LEVEL | No | Log level for server diagnostics; set to debug for per-call tracing. | |
| ZOSMF_CERT | No | Path to a client certificate for mTLS authentication. | |
| ZOSMF_HOST | Yes | z/OSMF hostname. | |
| ZOSMF_PORT | No | z/OSMF HTTPS port. | 443 |
| ZOSMF_USER | No | Basic-auth z/OSMF username. Provide either this plus ZOSMF_PASSWORD or ZOSMF_TOKEN. | |
| ZOSMF_TOKEN | No | Token for z/OSMF authentication. Provide either this or ZOSMF_USER and ZOSMF_PASSWORD. | |
| CMCI_CONTEXT | No | CICSplex name or region APPLID for CICS CMCI tools. | |
| DB2_LOCATION | No | Db2 subsystem location name for Db2 REST tools. | |
| DOCS_SOURCES | No | Comma-separated local .md/.txt files or directories used for internal documentation retrieval. | |
| MQ_REST_HOST | No | Host for the IBM MQ mqweb REST server used by MQ tools. | |
| MQ_REST_PORT | No | Port for the IBM MQ mqweb REST server. | |
| MQ_REST_USER | No | Username for the IBM MQ mqweb REST server. | |
| INCIDENT_USER | No | Username or email for incident-provider authentication. | |
| MCP_TRANSPORT | No | MCP transport to use. Use stdio for desktop clients or sse for HTTP+SSE deployments. | stdio |
| ZOSMF_PROFILE | No | Zowe team-config z/OSMF profile name to import. | defaults.zosmf |
| ZOSMF_USER_ID | No | End-user RACF ID to propagate via PassTicket authentication. | |
| CMCI_BASE_PATH | No | Base path for CICS CMCI REST requests. | /CICSSystemManagement |
| INCIDENT_TOKEN | No | Password, API token, or OAuth token for incident-provider authentication. | |
| ZOSMF_CERT_KEY | No | Path to the private key for the mTLS client certificate. | |
| ZOSMF_PASSWORD | No | Basic-auth z/OSMF password. Provide either this plus ZOSMF_USER or ZOSMF_TOKEN. | |
| INCIDENT_LABELS | No | Comma-separated labels applied to incident-provider records. | |
| MAX_AUDIT_LINES | No | Maximum number of RACF audit text lines parsed per query. | 500 |
| ZOSMF_BASE_PATH | No | Base path for z/OSMF or an API mediation layer / APIML gateway prefix. | |
| DOCS_MAX_RESULTS | No | Maximum number of documentation excerpts returned per search or incident bundle. | 3 |
| MQ_REST_PASSWORD | No | Password for the IBM MQ mqweb REST server. | |
| ZOSMF_TOKEN_FILE | No | Path to a file containing a JWT/APIML token that can be refreshed by a vault or credential-helper agent. | |
| ZOSMF_TOKEN_TYPE | No | z/OSMF token type. Use LTPA2 for classic z/OSMF session tokens, JWT or APIML for Bearer tokens. | LTPA2 |
| ZOWE_TEAM_CONFIG | No | Path to a Zowe team configuration file to reuse existing z/OSMF connection settings. | |
| INCIDENT_BASE_URL | No | Base URL for the configured incident provider. | |
| INCIDENT_PROVIDER | No | Incident provider to enable create_incident_ticket: servicenow, jira, or pagerduty. | |
| INCIDENT_RUNBOOKS | No | JSON map linking abend codes or patterns to runbook URLs. | |
| INCIDENT_SEVERITY | No | Default incident severity. | error |
| SECURITY_JCL_SCAN | No | Enable the pre-flight JCL scan for submit_jcl. | on |
| RACF_AUDIT_DATASET | No | Sequential dataset name containing RACF audit extract data for query_racf_audit. | |
| SCHEDULER_ADAPTERS | No | Configuration for scheduler integrations such as Control-M, CA 7, or IBM WLS REST APIs. | |
| SECURITY_READ_ONLY | No | Block write operations such as submit_jcl and approve_write unless explicitly disabled. | true |
| ZOSMF_CONSOLE_NAME | No | Extended MCS console name used for operator command tools. | |
| ZOSMF_ENVIRONMENTS | No | Multi-environment configuration for named z/OS systems such as DEV, TEST, UAT, and PROD. | |
| CAPACITY_MSU_RATING | No | MSU rating used for job capacity and MSU estimates. | |
| MAX_JES_SPOOL_FILES | No | Maximum number of JES spool files fetched per failure analysis. | 20 |
| NODE_EXTRA_CA_CERTS | No | Path to a CA certificate chain to trust for z/OSMF TLS. | |
| RACF_AUDIT_USS_PATH | No | USS log file path containing RACF audit extract data for query_racf_audit. | |
| RMF_METRICS_ENABLED | No | Enable or disable optional RMF REST metrics for get_smf_metrics. | |
| SECURITY_WRITE_DAYS | No | Allowed days for governed writes, for example 1-5. | every day |
| DOCS_REFRESH_SECONDS | No | Documentation index refresh TTL in seconds; 0 indexes once at startup. | 300 |
| MAX_JOB_LIST_RESULTS | No | Maximum number of jobs returned by list_jobs before agent-side filters. | 500 |
| MAX_JOB_OUTPUT_LINES | No | Maximum number of spool DD lines returned for a single job output or JCL read. | 5000 |
| SECURITY_POLICY_FILE | No | Path to a YAML policy-as-code file for RBAC, dataset/USS globs, change-ticket rules, and roles. | |
| ZOSMF_PASSTICKET_APP | No | PassTicket PTKTDATA application name used for identity propagation. | |
| INCIDENT_JIRA_PROJECT | No | Jira project key for created issues. | |
| MLC_MSU_MONTHLY_PRICE | No | Monthly MLC price per MSU used by estimate_mlc_cost. | |
| SECURITY_WRITE_WINDOW | No | Allowed change window for governed writes, for example 22:00-06:00. | off |
| DOCS_MAX_EXCERPT_CHARS | No | Maximum characters per documentation excerpt. | 1200 |
| MAX_DATASET_READ_LINES | No | Maximum number of lines returned when reading a dataset, PDS member, or USS file. | 2000 |
| MAX_FAILED_JOB_RESULTS | No | Maximum number of failed jobs returned by find_failed_jobs and intelligence correlation. | 100 |
| SECURITY_ALLOWED_TOOLS | No | Comma-separated allowlist of MCP tools that may be used. | |
| SECURITY_AUDIT_LOGGING | No | Enable audit logging for every tool call with credentials redacted. | |
| SECURITY_BLOCKED_TOOLS | No | Comma-separated blocklist of MCP tools that must be denied. | |
| SECURITY_MAX_JCL_BYTES | No | Maximum inline JCL submit size in bytes. | 65536 |
| STORAGE_FREE_THRESHOLD | No | Low-free-space alert threshold for DASD volume storage checks. | |
| SECURITY_WRITE_APPROVAL | No | Enable human-in-the-loop approval for governed JCL submissions. | off |
| INCIDENT_JIRA_ISSUE_TYPE | No | Jira issue type for created issues. | Bug |
| SECURITY_JCL_SCAN_STRICT | No | Treat JCL scan warnings as blocking errors. | off |
| SECURITY_WRITE_WINDOW_TZ | No | Timezone for the governed-write change window. | UTC |
| INCIDENT_SERVICENOW_TABLE | No | ServiceNow table used for incident creation. | incident |
| SECURITY_BLOCKED_PROGRAMS | No | Comma-separated list of utilities/programs blocked by the JCL pre-flight scan. | ADRDSSU, ICKDSF, IEHINITT |
| ZOSMF_REJECT_UNAUTHORIZED | No | Enforce TLS certificate validation. | true |
| SECURITY_ALLOWED_USS_PATHS | No | Allowed USS path prefixes for USS access boundaries. | |
| SECURITY_BLOCKED_JOB_CLASSES | No | Comma-separated JES job classes that submit_jcl must reject. | |
| INCIDENT_SERVICENOW_CALLER_ID | No | Optional ServiceNow caller sys_id for created incidents. | |
| INCIDENT_PAGERDUTY_ROUTING_KEY | No | PagerDuty Events API v2 routing key for incident creation. | |
| SECURITY_CHANGE_TICKET_PATTERN | No | Regex pattern requiring a change ticket on governed write operations. | off |
| SECURITY_ALLOWED_DATASET_PATTERNS | No | Allowed dataset HLQ/name patterns for dataset access boundaries. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_jobsB | List z/OS batch jobs filtered by owner, name prefix, status, or return code. Supports result capping. |
| get_job_statusA | Get the current status, return code, and failure indicator for a specific job. Optionally includes spool file inventory. |
| get_job_outputA | Retrieve spool output for a job. Lists spool files (with optional step filter), or returns one DD content (with optional text grep and line cap). |
| submit_jclA | Submit inline JCL to JES for execution. Governed: pre-flight scan, change ticket, change window, optional dry-run and human approval (SECURITY_* settings). |
| approve_writeA | Approve and execute a pending JCL submission (human-in-the-loop). Requires the one-time token from submit_jcl; active only when SECURITY_WRITE_APPROVAL=true. |
| analyze_job_failureA | Analyze a failed job: identify the abend code, failing/cancelled step, program, and a suggested fix. Produces a rich 3-section report. |
| get_job_jclA | Retrieve the JCL that was submitted for a job (from JESJCLIN / JESJCL / JCL spool DDs). Supports custom line limit. |
| list_datasetsB | List catalog datasets matching a high-level qualifier (and optional pattern). Supports filtering by DSORG and capping result count. |
| read_datasetA | Read the content of a sequential dataset or a PDS member (output is line-capped). Supports custom line limits and EBCDIC encoding hints. |
| search_datasetB | Search the catalog for datasets matching a wildcard pattern. Supports DSORG filter and result capping. |
| search_membersB | Search for members in a PDS, optionally filtered by wildcard pattern. Supports extended stats, result capping, and sorting. |
| get_dataset_infoA | Get catalog attributes (DSORG, type, RECFM, LRECL, BLKSIZE, volume) for a dataset without reading its content. Optionally includes member summary for PDS/PDSE. |
| list_uss_directoryB | List the contents of a USS (Unix System Services) directory. Supports type filter, sort order, and result capping. |
| read_uss_fileB | Read the contents of a USS file. Supports custom line limits and text grep filtering. |
| search_uss_filesA | Search for files/directories in a USS directory matching a wildcard name pattern. Supports type filter, sort, and result capping. |
| find_failed_jobsB | Find all failed jobs within a recent time window and summarize their abend/step. |
| summarize_abendsA | Aggregate abend codes across recent failed jobs, with counts and a short description. |
| system_health_summaryA | Produce a high-level operational health snapshot: overall status (HEALTHY/DEGRADED/CRITICAL), active and queued jobs, recent failure count, top abend codes with descriptions, and per-owner failure breakdown. |
| investigate_incidentA | Assemble a full incident bundle for a job: status, root-cause analysis (with abend reference and runbook link), internal-doc excerpts (RAG), complete spool inventory, and diagnostic excerpts from all relevant DDs. |
| lookup_abend_codeA | Look up z/OS abend codes (S0C7, S806, S0C4, S322, S0CB, U4038, etc.) with explanations, common causes, and remediation steps. Supports catalog search and category filter. |
| verify_zosmf_connectionB | Verify z/OSMF connectivity, authentication, and basic API availability. |
| compare_jobsA | Compare status, return code, and failure indicators for two jobs side by side. |
| get_user_jobs_summaryB | Summarize job counts by status for a specific owner (active, queued, failed, completed). |
| list_cics_regionsB | List CICS regions in a CMCI context. Supports status filter and result capping. |
| get_cics_region_statusA | Get the current status, version, and attributes of a CICS region via CMCI. |
| list_cics_transactionsA | List CICS transaction definitions installed in a region via CMCI. Supports prefix/status filters and result capping. |
| get_cics_region_statsB | Statistics and attributes of a CICS region from the CMCI CICSRegion resource (uptime, task counts, and other region-level fields your CMCI release provides). |
| cics_newcopyA | NEWCOPY a CICS program (phased-in fresh copy) via a CMCI resource action — gated write. Requires CMCI with actions enabled (CICS TS 5.6+). |
| cics_disable_transactionA | Disable a CICS local transaction via a CMCI SET action (ENABLESTATUS=DISABLED) — gated write. New work is refused; in-flight tasks finish. |
| list_db2_subsystemsA | List Db2 subsystems (locations) available via Db2 REST (requires DB2_LOCATION). |
| search_db2_catalogA | Search the Db2 catalog for tables, views, or aliases matching a name pattern. Includes row count, creation date, and remarks. |
| get_smf_metricsB | Retrieve SMF/RMF performance metrics from z/OSMF RMF and/or a configured SMF summary dataset. Supports category filtering. |
| query_racf_auditA | Query RACF security audit records from a configured USS path or dataset. Supports user, resource, event, result, class, and time-window filters. |
| security_posture_summaryA | Report the server security posture: terms acknowledgement, read-only mode, tool allowlists, TLS, audit logging, resource boundaries, and tiered security recommendations. |
| analyze_root_causeB | Deep AI-assisted root-cause analysis: full failure details, abend reference, similar-incident correlation, correlated abends, health score, and prioritized action items. |
| predict_batch_failuresA | Predict batch failure risk by scoring job names with recurring failures using a recency-weighted algorithm. Returns risk levels (LOW/MEDIUM/HIGH/CRITICAL), failure trends, and top abend codes. |
| list_environmentsA | List the named z/OS environments this server can reach (DEV/TEST/UAT/PROD, LPARs), with read-only and role policy per environment. |
| whoamiA | Show the acting identity for this session: user, mapped role, permissions summary, active environment, and data-protection status. |
| issue_console_commandA | Issue an MVS system/operator command through an extended MCS console (gated write). Examples: "D A,L", "D GRS,RES=(*,SYS1.PROCLIB)", "D WLM". |
| get_console_messagesA | Read the operations-log tail: recent unsolicited console messages (SYSLOG-style feed) from an extended MCS console. |
| hold_jobA | Hold a batch job via the JES2 "$HJ" command (gated write). The job stops at the next step boundary. |
| release_jobA | Release a held batch job via the JES2 "$OJ" command (gated write). |
| cancel_jobA | Cancel a running or queued job via the z/OSMF jobs API (gated write). |
| get_wlm_statusA | Display Workload Manager state via an MVS "D WLM" console command (gated write: a console command is issued). |
| ims_commandB | Issue an IMS command through the z/OS system console (gated write). Commands are prefixed with "/", e.g. "/DIS ACTIVE", "/DIS TRAN TRAN1", "/DIS PROG PGM1". |
| get_hsm_activityA | Recent DFSMShsm activity (recalls, migrations, backups) filtered from the operations-log tail. |
| analyze_logrecA | Submit an EREP (IFCEREP) report job against the LOGREC dataset, wait for completion, and summarize hardware/software error records (gated write: submits a batch job). |
| scheduler_job_statusB | Query an external batch scheduler (Control-M, CA 7, IBM Workload Automation) for job status via its REST API. Schedulers are configured with SCHEDULER_ADAPTERS. |
| job_dependenciesA | Analyze a job's JCL for batch dependencies: dataset inputs, outputs, updates per step, and PROCs invoked — the basis for predecessor/successor analysis. |
| mq_queue_statusA | Current depth of MQ queues (curdepth vs maxdepth, percent full) via MQ REST. Comma-separated names query several queues at once. |
| mq_channel_statusA | Channel status (RUNNING/RETRYING/STOPPED, connection counts) for a queue manager via MQ REST. Omit the channel name to list all. |
| get_volume_spaceA | DASD volume space inventory via z/OSMF Storage Management Interface. Flags volumes below the free-space threshold (STORAGE_FREE_THRESHOLD, default 10%). |
| get_job_capacityA | CPU consumption of a job — per step and total from JESMSGLG (IEF374I/IEF376I), with an MSU estimate when CAPACITY_MSU_RATING is configured. |
| estimate_mlc_costA | Estimate MLC cost attribution from CPU seconds or MSU consumption. Pricing assumptions come from CAPACITY_MSU_RATING and MLC_MSU_MONTHLY_PRICE. |
| summarize_dumpA | Summarize an abend dump (CEEDUMP, SYSMDUMP, SYSUDUMP): completion codes, failing module/offset, LE conditions, and section inventory — from spool DD or dataset. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| triage_failed_job | Triage one or more failed batch jobs end-to-end: find failures, assemble incident bundles, check runbooks and internal docs, and (when configured) file an incident ticket. |
| morning_batch_health_check | Run the overnight batch health check: overall system health, failed jobs, abend trends, capacity, and storage — then summarize for the morning standup. |
| investigate_abend | Deep-dive one abend code: built-in reference, internal documentation, recent occurrences, and affected jobs. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| abend-codes | The built-in z/OS abend code reference catalog (system and user codes with remediation). |
TDQS
Scored across 55 tools
Most tools target distinct resources or actions, but the failure/diagnosis cluster is crowded: find_failed_jobs, analyze_job_failure, investigate_incident, analyze_root_cause, summarize_abends, system_health_summary, and predict_batch_failures can be hard to choose between without careful reading. Similar overlap exists between list_datasets and search_dataset, and between list_uss_directory and search_uss_files, though descriptions generally clarify intent.
The set is predominantly snake_case with a verb-first pattern such as get_job_status, list_jobs, read_dataset, and submit_jcl. There are readable deviations including resource-first or noun-first names like cics_newcopy, cics_disable_transaction, mq_queue_status, scheduler_job_status, system_health_summary, and whoami, but overall the convention is mostly predictable.
At 55 tools, the surface is very large and imposes a significant selection burden on an agent even for a broad mainframe operations domain. While many tools are purpose-specific, the count goes well beyond the well-scoped 3-15 range and includes many niche diagnostics that could be consolidated.
The server has broad read coverage across JES, datasets, USS, CICS, Db2, RACF, SMF, console, MQ, storage, scheduling, and capacity. However, lifecycle coverage is uneven: dataset and USS operations lack create/update/delete, Db2 has catalog search but no query execution, and CICS has disable but no enable, creating notable gaps for a full mainframe operations surface.