Skip to content

Helm Scenario: Distributed Shared Platform

What you'll learn here: how to deploy the adapter independently from upstream services, which values define that separation, and when this shape makes more sense than a sidecar-style standalone pod.


What this scenario is for

This is the right shape when upstreams already exist as their own services.

Choose it when:

  • the adapter should be deployed independently of upstream servers
  • upstream teams own their own services
  • you want a cleaner platform boundary
  • you are moving toward a shared internal MCP gateway

Redis is not automatically required for this shape. If you keep a single adapter replica, disk-backed state can still be enough. Redis becomes important when multiple adapter replicas need to share the same session metadata.

One subtle but important point: this chart only mounts the shared storage into the adapter pod. If your upstream tools use upload_consumer or artifact_producer adapters, those external upstream services must also mount the same shared filesystem at the same effective path themselves. Shared metadata alone is not enough; the files must be reachable from both sides.


Suggested values

Save this as values-distributed.yaml:

If you want a ready-made file from the repository instead of rebuilding it by hand, start from values-distributed.yaml.

deploymentMode: distributed
replicaCount: 1

persistence:
  enabled: true
  existingClaim: remote-mcp-adapter-shared

environment:
  envFromSecret:
    name: remote-mcp-adapter-env
    keys: [MCP_ADAPTER_TOKEN]

ingress:
  enabled: true
  hosts:
    - host: mcp-gateway.example.com
      paths:
        - path: /
          pathType: Prefix

config:
  config.yaml:
    core:
      public_base_url: https://mcp-gateway.example.com
      auth:
        enabled: true
        token: ${MCP_ADAPTER_TOKEN}
    storage:
      root: /data/shared
    state_persistence:
      type: disk
    servers:
      - id: playwright
        mount_path: /mcp/playwright
        upstream:
          transport: streamable_http
          url: http://playwright.default.svc.cluster.local:8931/mcp
      - id: fetch
        mount_path: /mcp/fetch
        upstream:
          transport: streamable_http
          url: http://fetch.default.svc.cluster.local:8080/mcp

Commands

helm repo add remote-mcp-adapter https://aakashh242.github.io/remote-mcp-adapter
helm repo update
helm upgrade --install remote-mcp-adapter remote-mcp-adapter/remote-mcp-adapter \
  --namespace remote-mcp-adapter \
  --create-namespace \
  -f values-distributed.yaml

What this gives you

  • a clean adapter service boundary
  • independent upstream release cycles
  • room to grow into a shared internal platform
  • one place for auth, ingress, routing, and relay policy

Pair it with


Next steps