diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 940c85c..a598fbf 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -32,10 +32,23 @@ jobs: with: python-version: "3.12" + - name: Install system deps for mkdocs-material social cards + # The social plugin renders per-page OG images (1200x630) via + # cairosvg + Pillow. cairosvg needs the system libcairo, libffi, + # and libjpeg libraries. + run: | + sudo apt-get update + sudo apt-get install -y \ + libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev + - name: Install dependencies + env: + # mkdocs-material[imaging] pulls in cairosvg + pillow so the + # `social` plugin can run. + PIP_DISABLE_PIP_VERSION_CHECK: "1" run: | pip install \ - mkdocs-material \ + 'mkdocs-material[imaging]' \ 'pymdown-extensions>=10.0' - name: Build documentation diff --git a/docs/configuration/environment.md b/docs/configuration/environment.md index 78219ba..bfc3374 100644 --- a/docs/configuration/environment.md +++ b/docs/configuration/environment.md @@ -16,19 +16,150 @@ plus a few un-prefixed standard names (`LOG_LEVEL`). ## Common overrides -| Variable | Used by | Example | -| --- | --- | --- | -| `LOG_LEVEL` | Binary | `debug`, `info` (default), `warn`, `error`. | -| `MCPTEST_PORT` | `server.address` | `8080` | -| `MCPTEST_BASE_URL` | `server.base_url` | `https://mcp-test.example.com` | -| `MCPTEST_DATABASE_URL` | `database.url` | `postgres://mcp:mcp@localhost:5432/mcp_test?sslmode=disable` | -| `MCPTEST_DEV_KEY` | `api_keys.file[0].key` | `devkey-please-change` | -| `MCPTEST_OIDC_ISSUER` | `oidc.issuer` | `http://localhost:8081/realms/mcp-test` | -| `MCPTEST_OIDC_AUDIENCE` | `oidc.audience` | `mcp-test` | -| `MCPTEST_OIDC_CLIENT_ID` | `oidc.client_id` | `mcp-test-portal` | -| `MCPTEST_OIDC_CLIENT_SECRET` | `oidc.client_secret` | (confidential clients only) | -| `MCPTEST_COOKIE_SECRET` | `portal.cookie_secret` | 32+ bytes, base64 | -| `MCPTEST_INSECURE` | OIDC skip-signature gate | `1` to allow `oidc.skip_signature_verification` | +
LOG_LEVEL
+MCPTEST_PORT
+server.address
+example8080
+MCPTEST_BASE_URL
+server.base_url
+examplehttps://mcp-test.example.com
+MCPTEST_DATABASE_URL
+database.url
+examplepostgres://mcp:mcp@localhost:5432/mcp_test?sslmode=disable
+MCPTEST_DEV_KEY
+api_keys.file[0].key
+exampledevkey-please-change
+MCPTEST_OIDC_ISSUER
+oidc.issuer
+examplehttp://localhost:8081/realms/mcp-test
+MCPTEST_OIDC_AUDIENCE
+oidc.audience
+examplemcp-test
+MCPTEST_OIDC_CLIENT_ID
+oidc.client_id
+examplemcp-test-portal
+MCPTEST_OIDC_CLIENT_SECRET
+oidc.client_secret
+MCPTEST_COOKIE_SECRET
+portal.cookie_secret
+example32+ bytes, base64
+MCPTEST_INSECURE
+1
+server.name
+mcp-test
+server.address
+:8080
+server.base_url
+http://localhost:<port>
+server.instructions
+server.read_header_timeout
+10s
+server.shutdown.grace_period
+25s
+server.shutdown.pre_shutdown_delay
+2s
+server.tls.enabled
+false
+server.tls.cert_file
+""
+server.tls.key_file
+""
+server.streamable.session_timeout
+30m
+server.streamable.stateless
+false
+server.streamable.json_response
+false
+oidc.enabled
+false
+oidc.issuer
+oidc.audience
+oidc.client_id
+""
+oidc.client_secret
+""
+oidc.allowed_clients
+[]
+oidc.clock_skew_seconds
+30
+oidc.jwks_cache_ttl
+1h
+oidc.skip_signature_verification
+false
+api_keys.file
+[]
+api_keys.db.enabled
+false
+auth.allow_anonymous
+false
+auth.require_for_mcp
+true
+auth.require_for_portal
+true
+database.url
+database.max_open_conns
+25
+database.max_idle_conns
+5
+database.conn_max_lifetime
+1h
+audit.enabled
+true
+audit.retention_days
+30
+audit.redact_keys
+[password, token, secret, authorization, api_key, credentials]
+portal.enabled
+false
+portal.cookie_name
+mcp_test_session
+portal.cookie_secret
+portal.cookie_secure
+true
+portal.oidc_redirect_path
+/portal/auth/callback
+tools.identity.enabled
+false
+tools.data.enabled
+false
+tools.failure.enabled
+false
+tools.streaming.enabled
+false
+//portal//api/v1/portal/*/api/v1/admin/*/.well-known/oauth-protected-resource/.well-known/oauth-authorization-server/healthz and /readyzhttp://localhost:8080/portal/http://localhost:8080/http://localhost:8081/http://localhost:8080/healthzidtsduration_msrequest_idsession_iduser_subject / user_email / auth_type / api_key_nametool_name / tool_groupparameterssuccess / error_message / error_categoryrequest_chars / response_chars / content_blockstransportsourceremote_addr / user_agent/api/v1/portal/audit/events
+/api/v1/portal/audit/events/{id}
+/api/v1/portal/audit/export
+/api/v1/portal/audit/timeseries
+/api/v1/portal/audit/breakdown
+/api/v1/portal/dashboard
+INGRESS_HOST
+mcp.example.com
+KUBE_CONTEXT
+staging
+--dry-run
+/portal/login/portal//portal/tools/portal/tools/<name>/portal/audit/portal/audit/compare/portal/keys/portal/config/portal/wellknown/portal/about/healthz
+/readyz
+/.well-known/oauth-protected-resource
+/.well-known/oauth-authorization-server
+/portal/
+/portal/auth/login
+/portal/auth/callback
+/portal/auth/logout
+/
+/
+/
+/api/v1/portal/me
+/api/v1/portal/server
+/api/v1/portal/instructions
+/api/v1/portal/tools
+/api/v1/portal/tools/{name}
+/api/v1/portal/audit/meta
+/api/v1/portal/audit/events
+/api/v1/portal/audit/events/{id}
+/api/v1/portal/audit/events/{id}/replay
+/api/v1/portal/audit/export
+/api/v1/portal/audit/stream
+/api/v1/portal/audit/timeseries
+/api/v1/portal/audit/breakdown
+/api/v1/portal/dashboard
+/api/v1/portal/wellknown
+param.<dotted.path>=<value>response.<dotted.path>=<value>header.<name>=<value>has=<column>/api/v1/admin/keys
+/api/v1/admin/keys
+/api/v1/admin/keys/{name}
+/api/v1/admin/tryit/{name}
+initializeinitialized
+tools/listtools/callnotifications/progress
+