@kadoa/mcp 0.6.4 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +29 -14
  2. package/dist/index.js +117 -15786
  3. package/package.json +1 -2
package/README.md CHANGED
@@ -7,17 +7,21 @@ Use [Kadoa](https://kadoa.com) from ChatGPT, Claude.ai, Claude Code, Cursor, and
7
7
  Public API is the only OAuth authority. This server is an MCP resource server:
8
8
  it publishes protected-resource metadata, verifies RS256 resource tokens against
9
9
  Public API JWKS, enforces the exact issuer and resource audience, and exchanges
10
- each resource token for a request-local Public API token using workload identity.
10
+ each resource token for a request-local Public API token using a dedicated service secret.
11
11
  It does not mount authorization, registration, token, refresh, or revocation
12
- routes and does not store credentials.
12
+ routes and does not store end-user credentials.
13
+
14
+ This runtime targets the separate `mcp-server-beta` deployment. Production MCP
15
+ at `https://mcp.kadoa.com/mcp` remains on legacy authentication until a separate
16
+ approved migration.
13
17
 
14
18
  ```sh
15
19
  MCP_AUTH_ISSUER=https://api.kadoa.com/v5/auth
16
20
  MCP_AUTH_JWKS_URL=https://api.kadoa.com/v5/auth/.well-known/jwks.json
17
- MCP_AUTH_AUDIENCE=https://mcp.kadoa.com/mcp
21
+ MCP_AUTH_AUDIENCE=https://beta.mcp.kadoa.com/mcp
18
22
  MCP_DOWNSTREAM_TOKEN_ENDPOINT=https://api.kadoa.com/v5/auth/mcp/downstream-token
19
- MCP_DOWNSTREAM_WORKLOAD_AUDIENCE=https://api.kadoa.com/v5/auth/mcp/downstream-token
20
- MCP_ALLOWED_ORIGIN_HOSTNAMES=mcp.kadoa.com,service.mcp.kadoa.com
23
+ # Inject MCP_DOWNSTREAM_EXCHANGE_SECRET from a dedicated secret store.
24
+ MCP_ALLOWED_ORIGIN_HOSTNAMES=beta.mcp.kadoa.com
21
25
  MCP_LEGACY_TRANSPORT_ENABLED=true
22
26
  ```
23
27
 
@@ -26,12 +30,23 @@ When `true`, supported 2025 protocol requests use the same central verifier and
26
30
  downstream exchange as modern requests. It never selects another authentication
27
31
  implementation. Missing central configuration fails startup.
28
32
 
29
- ### Interactive local central-mode proof
33
+ The exchange secret must contain at least 32 characters without whitespace.
34
+ Generate at least 32 random bytes, encode as hex, and inject the same value into
35
+ Public API as `KADOA_MCP_DOWNSTREAM_EXCHANGE_SECRET`. Never reuse the worker or
36
+ legacy registry credentials. Secret rotation requires restarting both consumers.
37
+ The service secret does not replace the user token or its authorization checks.
38
+ No Google service account or metadata-server access is required.
39
+
40
+ ### Historical local central-mode fixture
41
+
42
+ This fixture depends on the earlier backend local-issuer configuration, which
43
+ is absent from the narrowed beta rollout candidate. The commands below are not
44
+ a validated proof for that candidate. Do not restore browser OAuth or local-issuer
45
+ support to run this rollout.
30
46
 
31
- The normal `dev` entrypoint uses Google workload identity in central mode. For a
32
- local Dashboard Assistant proof, use the test-only launcher. It imports the real
33
- backend downstream-exchange owner and replaces only Google's identity-token
34
- verification with a deterministic local identity. It refuses to start unless
47
+ The normal `dev` entrypoint authenticates downstream exchange with
48
+ `MCP_DOWNSTREAM_EXCHANGE_SECRET`. The test-only launcher imports the backend
49
+ exchange owner and uses a local-only fixture secret. It requires
35
50
  `KADOA_ENVIRONMENT=local`, binds to `127.0.0.1:3002`, and is not included in the
36
51
  published package build.
37
52
 
@@ -66,8 +81,8 @@ direnv exec /home/gabrielziegler/kadoa/kadoa-backend bash -lc '
66
81
  Open a new Dashboard Assistant session and request a workflow list. The proof
67
82
  covers the central resource server, backend-owned token exchange, live team
68
83
  membership checks, downstream Public API credentials, and real tool calls. It
69
- does not cover Google workload identity, browser OAuth consent, or a deployed
70
- network boundary. Google workload identity remains a beta check.
84
+ does not prove the current beta candidate, browser OAuth consent, or a deployed
85
+ network boundary.
71
86
 
72
87
  ## Remote Server (no install needed)
73
88
 
@@ -452,8 +467,8 @@ The server starts in HTTP mode. You authenticate via OAuth the same way as with
452
467
  | `MCP_AUTH_ISSUER` | Exact Public API OAuth issuer, such as `https://api.kadoa.com/v5/auth` |
453
468
  | `MCP_AUTH_JWKS_URL` | JWKS URL for the issuer |
454
469
  | `MCP_AUTH_AUDIENCE` | Exact MCP resource URL served by this deployment; its path must be `/mcp` |
455
- | `MCP_DOWNSTREAM_TOKEN_ENDPOINT` | Public API workload-authenticated downstream exchange endpoint |
456
- | `MCP_DOWNSTREAM_WORKLOAD_AUDIENCE` | Audience used when the MCP workload requests its Google ID token |
470
+ | `MCP_DOWNSTREAM_TOKEN_ENDPOINT` | Public API service-authenticated downstream exchange endpoint |
471
+ | `MCP_DOWNSTREAM_EXCHANGE_SECRET` | Dedicated service credential shared only with the downstream exchange; must satisfy the same validation as Public API `KADOA_MCP_DOWNSTREAM_EXCHANGE_SECRET` |
457
472
  | `MCP_ALLOWED_ORIGIN_HOSTNAMES` | Comma-separated hostnames admitted when an HTTP Origin header is present; required outside loopback |
458
473
  | `MCP_LEGACY_TRANSPORT_ENABLED` | `true` serves supported 2025 protocol versions through central auth; `false` rejects them |
459
474