Skip to content
VS Code

mainframe mcp server for VS Code

io.github.notharshhaa/mainframe-mcp-server

MCP server for IBM z/OS jobs, datasets, USS, and operational diagnostics via Zowe SDK.

client:VS Code transport:stdio runtime:npm

Install mainframe mcp server in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "zosmf-host",
      "description": "ZOSMF_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "zosmf-port",
      "description": "ZOSMF_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "zosmf-base-path",
      "description": "ZOSMF_BASE_PATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "zosmf-user",
      "description": "ZOSMF_USER",
      "password": true
    },
    {
      "type": "promptString",
      "id": "zosmf-password",
      "description": "ZOSMF_PASSWORD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "zosmf-token",
      "description": "ZOSMF_TOKEN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "zosmf-token-type",
      "description": "ZOSMF_TOKEN_TYPE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "zosmf-reject-unauthorized",
      "description": "ZOSMF_REJECT_UNAUTHORIZED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "log-level",
      "description": "LOG_LEVEL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "mcp-transport",
      "description": "MCP_TRANSPORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "mcp-sse-port",
      "description": "MCP_SSE_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-job-output-lines",
      "description": "MAX_JOB_OUTPUT_LINES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-dataset-read-lines",
      "description": "MAX_DATASET_READ_LINES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-jes-spool-files",
      "description": "MAX_JES_SPOOL_FILES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-audit-lines",
      "description": "MAX_AUDIT_LINES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "cmci-context",
      "description": "CMCI_CONTEXT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "cmci-host",
      "description": "CMCI_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "cmci-port",
      "description": "CMCI_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "cmci-base-path",
      "description": "CMCI_BASE_PATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "db2-location",
      "description": "DB2_LOCATION",
      "password": true
    },
    {
      "type": "promptString",
      "id": "db2-host",
      "description": "DB2_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "db2-port",
      "description": "DB2_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "db2-base-path",
      "description": "DB2_BASE_PATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "smf-summary-dataset",
      "description": "SMF_SUMMARY_DATASET",
      "password": true
    },
    {
      "type": "promptString",
      "id": "rmf-metrics-enabled",
      "description": "RMF_METRICS_ENABLED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "racf-audit-uss-path",
      "description": "RACF_AUDIT_USS_PATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "racf-audit-dataset",
      "description": "RACF_AUDIT_DATASET",
      "password": true
    },
    {
      "type": "promptString",
      "id": "security-read-only",
      "description": "SECURITY_READ_ONLY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "security-allowed-tools",
      "description": "SECURITY_ALLOWED_TOOLS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "security-blocked-tools",
      "description": "SECURITY_BLOCKED_TOOLS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "security-allowed-dataset-patterns",
      "description": "SECURITY_ALLOWED_DATASET_PATTERNS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "security-allowed-uss-paths",
      "description": "SECURITY_ALLOWED_USS_PATHS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "security-audit-logging",
      "description": "SECURITY_AUDIT_LOGGING",
      "password": true
    },
    {
      "type": "promptString",
      "id": "security-max-jcl-bytes",
      "description": "SECURITY_MAX_JCL_BYTES",
      "password": true
    }
  ],
  "servers": {
    "mainframe-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@notharshhaa/mainframe-mcp-server"
      ],
      "env": {
        "ZOSMF_HOST": "${input:zosmf-host}",
        "ZOSMF_PORT": "${input:zosmf-port}",
        "ZOSMF_BASE_PATH": "${input:zosmf-base-path}",
        "ZOSMF_USER": "${input:zosmf-user}",
        "ZOSMF_PASSWORD": "${input:zosmf-password}",
        "ZOSMF_TOKEN": "${input:zosmf-token}",
        "ZOSMF_TOKEN_TYPE": "${input:zosmf-token-type}",
        "ZOSMF_REJECT_UNAUTHORIZED": "${input:zosmf-reject-unauthorized}",
        "LOG_LEVEL": "${input:log-level}",
        "MCP_TRANSPORT": "${input:mcp-transport}",
        "MCP_SSE_PORT": "${input:mcp-sse-port}",
        "MAX_JOB_OUTPUT_LINES": "${input:max-job-output-lines}",
        "MAX_DATASET_READ_LINES": "${input:max-dataset-read-lines}",
        "MAX_JES_SPOOL_FILES": "${input:max-jes-spool-files}",
        "MAX_AUDIT_LINES": "${input:max-audit-lines}",
        "CMCI_CONTEXT": "${input:cmci-context}",
        "CMCI_HOST": "${input:cmci-host}",
        "CMCI_PORT": "${input:cmci-port}",
        "CMCI_BASE_PATH": "${input:cmci-base-path}",
        "DB2_LOCATION": "${input:db2-location}",
        "DB2_HOST": "${input:db2-host}",
        "DB2_PORT": "${input:db2-port}",
        "DB2_BASE_PATH": "${input:db2-base-path}",
        "SMF_SUMMARY_DATASET": "${input:smf-summary-dataset}",
        "RMF_METRICS_ENABLED": "${input:rmf-metrics-enabled}",
        "RACF_AUDIT_USS_PATH": "${input:racf-audit-uss-path}",
        "RACF_AUDIT_DATASET": "${input:racf-audit-dataset}",
        "SECURITY_READ_ONLY": "${input:security-read-only}",
        "SECURITY_ALLOWED_TOOLS": "${input:security-allowed-tools}",
        "SECURITY_BLOCKED_TOOLS": "${input:security-blocked-tools}",
        "SECURITY_ALLOWED_DATASET_PATTERNS": "${input:security-allowed-dataset-patterns}",
        "SECURITY_ALLOWED_USS_PATHS": "${input:security-allowed-uss-paths}",
        "SECURITY_AUDIT_LOGGING": "${input:security-audit-logging}",
        "SECURITY_MAX_JCL_BYTES": "${input:security-max-jcl-bytes}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

mainframe mcp server in other clients