Search / io.github.nogoo9/no-crd
no-crd
L0· runs locallyDynamic pod spawner & proxy for ephemeral AI agent workspaces on Kubernetes without CRDs
v0.18.0 · active · repository · descriptor JSON · versions
Search / io.github.nogoo9/no-crd
L0· runs locallyDynamic pod spawner & proxy for ephemeral AI agent workspaces on Kubernetes without CRDs
v0.18.0 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"no-crd": {
"command": "bunx",
"args": [
"--transport",
"stdio",
"--mode",
"cluster",
"--namespace",
"nogoo9",
"--port",
"3000",
"--host",
"0.0.0.0",
"--log-level",
"info",
"--disable-permission-checks",
"--cors-origin",
"*",
"--cors-methods",
"GET, POST, OPTIONS",
"--cors-headers",
"Content-Type, Authorization",
"--cors-allow-credentials",
"--auth-required-read-scope",
"--auth-required-write-scope",
"--auth-scope-jsonpath",
"$.scope",
"--auth-required-read-role",
"--auth-required-write-role",
"--auth-roles-jsonpath",
"$.realm_access.roles",
"@nogoo9/no-crd"
],
"env": {
"TLS_KEY": "${TLS_KEY}",
"JWT_SECRET": "${JWT_SECRET}",
"JWT_PUBLIC_KEY": "${JWT_PUBLIC_KEY}",
"OAUTH_CLIENT_SECRET": "${OAUTH_CLIENT_SECRET}",
"PROXY_SESSION_SECRET": "${PROXY_SESSION_SECRET}"
}
}
}
}claude mcp add no-crd -e "TLS_KEY=${TLS_KEY}" -e "JWT_SECRET=${JWT_SECRET}" -e "JWT_PUBLIC_KEY=${JWT_PUBLIC_KEY}" -e "OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}" -e "PROXY_SESSION_SECRET=${PROXY_SESSION_SECRET}" -- bunx --transport stdio --mode cluster --namespace nogoo9 --port 3000 --host 0.0.0.0 --log-level info --disable-permission-checks --cors-origin * --cors-methods "GET, POST, OPTIONS" --cors-headers "Content-Type, Authorization" --cors-allow-credentials --auth-required-read-scope --auth-required-write-scope --auth-scope-jsonpath "$.scope" --auth-required-read-role --auth-required-write-role --auth-roles-jsonpath "$.realm_access.roles" @nogoo9/no-crd[mcp_servers.no-crd]
command = "bunx"
args = ["--transport", "stdio", "--mode", "cluster", "--namespace", "nogoo9", "--port", "3000", "--host", "0.0.0.0", "--log-level", "info", "--disable-permission-checks", "--cors-origin", "*", "--cors-methods", "GET, POST, OPTIONS", "--cors-headers", "Content-Type, Authorization", "--cors-allow-credentials", "--auth-required-read-scope", "--auth-required-write-scope", "--auth-scope-jsonpath", "$.scope", "--auth-required-read-role", "--auth-required-write-role", "--auth-roles-jsonpath", "$.realm_access.roles", "@nogoo9/no-crd"]
env = { "TLS_KEY" = "${TLS_KEY}", "JWT_SECRET" = "${JWT_SECRET}", "JWT_PUBLIC_KEY" = "${JWT_PUBLIC_KEY}", "OAUTH_CLIENT_SECRET" = "${OAUTH_CLIENT_SECRET}", "PROXY_SESSION_SECRET" = "${PROXY_SESSION_SECRET}" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"no-crd": {
"type": "local",
"command": [
"bunx",
"--transport",
"stdio",
"--mode",
"cluster",
"--namespace",
"nogoo9",
"--port",
"3000",
"--host",
"0.0.0.0",
"--log-level",
"info",
"--disable-permission-checks",
"--cors-origin",
"*",
"--cors-methods",
"GET, POST, OPTIONS",
"--cors-headers",
"Content-Type, Authorization",
"--cors-allow-credentials",
"--auth-required-read-scope",
"--auth-required-write-scope",
"--auth-scope-jsonpath",
"$.scope",
"--auth-required-read-role",
"--auth-required-write-role",
"--auth-roles-jsonpath",
"$.realm_access.roles",
"@nogoo9/no-crd"
],
"enabled": true,
"environment": {
"TLS_KEY": "{env:TLS_KEY}",
"JWT_SECRET": "{env:JWT_SECRET}",
"JWT_PUBLIC_KEY": "{env:JWT_PUBLIC_KEY}",
"OAUTH_CLIENT_SECRET": "{env:OAUTH_CLIENT_SECRET}",
"PROXY_SESSION_SECRET": "{env:PROXY_SESSION_SECRET}"
}
}
}
}{
"mcpServers": {
"no-crd": {
"command": "bunx",
"args": [
"--transport",
"stdio",
"--mode",
"cluster",
"--namespace",
"nogoo9",
"--port",
"3000",
"--host",
"0.0.0.0",
"--log-level",
"info",
"--disable-permission-checks",
"--cors-origin",
"*",
"--cors-methods",
"GET, POST, OPTIONS",
"--cors-headers",
"Content-Type, Authorization",
"--cors-allow-credentials",
"--auth-required-read-scope",
"--auth-required-write-scope",
"--auth-scope-jsonpath",
"$.scope",
"--auth-required-read-role",
"--auth-required-write-role",
"--auth-roles-jsonpath",
"$.realm_access.roles",
"@nogoo9/no-crd"
],
"env": {
"TLS_KEY": "${TLS_KEY}",
"JWT_SECRET": "${JWT_SECRET}",
"JWT_PUBLIC_KEY": "${JWT_PUBLIC_KEY}",
"OAUTH_CLIENT_SECRET": "${OAUTH_CLIENT_SECRET}",
"PROXY_SESSION_SECRET": "${PROXY_SESSION_SECRET}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=no-crd&config=eyJjb21tYW5kIjoiYnVueCIsImFyZ3MiOlsiLS10cmFuc3BvcnQiLCJzdGRpbyIsIi0tbW9kZSIsImNsdXN0ZXIiLCItLW5hbWVzcGFjZSIsIm5vZ29vOSIsIi0tcG9ydCIsIjMwMDAiLCItLWhvc3QiLCIwLjAuMC4wIiwiLS1sb2ctbGV2ZWwiLCJpbmZvIiwiLS1kaXNhYmxlLXBlcm1pc3Npb24tY2hlY2tzIiwiLS1jb3JzLW9yaWdpbiIsIioiLCItLWNvcnMtbWV0aG9kcyIsIkdFVCwgUE9TVCwgT1BUSU9OUyIsIi0tY29ycy1oZWFkZXJzIiwiQ29udGVudC1UeXBlLCBBdXRob3JpemF0aW9uIiwiLS1jb3JzLWFsbG93LWNyZWRlbnRpYWxzIiwiLS1hdXRoLXJlcXVpcmVkLXJlYWQtc2NvcGUiLCItLWF1dGgtcmVxdWlyZWQtd3JpdGUtc2NvcGUiLCItLWF1dGgtc2NvcGUtanNvbnBhdGgiLCIkLnNjb3BlIiwiLS1hdXRoLXJlcXVpcmVkLXJlYWQtcm9sZSIsIi0tYXV0aC1yZXF1aXJlZC13cml0ZS1yb2xlIiwiLS1hdXRoLXJvbGVzLWpzb25wYXRoIiwiJC5yZWFsbV9hY2Nlc3Mucm9sZXMiLCJAbm9nb285L25vLWNyZCJdLCJlbnYiOnsiVExTX0tFWSI6IiR7VExTX0tFWX0iLCJKV1RfU0VDUkVUIjoiJHtKV1RfU0VDUkVUfSIsIkpXVF9QVUJMSUNfS0VZIjoiJHtKV1RfUFVCTElDX0tFWX0iLCJPQVVUSF9DTElFTlRfU0VDUkVUIjoiJHtPQVVUSF9DTElFTlRfU0VDUkVUfSIsIlBST1hZX1NFU1NJT05fU0VDUkVUIjoiJHtQUk9YWV9TRVNTSU9OX1NFQ1JFVH0ifX0%3D"
}{
"servers": {
"no-crd": {
"type": "stdio",
"command": "bunx",
"args": [
"--transport",
"stdio",
"--mode",
"cluster",
"--namespace",
"nogoo9",
"--port",
"3000",
"--host",
"0.0.0.0",
"--log-level",
"info",
"--disable-permission-checks",
"--cors-origin",
"*",
"--cors-methods",
"GET, POST, OPTIONS",
"--cors-headers",
"Content-Type, Authorization",
"--cors-allow-credentials",
"--auth-required-read-scope",
"--auth-required-write-scope",
"--auth-scope-jsonpath",
"$.scope",
"--auth-required-read-role",
"--auth-required-write-role",
"--auth-roles-jsonpath",
"$.realm_access.roles",
"@nogoo9/no-crd"
],
"env": {
"TLS_KEY": "${TLS_KEY}",
"JWT_SECRET": "${JWT_SECRET}",
"JWT_PUBLIC_KEY": "${JWT_PUBLIC_KEY}",
"OAUTH_CLIENT_SECRET": "${OAUTH_CLIENT_SECRET}",
"PROXY_SESSION_SECRET": "${PROXY_SESSION_SECRET}"
}
}
}
}{
"mcpServers": {
"no-crd": {
"command": "bunx",
"args": [
"--transport",
"stdio",
"--mode",
"cluster",
"--namespace",
"nogoo9",
"--port",
"3000",
"--host",
"0.0.0.0",
"--log-level",
"info",
"--disable-permission-checks",
"--cors-origin",
"*",
"--cors-methods",
"GET, POST, OPTIONS",
"--cors-headers",
"Content-Type, Authorization",
"--cors-allow-credentials",
"--auth-required-read-scope",
"--auth-required-write-scope",
"--auth-scope-jsonpath",
"$.scope",
"--auth-required-read-role",
"--auth-required-write-role",
"--auth-roles-jsonpath",
"$.realm_access.roles",
"@nogoo9/no-crd"
],
"env": {
"TLS_KEY": "${TLS_KEY}",
"JWT_SECRET": "${JWT_SECRET}",
"JWT_PUBLIC_KEY": "${JWT_PUBLIC_KEY}",
"OAUTH_CLIENT_SECRET": "${OAUTH_CLIENT_SECRET}",
"PROXY_SESSION_SECRET": "${PROXY_SESSION_SECRET}"
}
}
}
}extensions:
"no-crd":
enabled: true
name: "no-crd"
type: stdio
cmd: "bunx"
args:
- "--transport"
- "stdio"
- "--mode"
- "cluster"
- "--namespace"
- "nogoo9"
- "--port"
- "3000"
- "--host"
- "0.0.0.0"
- "--log-level"
- "info"
- "--disable-permission-checks"
- "--cors-origin"
- "*"
- "--cors-methods"
- "GET, POST, OPTIONS"
- "--cors-headers"
- "Content-Type, Authorization"
- "--cors-allow-credentials"
- "--auth-required-read-scope"
- "--auth-required-write-scope"
- "--auth-scope-jsonpath"
- "$.scope"
- "--auth-required-read-role"
- "--auth-required-write-role"
- "--auth-roles-jsonpath"
- "$.realm_access.roles"
- "@nogoo9/no-crd"
envs:
"TLS_KEY": "${TLS_KEY}"
"JWT_SECRET": "${JWT_SECRET}"
"JWT_PUBLIC_KEY": "${JWT_PUBLIC_KEY}"
"OAUTH_CLIENT_SECRET": "${OAUTH_CLIENT_SECRET}"
"PROXY_SESSION_SECRET": "${PROXY_SESSION_SECRET}"
timeout: 300
Placeholders to fill from your own secret store: ${TLS_KEY}, ${JWT_SECRET}, ${JWT_PUBLIC_KEY}, ${OAUTH_CLIENT_SECRET}, ${PROXY_SESSION_SECRET}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulnsno known advisory in 222 resolved packagesdeps.mcp_sdk_version@modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or laterdeps.resolvable@nogoo9/[email protected] resolved: 222 packagesNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured ~updated-68d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
@nogoo9/[email protected] npm221 dependencies, resolved · MCP SDK @modelcontextprotocol/sdk 1.30.1 · advisories checked 2026-10-19
| advisory | severity | package | fixed in |
|---|---|---|---|
| GHSA-6qxp-vccf-f47hMCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server | high | @modelcontextprotocol/[email protected]MCP SDK, direct | fixed in 1.31.0 |
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
@nogoo9/no-crd | npm | 0.18.0 | bunx | TLS_KEY, JWT_SECRET, JWT_PUBLIC_KEY, OAUTH_CLIENT_SECRET, PROXY_SESSION_SECRET |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.nogoo9/no-crd",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-16/server.schema.json",
"version": "0.18.0",
"packages": [
{
"version": "0.18.0",
"transport": {
"type": "stdio"
},
"identifier": "@nogoo9/no-crd",
"runtimeHint": "bunx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"runtimeArguments": [
{
"name": "--transport",
"type": "named",
"default": "stdio",
"valueHint": "stdio|http|both",
"description": "Transport channel for MCP client-server communication: stdio, http, both"
},
{
"name": "--mode",
"type": "named",
"default": "cluster",
"valueHint": "cluster|namespaced",
"description": "Kubernetes cluster access scope: cluster-wide or namespace-restricted"
},
{
"name": "--namespace",
"type": "named",
"default": "nogoo9",
"valueHint": "nogoo9",
"description": "Target namespace for workspace pods, services, and local templates"
},
{
"name": "--port",
"type": "named",
"default": "3000",
"valueHint": "3000",
"description": "HTTP port for SSE transport, routing proxy, and dashboard UI"
},
{
"name": "--host",
"type": "named",
"default": "0.0.0.0",
"valueHint": "0.0.0.0",
"description": "Network interface host address to bind the HTTP server to"
},
{
"name": "--log-level",
"type": "named",
"default": "info",
"valueHint": "debug|info|warning|error|fatal",
"description": "Granularity of output logs: debug, info, warning, error, fatal"
},
{
"name": "--disable-permission-checks",
"type": "named",
"description": "Bypass startup diagnostics checking Kubernetes RBAC access permissions"
},
{
"name": "--cors-origin",
"type": "named",
"default": "*",
"valueHint": "*",
"description": "Allowed origins for HTTP CORS cross-site requests (default: *)"
},
{
"name": "--cors-methods",
"type": "named",
"default": "GET, POST, OPTIONS",
"valueHint": "GET, POST, OPTIONS",
"description": "Allowed HTTP request methods for CORS configuration"
},
{
"name": "--cors-headers",
"type": "named",
"default": "Content-Type, Authorization",
"valueHint": "Content-Type, Authorization",
"description": "Allowed HTTP header names for incoming CORS requests"
},
{
"name": "--cors-allow-credentials",
"type": "named",
"description": "Allow credentials (cookies, headers) in cross-origin requests"
},
{
"name": "--auth-required-read-scope",
"type": "named",
"valueHint": "mcp:read",
"description": "Mandatory OAuth scope claim value to query or get workspaces"
},
{
"name": "--auth-required-write-scope",
"type": "named",
"valueHint": "mcp:write",
"description": "Mandatory OAuth scope claim value to spawn or stop workspaces"
},
{
"name": "--auth-scope-jsonpath",
"type": "named",
"default": "$.scope",
"valueHint": "$.scope",
"description": "JSONPath pattern to extract scope permissions from the token payload"
},
{
"name": "--auth-required-read-role",
"type": "named",
"valueHint": "reader",
"description": "OAuth role required to view workspaces (e.g. reader)"
},
{
"name": "--auth-required-write-role",
"type": "named",
"valueHint": "writer",
"description": "OAuth role required to spawn or delete workspaces (e.g. writer)"
},
{
"name": "--auth-roles-jsonpath",
"type": "named",
"default": "$.realm_access.roles",
"valueHint": "$.realm_access.roles",
"description": "JSONPath query to retrieve user roles list from token payload"
}
],
"environmentVariables": [
{
"name": "KUBECONFIG",
"description": "Path to the Kubernetes API credentials configuration file"
},
{
"name": "BASE_URL",
"description": "Hosting URL subpath prefix for gateways and reverse proxies"
},
{
"name": "STATELESS",
"description": "Disable in-memory session tracking for stateless execution"
},
{
"name": "TLS_CERT",
"description": "Local file path containing TLS public certificate (HTTPS)"
},
{
"name": "TLS_KEY",
"isSecret": true,
"description": "Local file path containing TLS private key (HTTPS)"
},
{
"name": "TLS_CA",
"description": "Local file path containing trusted client Certificate Authority"
},
{
"name": "NODE_TLS_REJECT_UNAUTHORIZED",
"description": "Set to '0' to allow connection to unverified TLS endpoints"
},
{
"name": "REGISTRY_URL",
"description": "Default container registry for workspace image resolution"
},
{
"name": "TEMPLATES_DIR",
"description": "Local filesystem directory containing custom YAML/JSON templates"
},
{
"name": "BUILTIN_TEMPLATES",
"description": "Enable loading of standard pre-configured templates (default: true)"
},
{
"name": "AUTH_ENABLED",
"description": "Enforce JWT verification and user tenant isolation (default: false)"
},
{
"name": "JWT_VERIFICATION_REQUIRED",
"description": "Set to 'false' to skip OIDC cryptographic signature checks"
},
{
"name": "JWT_SECRET",
"isSecret": true,
"description": "HMAC-SHA symmetric secret key to sign/verify JWT tokens"
},
{
"name": "JWT_PUBLIC_KEY",
"isSecret": true,
"description": "PEM public key to verify asymmetric OIDC signatures"
},
{
"name": "JWKS_URI",
"description": "Discovery URI to fetch keys from OIDC provider dynamically"
},
{
"name": "INTROSPECTION_ENDPOINT",
"description": "RFC 7662 compliant token introspection validation endpoint"
},
{
"name": "OAUTH_CLIENT_ID",
"description": "Client identifier for OAuth2 authentication flows"
},
{
"name": "OAUTH_CLIENT_SECRET",
"isSecret": true,
"description": "Client secret credentials used for token introspection"
},
{
"name": "JWT_AUDIENCE",
"description": "Target audience check value for incoming OIDC tokens"
},
{
"name": "AUTH_ISSUER",
"description": "Expected token issuer authority check value (e.g. Keycloak)"
},
{
"name": "AUTH_SUB_JSONPATH",
"description": "JSONPath pattern to extract user identity subject from token"
},
{
"name": "AUTH_ADMIN_ROLE",
"description": "Bypass role name that grants admin access (default: nogoo9-admin)"
},
{
"name": "AUTH_ADMIN_USERS",
"description": "Comma-separated list of user subject IDs (sub) granted admin privileges without OIDC scope/role claims"
},
{
"name": "PROXY_SESSION_TTL",
"description": "Active lifetime in seconds for signed proxy session cookies"
},
{
"name": "PROXY_SESSION_SECRET",
"isSecret": true,
"description": "Secret key for session cookie signing"
},
{
"name": "UI_ENABLED",
"description": "Serve the built-in HTML dashboard (default: true)"
},
{
"name": "THEMES_DIR",
"description": "Filesystem directory to scan for custom CSS themes"
},
{
"name": "THEMES_CONFIGMAP",
"description": "ConfigMap name storing dynamic CSS theme overrides"
},
{
"name": "DOCS_DIR",
"description": "Directory containing static documentation web files to serve"
},
{
"name": "OAUTH_DISCOVERY_URL",
"description": "Standard OIDC .well-known configuration discovery endpoint"
},
{
"name": "OAUTH_LOGIN_METHOD",
"description": "UI SSO flow login method: 'redirect' or silent 'iframe'"
},
{
"name": "UI_TITLE",
"description": "Custom dashboard header title for white-label branding"
},
{
"name": "UI_SUBTITLE",
"description": "Custom dashboard subtitle text below the header title"
}
]
}
],
"repository": {
"url": "https://github.com/nogoo9/no-crd",
"source": "github"
},
"description": "Dynamic pod spawner & proxy for ephemeral AI agent workspaces on Kubernetes without CRDs"
}