Skip to content
VS Code

no crd for VS Code

io.github.nogoo9/no-crd

Dynamic pod spawner & proxy for ephemeral AI agent workspaces on Kubernetes without CRDs

client:VS Code transport:stdio runtime:npm

Install no crd in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "kubeconfig",
      "description": "KUBECONFIG",
      "password": true
    },
    {
      "type": "promptString",
      "id": "base-url",
      "description": "BASE_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "stateless",
      "description": "STATELESS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tls-cert",
      "description": "TLS_CERT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tls-key",
      "description": "TLS_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tls-ca",
      "description": "TLS_CA",
      "password": true
    },
    {
      "type": "promptString",
      "id": "node-tls-reject-unauthorized",
      "description": "NODE_TLS_REJECT_UNAUTHORIZED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "registry-url",
      "description": "REGISTRY_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "templates-dir",
      "description": "TEMPLATES_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "builtin-templates",
      "description": "BUILTIN_TEMPLATES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "auth-enabled",
      "description": "AUTH_ENABLED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "jwt-verification-required",
      "description": "JWT_VERIFICATION_REQUIRED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "jwt-secret",
      "description": "JWT_SECRET",
      "password": true
    },
    {
      "type": "promptString",
      "id": "jwt-public-key",
      "description": "JWT_PUBLIC_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "jwks-uri",
      "description": "JWKS_URI",
      "password": true
    },
    {
      "type": "promptString",
      "id": "introspection-endpoint",
      "description": "INTROSPECTION_ENDPOINT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "oauth-client-id",
      "description": "OAUTH_CLIENT_ID",
      "password": true
    },
    {
      "type": "promptString",
      "id": "oauth-client-secret",
      "description": "OAUTH_CLIENT_SECRET",
      "password": true
    },
    {
      "type": "promptString",
      "id": "jwt-audience",
      "description": "JWT_AUDIENCE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "auth-issuer",
      "description": "AUTH_ISSUER",
      "password": true
    },
    {
      "type": "promptString",
      "id": "auth-sub-jsonpath",
      "description": "AUTH_SUB_JSONPATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "auth-admin-role",
      "description": "AUTH_ADMIN_ROLE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "auth-admin-users",
      "description": "AUTH_ADMIN_USERS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "proxy-session-ttl",
      "description": "PROXY_SESSION_TTL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "proxy-session-secret",
      "description": "PROXY_SESSION_SECRET",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ui-enabled",
      "description": "UI_ENABLED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "themes-dir",
      "description": "THEMES_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "themes-configmap",
      "description": "THEMES_CONFIGMAP",
      "password": true
    },
    {
      "type": "promptString",
      "id": "docs-dir",
      "description": "DOCS_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "oauth-discovery-url",
      "description": "OAUTH_DISCOVERY_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "oauth-login-method",
      "description": "OAUTH_LOGIN_METHOD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ui-title",
      "description": "UI_TITLE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ui-subtitle",
      "description": "UI_SUBTITLE",
      "password": true
    }
  ],
  "servers": {
    "no-crd": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@nogoo9/no-crd"
      ],
      "env": {
        "KUBECONFIG": "${input:kubeconfig}",
        "BASE_URL": "${input:base-url}",
        "STATELESS": "${input:stateless}",
        "TLS_CERT": "${input:tls-cert}",
        "TLS_KEY": "${input:tls-key}",
        "TLS_CA": "${input:tls-ca}",
        "NODE_TLS_REJECT_UNAUTHORIZED": "${input:node-tls-reject-unauthorized}",
        "REGISTRY_URL": "${input:registry-url}",
        "TEMPLATES_DIR": "${input:templates-dir}",
        "BUILTIN_TEMPLATES": "${input:builtin-templates}",
        "AUTH_ENABLED": "${input:auth-enabled}",
        "JWT_VERIFICATION_REQUIRED": "${input:jwt-verification-required}",
        "JWT_SECRET": "${input:jwt-secret}",
        "JWT_PUBLIC_KEY": "${input:jwt-public-key}",
        "JWKS_URI": "${input:jwks-uri}",
        "INTROSPECTION_ENDPOINT": "${input:introspection-endpoint}",
        "OAUTH_CLIENT_ID": "${input:oauth-client-id}",
        "OAUTH_CLIENT_SECRET": "${input:oauth-client-secret}",
        "JWT_AUDIENCE": "${input:jwt-audience}",
        "AUTH_ISSUER": "${input:auth-issuer}",
        "AUTH_SUB_JSONPATH": "${input:auth-sub-jsonpath}",
        "AUTH_ADMIN_ROLE": "${input:auth-admin-role}",
        "AUTH_ADMIN_USERS": "${input:auth-admin-users}",
        "PROXY_SESSION_TTL": "${input:proxy-session-ttl}",
        "PROXY_SESSION_SECRET": "${input:proxy-session-secret}",
        "UI_ENABLED": "${input:ui-enabled}",
        "THEMES_DIR": "${input:themes-dir}",
        "THEMES_CONFIGMAP": "${input:themes-configmap}",
        "DOCS_DIR": "${input:docs-dir}",
        "OAUTH_DISCOVERY_URL": "${input:oauth-discovery-url}",
        "OAUTH_LOGIN_METHOD": "${input:oauth-login-method}",
        "UI_TITLE": "${input:ui-title}",
        "UI_SUBTITLE": "${input:ui-subtitle}"
      }
    }
  }
}

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

no crd in other clients