Skip to main content
Glama

ISO-toolset MCP

A vendor-neutral MCP gateway for starting, discovering, calling, and stopping security-vendor MCP runtimes without requiring every analyst to install each vendor integration or handle its credentials.

Status: v0.1 reference implementation. The local MCP gateway is runnable. The AWS template establishes the scale-to-zero control-plane skeleton. Okta, production authorization and the Fargate request/result worker are explicit integration boundaries, not completed features. The unmodified Cortex MCP package is included under Palo Alto Networks' separate vendor license.

What an analyst sees

Claude Code connects to one MCP server and sees five stable tools:

cortex-start
cortex-status
cortex-help
cortex-call
cortex-stop

The downstream call path is:

Claude Code
  -> ISO-toolset MCP gateway
  -> private Cortex MCP runtime
  -> Cortex HTTPS API
  -> sanitized MCP result back to Claude Code

cortex-call is an ISO-toolset broker tool, not an official Cortex tool. It takes a live downstream tool name and arguments, validates them against the schema discovered from Cortex, forwards the MCP call, and preserves useful errors without leaking sensitive runtime details.

Related MCP server: OpenXNet MCP Server

Local development

Requirements: Python 3.11+ and a Cortex MCP server running with Streamable HTTP. The vendor ZIP is available at vendor/cortex/cortex-mcp-1.0.5.zip; review its separate license and README before building or running it.

python -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[dev]'
export CORTEX_MCP_URL='http://127.0.0.1:8080/api/v1/stream/mcp'
iso-toolset

The default transport is stdio, suitable for a local MCP host. To expose the development Streamable HTTP endpoint:

export ISO_TOOLSET_TRANSPORT=streamable-http
iso-toolset

The endpoint is:

http://127.0.0.1:8000/ISO-toolset/v1/mcp

This local mode attaches to an existing Cortex process. Therefore cortex-stop closes the logical ISO-toolset session but does not terminate a process it does not own.

Error behavior

Known argument errors are returned before the downstream call:

{
  "ok": false,
  "error": {
    "code": "INVALID_TOOL_ARGUMENTS",
    "message": "Invalid arguments for 'get_assets' at $: 'asset_type' is required",
    "retryable": true,
    "details": {"path": "$", "validator": "required"}
  }
}

Claude can correct the parameters and retry. Downstream errors are sanitized, tagged, and returned rather than collapsed into a generic failure.

AWS scale-to-zero direction

infra/template.yaml declares:

  • a custom EventBridge bus and runtime-command rule;

  • encrypted SQS control and dead-letter queues;

  • a DynamoDB session table with TTL;

  • an ECS cluster and ephemeral Fargate task definition;

  • an outbound-only runtime security group;

  • a control Lambda that calls RunTask and StopTask;

  • least-scope starting IAM roles and CloudWatch logs.

CloudFormation creates the reusable infrastructure. A normal cortex-start does not run CloudFormation; it publishes a runtime command that ultimately calls ECS RunTask. A normal cortex-stop calls ECS StopTask.

Read the architecture and the threat model before deploying anything.

Deliberately not included

  • A prebuilt Cortex container image. Build the included, checksum-pinned vendor archive only after reviewing its license, then store the resulting image in a private ECR repository.

  • API keys, example secrets, tenant URLs, or organization identifiers.

  • A claim that the reference AWS template is production-ready.

  • GPU sweeps, EC2 shutdown automation, notifications, or write-capable tools.

Tests

python -m pip install -e '.[dev]'
ruff check .
pytest -q

License

The ISO-toolset source is MIT licensed. The Cortex MCP ZIP is not: it remains under the Palo Alto Networks license included inside the archive and at vendor/cortex/LICENSE. See third-party notices.

Available Tools

5 tools
cortex-callC

Validate and forward one call to an allowed tool on Cortex MCP.

Inputs: tool_name (required), session_id (required), tool_arguments (required). Returns: object

cortex-helpC

Return live Cortex tool schemas plus agent-ready safety context.

Inputs: session_id (required). Returns: object

cortex-startA

Start or attach to the configured Cortex MCP runtime and discover its tools.

Inputs: no named parameters. Returns: object

cortex-statusC

Return the current state of a Cortex runtime session.

Inputs: session_id (required). Returns: object

cortex-stopC

Stop a Cortex session; attached mode leaves an externally owned process running.

Inputs: session_id (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 5 tools

    Disambiguation4/5

    Each tool maps to a distinct lifecycle action (start, status, help, call, stop) so an agent can generally tell them apart. The only mild overlap is cortex-status vs cortex-help, since both are informational endpoints, but their descriptions (session state vs tool schemas/safety context) do differentiate them.

    Naming Consistency5/5

    All five tools use a uniform 'cortex-<verb>' naming pattern, making the set highly predictable. There is no mixing of casing or alternate verb styles.

    Tool Count5/5

    Five tools is well-scoped for a runtime proxy/wrapper, covering exactly the lifecycle operations needed. No tool feels extraneous or missing from the count.

    Completeness4/5

    The surface covers the full session lifecycle (start/attach, status, help/discovery, call, stop) with discovery folded into start and help. A dedicated 'list allowed tools' operation might be a minor convenience gap, but the core loop is fully covered.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables an agent to search approved MCP integrations and expose only the tools a given task needs, signing the user in once via browser-based OAuth and enforcing scopes, effects and budgets in code. It also acts as a single gateway connection so existing hosts can reach many servers with per-tenant isolation and audit events.
      MIT
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables teams to onboard remote MCP servers, enforce function-level allow lists and credential modes, and let developers expose permitted tool bundles through a unified MCP endpoint with search and execute functions while keeping permissions and auditing enforced.
      -