portkey-admin-mcp 0.14.1 → 0.15.1
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.
- package/COMPATIBILITY.md +56 -28
- package/ENDPOINTS.md +4 -4
- package/README.md +13 -22
- package/build/index.js +1093 -803
- package/build/server.js +1176 -2314
- package/docs/VERCEL_DEPLOYMENT.md +14 -22
- package/package.json +9 -7
package/COMPATIBILITY.md
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
# Compatibility and deprecations
|
|
2
2
|
|
|
3
|
-
Last reviewed: 2026-10-
|
|
3
|
+
Last reviewed: 2026-10-25. Package versions, SDK versions, and negotiated MCP
|
|
4
4
|
protocol revisions are separate compatibility boundaries.
|
|
5
5
|
|
|
6
6
|
## Release lines
|
|
7
7
|
|
|
8
8
|
| Package release | MCP SDK | MCP protocol | Support and behavior |
|
|
9
9
|
| --- | --- | --- | --- |
|
|
10
|
-
| 0.
|
|
11
|
-
| 0.
|
|
12
|
-
|
|
|
10
|
+
| 0.15.1 | server/client 2.3.1, Node adapter 2.1.1 (exact pins) | Native `2026-07-28` plus older clients on the same endpoint | Current release, 194 tools across 22 domains, Node.js 24+. HTTP session and replay stores are retired; obsolete settings warn and are ignored. First warnings and ignored settings start in 0.15.0; session/replay behavior is removed in that release. |
|
|
11
|
+
| 0.14.1 | v1; dependency floor 1.32.1 | Latest supported revision: `2025-11-25` | Previous line, 194 tools across 22 domains, Node.js 24+. Stateful HTTP sessions and optional replay stores remain active. |
|
|
12
|
+
| 0.13.0 | v1; dependency floor 1.31.0 | Latest supported revision: `2025-11-25` | Historical release, 184 tools across 20 domains. Upgrade to the latest minor for security fixes. |
|
|
13
13
|
|
|
14
|
-
The
|
|
14
|
+
The 0.14.x SDK supports `2025-11-25`, `2025-06-18`, `2025-03-26`,
|
|
15
15
|
`2024-11-05`, and `2024-10-07`. A newer client that negotiates an older
|
|
16
16
|
revision can use this server; that fallback does not mean the server natively
|
|
17
|
-
supports `2026-07-28`.
|
|
18
|
-
over HTTP and stdio before release.
|
|
17
|
+
supports `2026-07-28`. Release tests cover modern auto/pinned clients and default legacy clients over HTTP and stdio. Client products, deployed proxies and marketplace acceptance still need release validation.
|
|
19
18
|
|
|
20
19
|
[SECURITY.md](https://github.com/CodesWhat/portkey-admin-mcp/blob/main/SECURITY.md) owns the security-support policy: fixes ship on the
|
|
21
20
|
latest published minor line; older minor lines do not receive backports.
|
|
@@ -23,37 +22,36 @@ See [CHANGELOG.md](https://github.com/CodesWhat/portkey-admin-mcp/blob/main/CHAN
|
|
|
23
22
|
|
|
24
23
|
## Configuration lifecycle
|
|
25
24
|
|
|
26
|
-
No deprecation warnings or removals for the settings below
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
No deprecation warnings or removals for the settings below shipped in 0.14.x.
|
|
26
|
+
As of 0.15.0, the listed settings warn and are ignored, and the underlying
|
|
27
|
+
session/replay behavior is removed. There was no intermediate warning-only
|
|
28
|
+
release. Obsolete names remain recognized for warnings; this does not retain
|
|
29
|
+
their former functionality. 0.14.x is the previous line and is unchanged.
|
|
30
30
|
|
|
31
|
-
| Setting or behavior | 0.14.x |
|
|
31
|
+
| Setting or behavior | 0.14.x | 0.15.0 behavior | First warning / ignored / removal release |
|
|
32
32
|
| --- | --- | --- | --- |
|
|
33
|
-
| `MCP_SESSION_MODE`, `MCP_SESSION_TIMEOUT` | Active; stateful mode is the default |
|
|
34
|
-
| `MCP_EVENT_STORE`, `MCP_EVENT_TTL_SECONDS`, `MCP_EVENT_STORE_MAX_EVENTS`, `MCP_EVENT_STORE_MAX_BYTES`, `MCP_EVENT_STORE_COMMAND_TIMEOUT_MS` | Active replay configuration |
|
|
35
|
-
| `MCP_EVENT_ENCRYPTION_KEY`, `MCP_REDIS_KEY_PREFIX` | Active Redis replay configuration |
|
|
36
|
-
| HTTP GET stream, `Last-Event-ID` recovery, session identifiers | Active under the configured HTTP mode |
|
|
33
|
+
| `MCP_SESSION_MODE`, `MCP_SESSION_TIMEOUT` | Active; stateful mode is the default | Ignored with a warning; older clients use stateless requests | 0.15.0 / 0.15.0 / 0.15.0 |
|
|
34
|
+
| `MCP_EVENT_STORE`, `MCP_EVENT_TTL_SECONDS`, `MCP_EVENT_STORE_MAX_EVENTS`, `MCP_EVENT_STORE_MAX_BYTES`, `MCP_EVENT_STORE_COMMAND_TIMEOUT_MS` | Active replay configuration | Ignored with a warning; authenticated GET/DELETE return 405 (auth and Origin checks still apply first: 401 without credentials when HTTP authentication is enabled, meaning `MCP_AUTH_MODE` other than `none`; 403 for a disallowed Origin) | 0.15.0 / 0.15.0 / 0.15.0 |
|
|
35
|
+
| `MCP_EVENT_ENCRYPTION_KEY`, `MCP_REDIS_KEY_PREFIX` | Active Redis replay configuration | Ignored with a warning | 0.15.0 / 0.15.0 / 0.15.0 |
|
|
36
|
+
| HTTP GET stream, `Last-Event-ID` recovery, session identifiers | Active under the configured HTTP mode | No session IDs are returned; authenticated GET/DELETE, including legacy session or `Last-Event-ID` headers, return 405. Unauthenticated requests get 401 when HTTP authentication is enabled (`MCP_AUTH_MODE` other than `none`), and a disallowed Origin gets 403 | 0.15.0 / 0.15.0 / 0.15.0 |
|
|
37
37
|
| `RATE_LIMIT_*` | Active rate-limit configuration | Retained, including shared Redis limiting | No removal planned |
|
|
38
|
-
| `RATE_LIMIT_REDIS_URL`, `MCP_REDIS_URL`, `REDIS_URL` | Rate limiter uses these URL sources in that order; replay uses the latter two |
|
|
38
|
+
| `RATE_LIMIT_REDIS_URL`, `MCP_REDIS_URL`, `REDIS_URL` | Rate limiter uses these URL sources in that order; replay uses the latter two | Documented Redis connection path for rate limiting is preserved now that replay is retired | No removal assigned |
|
|
39
39
|
| `MCP_MAX_SESSIONS` | Bounds stateful sessions or active stateless request handlers | Retain the stateless concurrency bound | No removal planned |
|
|
40
40
|
| `MCP_TOOL_DOMAINS`, `CORS_ORIGIN` | Supported fallbacks for `PORTKEY_TOOL_DOMAINS`, `ALLOWED_ORIGINS` | No change assigned | No removal planned |
|
|
41
41
|
|
|
42
42
|
Redis rate limiting and Redis replay are separate features. Retiring the replay
|
|
43
43
|
store does not remove the need for a shared rate limiter in multi-instance or
|
|
44
|
-
serverless deployments.
|
|
45
|
-
|
|
44
|
+
serverless deployments. Keep working settings on a 0.14.x deployment until you
|
|
45
|
+
upgrade to 0.15.0.
|
|
46
46
|
|
|
47
|
-
## Migration
|
|
47
|
+
## Migration notes
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
These are project planning dates, not announced configuration-removal dates or
|
|
54
|
-
an SDK end-of-life guarantee. [ROADMAP.md](https://github.com/CodesWhat/portkey-admin-mcp/blob/main/ROADMAP.md) tracks the work.
|
|
49
|
+
The migration shipped in 0.15.0, ahead of the original 2026-12-01 start-by
|
|
50
|
+
date and the 2027-01-27 completion target. Those were project planning dates,
|
|
51
|
+
not announced configuration-removal dates or an SDK end-of-life guarantee.
|
|
52
|
+
[ROADMAP.md](https://github.com/CodesWhat/portkey-admin-mcp/blob/main/ROADMAP.md) tracks follow-up work.
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
Operators upgrading from 0.14.x need an upgrade guide covering:
|
|
57
55
|
|
|
58
56
|
- warning and removal behavior for every retired setting;
|
|
59
57
|
- loss of session affinity, the GET stream, and `Last-Event-ID` recovery;
|
|
@@ -62,6 +60,36 @@ Before that release, operators need a versioned upgrade guide covering:
|
|
|
62
60
|
- retained Redis rate-limit configuration and concurrency bounds; and
|
|
63
61
|
- client, reverse-proxy, Vercel, and marketplace compatibility checks.
|
|
64
62
|
|
|
65
|
-
The release
|
|
63
|
+
The release updated this table, the README configuration reference,
|
|
66
64
|
[architecture](https://github.com/CodesWhat/portkey-admin-mcp/blob/main/docs/ARCHITECTURE.md), [Vercel guide](docs/VERCEL_DEPLOYMENT.md),
|
|
67
65
|
[security assurance case](https://github.com/CodesWhat/portkey-admin-mcp/blob/main/SECURITY-ASSURANCE.md), and changelog together.
|
|
66
|
+
|
|
67
|
+
## Interrupted requests
|
|
68
|
+
|
|
69
|
+
The SDK v2 server keeps older `initialize` clients working on `/mcp` without
|
|
70
|
+
persistent HTTP sessions. Modern clients use `server/discover` on the same URL.
|
|
71
|
+
Clients and proxies must forward `MCP-Protocol-Version`, `Mcp-Method` and, for
|
|
72
|
+
named operations such as `tools/call`, `Mcp-Name`. Tool filters apply to every
|
|
73
|
+
request; reuse the same `?tools=` URL throughout a client workflow.
|
|
74
|
+
|
|
75
|
+
GET streams, DELETE session operations and `Last-Event-ID` replay are retired.
|
|
76
|
+
A disconnected request can still have changed Portkey state even when its result
|
|
77
|
+
was lost. Do not automatically replay a write:
|
|
78
|
+
|
|
79
|
+
1. Save the operation name, target workspace/resource ID and intended change
|
|
80
|
+
without recording credentials or secret values.
|
|
81
|
+
2. Reconnect and use the matching `get_*` or `list_*` tool, or the Portkey
|
|
82
|
+
dashboard, to inspect whether the change completed. For creates, correlate
|
|
83
|
+
the intended name/metadata and time; a missing response is not proof of failure.
|
|
84
|
+
3. If the desired state already exists, continue from that resource. If failure
|
|
85
|
+
is confirmed, retry once intentionally. If the outcome is still ambiguous,
|
|
86
|
+
inspect the upstream audit/usage records or ask the tenant administrator before
|
|
87
|
+
repeating creates, completions or other operations with side effects.
|
|
88
|
+
|
|
89
|
+
Reads can be requested again. Neither transport reconnect nor a successful new
|
|
90
|
+
handshake proves a previous mutation failed. There is no exactly-once guarantee.
|
|
91
|
+
`MCP_MAX_SESSIONS` now caps concurrent request handlers; it does not restore
|
|
92
|
+
sessions or replay. Redis remains available for shared rate limiting through
|
|
93
|
+
`RATE_LIMIT_REDIS_URL`, `MCP_REDIS_URL`, then `REDIS_URL`. No replay encryption key
|
|
94
|
+
is needed. Keep deployed 0.14.x settings until upgrading; the first
|
|
95
|
+
warning, ignored-setting and feature-removal release is 0.15.0.
|
package/ENDPOINTS.md
CHANGED
|
@@ -209,7 +209,7 @@ Routes:
|
|
|
209
209
|
|---|---|
|
|
210
210
|
| `create_prompt` | Create a new prompt template and initial version. Use this for first-time setup; use migrate_prompt for idempotent CI/CD flows. Accepts plain text or structured chat messages, creates a new version immediately, and returns the prompt id, slug, and version id. For multi-message chat prompts pass messages (preferred) or a JSON-encoded array as string. |
|
|
211
211
|
| `list_prompts` | List prompts across the workspace, with optional collection, workspace, or search filters. Returns a paginated summary with id, name, slug, model, and status so you can choose a prompt_id before get_prompt, update_prompt, or render_prompt. |
|
|
212
|
-
| `get_prompt` | Fetch a prompt's full definition, active version, and version history. Use this before updating, publishing, rendering, or copying a prompt when you need the stored template and metadata.
|
|
212
|
+
| `get_prompt` | Fetch a prompt's full definition, active version, and version history. Use this before updating, publishing, rendering, or copying a prompt when you need the stored template and metadata. template_format in the result shows whether the stored template is a plain string or a JSON messages array. |
|
|
213
213
|
| `update_prompt` | Update an existing prompt and create a new archived version. Only provided fields change, and publish_prompt is what makes the new version active. For multi-message chat prompts pass messages (preferred) or a JSON-encoded array as string. |
|
|
214
214
|
| `delete_prompt` | Delete a prompt and all its versions by id. This cannot be undone, immediately breaks callers using the slug, and should only be used after checking list_prompt_versions or confirming you do not need an audit trail. |
|
|
215
215
|
| `publish_prompt` | Publish a specific version of a prompt as the active default, unlike promote_prompt which copies across environments or update_prompt which creates a new draft. This immediately routes all callers using the slug to that version and there is no rollback, so use list_prompt_versions to pick the version and update_prompt first if you need to create new content before promoting it. |
|
|
@@ -238,11 +238,11 @@ Routes:
|
|
|
238
238
|
| `get_error_rate_analytics` | Get error-rate time-series data with summary.error_rate_percent and per-bucket percentages of total requests. Use this for reliability and SLA trends; use get_error_analytics for absolute error counts instead. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
239
239
|
| `get_cache_hit_latency` | Get cache-hit-only latency time-series data with summary.total_latency, summary.avg_latency, and per-bucket total/avg latency. Use this to evaluate cached-response speed; use get_latency_analytics for all requests. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
240
240
|
| `get_cache_hit_rate` | Get cache-effectiveness time-series data with summary.hit_rate, summary.total_hits, summary.total_misses, and per-bucket hits/misses/rate. Use this to measure cache effectiveness; use get_cache_hit_latency for speed rather than hit/miss ratio. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
241
|
-
| `get_cache_summary` | Enterprise-gated. Get cache summary metrics for
|
|
241
|
+
| `get_cache_summary` | Enterprise-gated. Get cache summary metrics for a workspace or organisation and time range: hits, average cache-hit latency, total requests, and percentage speedup. Choose workspace_slug, include_all_workspaces=true, or exclude_workspace_slugs. Use the graph cache tools when you need changes over time instead of one aggregate. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
242
242
|
| `get_users_analytics` | Get user-growth time-series data with summary.total_active_users, summary.total_new_users, and per-bucket active/new user counts. Use this for growth and adoption trends; use get_user_requests_analytics for per-user traffic or get_analytics_group_users for per-user cost and token detail. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
243
243
|
| `get_analytics_group_users` | Get a paginated per-user breakdown with total_groups, group_count, and a users array containing request count, cost, and token usage. Use this for billing, audits, or top-consumer analysis; use get_users_analytics for aggregate active and new user trends. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
244
244
|
| `get_analytics_group_models` | Get a paginated per-model breakdown with total_groups, group_count, and a models array containing request count, cost, and token usage. Use this to compare model cost, popularity, and efficiency; use get_token_analytics or get_cost_analytics for time-series trends instead. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
245
|
-
| `get_analytics_group_providers` | Enterprise-gated. Get provider-grouped analytics for one workspace and time range with selectable metrics, ordering, pagination, and optional total count. Use this when comparing provider traffic or reliability; requested metric fields are preserved in each provider row. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
245
|
+
| `get_analytics_group_providers` | Enterprise-gated. Get provider-grouped analytics for one workspace or organisation-wide and a time range with selectable metrics, ordering, pagination, and optional total count. Choose workspace_slug, include_all_workspaces=true, or exclude_workspace_slugs. Use this when comparing provider traffic or reliability; requested metric fields are preserved in each provider row. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
246
246
|
| `get_analytics_group_metadata` | Get a paginated metadata breakdown with total_groups, group_count, and a metadata_groups array grouped by the required metadata_key. Use this for custom breakdowns like per-environment or per-feature analysis; pass metadata_key in addition to the time window. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
247
247
|
| `get_analytics_group_mcp` | Get a paginated per-MCP-server breakdown with total_groups, group_count, and an mcp_servers array containing each server name and its request count. Use this to see which MCP servers receive the most traffic; use get_analytics_group_a2a for A2A agents or get_analytics_group_users and get_analytics_group_models for other breakdowns. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
248
248
|
| `get_analytics_group_a2a` | Get a paginated per-agent breakdown with total_groups, group_count, and an agents array containing each A2A (agent-to-agent) agent name and its request count. Use this to see which agents receive the most traffic; use get_analytics_group_mcp for MCP servers instead. Enterprise-gated. Returns 403 on non-Enterprise Portkey plans. |
|
|
@@ -461,7 +461,7 @@ Routes:
|
|
|
461
461
|
| `disconnect_mcp_server_connection` | Disconnect one user's active session from a Portkey-managed MCP server. This immediately ends that connection but does not revoke future access; use update_mcp_server_user_access when access itself should be removed. Provide user_id with service keys (user keys derive it), and workspace_id with organisation admin keys. Inspect list_mcp_server_connections first when the target is uncertain. |
|
|
462
462
|
| `list_mcp_servers` | List MCP servers in the organization. Returns paginated server records plus total for discovering server IDs; use get_mcp_server for one server's details and list_mcp_integrations for the parent integration. |
|
|
463
463
|
| `create_mcp_server` | Create an MCP server under an existing integration. Registers the server and returns the new id and slug; use list_mcp_integrations first to find the parent integration, then capabilities or access tools to configure it. |
|
|
464
|
-
| `get_mcp_server` | Retrieve one MCP server by id or slug. Returns server details including the parent integration, status, and created time; use get_mcp_server
|
|
464
|
+
| `get_mcp_server` | Retrieve one MCP server by id or slug. Returns server details including the parent integration, status, and created time; use get_mcp_server for the server record, and get_mcp_integration for the parent integration's URL, auth, and transport configuration. |
|
|
465
465
|
| `update_mcp_server` | Update an MCP server's name or description. Changes apply immediately, but URL and auth live on the parent integration, so use update_mcp_integration for those fields. |
|
|
466
466
|
| `delete_mcp_server` | Delete an MCP server instance. This is irreversible, removes connected users' access immediately, and should be used only after confirming no workflows depend on the server. |
|
|
467
467
|
| `test_mcp_server` | Test connectivity to an MCP server. Sends a live check and returns success, response time, HTTP status, and any error; use this before changing configuration or when diagnosing reachability. |
|
package/README.md
CHANGED
|
@@ -77,10 +77,10 @@
|
|
|
77
77
|
|
|
78
78
|
You need a **Portkey API key** with appropriate scopes. Get one from your [Portkey dashboard](https://app.portkey.ai/) under API Keys.
|
|
79
79
|
|
|
80
|
-
Version 0.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
Version 0.15.0 uses MCP SDK v2 and serves protocol revision `2026-07-28` and
|
|
81
|
+
older clients on the same endpoint. It retires HTTP sessions and replay;
|
|
82
|
+
obsolete settings warn and are ignored. See
|
|
83
|
+
[compatibility and deprecations](./COMPATIBILITY.md) before upgrading from 0.14.x.
|
|
84
84
|
|
|
85
85
|
### Claude Code
|
|
86
86
|
|
|
@@ -175,7 +175,7 @@ Then use this config:
|
|
|
175
175
|
| **Egress Allowlist** | 5 | Organisation trust for custom outbound hosts |
|
|
176
176
|
| **Usage Limits** | 7 | Cost and token consumption limits |
|
|
177
177
|
| **Rate Limits** | 5 | Request frequency controls |
|
|
178
|
-
| **Analytics** | 25 | Cost, latency, errors, tokens, cache, feedback, provider, MCP, A2A, and workspace groups |
|
|
178
|
+
| **Analytics** | 25 | Cost, latency, errors, tokens, cache, feedback, provider, MCP, A2A, and workspace groups; organisation scope and workspace exclusions |
|
|
179
179
|
| **Logging** | 10 | Log retrieval, ingestion, export, and field restrictions |
|
|
180
180
|
| **Tracing** | 2 | Feedback creation and updates on traces |
|
|
181
181
|
| **Users & Workspaces** | 24 | User management, invites, workspace members, SCIM group mappings |
|
|
@@ -279,17 +279,9 @@ For local-only HTTP use, leave `MCP_HOST` at its default `127.0.0.1`. Set `MCP_H
|
|
|
279
279
|
| `CLERK_ALLOWED_ORGANIZATION_IDS` / `CLERK_ALLOWED_ROLES` | — | Optional CSV organization and role constraints; every configured constraint must match |
|
|
280
280
|
| `CLERK_REQUIRED_PERMISSIONS` | — | Optional CSV permissions that must all be present in the verified Clerk JWT |
|
|
281
281
|
| `MCP_ALLOW_UNAUTHENTICATED_HTTP` | — | Set to `true` only for intentional local unauthenticated HTTP debugging |
|
|
282
|
-
| `
|
|
283
|
-
| `
|
|
284
|
-
| `
|
|
285
|
-
| `MCP_EVENT_STORE` | `off` | `off`, `memory`, or `redis`; stateless `GET /mcp` replay requires `memory` or `redis` |
|
|
286
|
-
| `MCP_EVENT_TTL_SECONDS` | `300` | Replay retention in seconds |
|
|
287
|
-
| `MCP_EVENT_STORE_MAX_EVENTS` | `10000` | Maximum events retained by the in-memory replay store; oldest events are evicted first |
|
|
288
|
-
| `MCP_EVENT_STORE_MAX_BYTES` | `67108864` | Approximate maximum serialized bytes retained by the in-memory replay store |
|
|
289
|
-
| `MCP_EVENT_STORE_COMMAND_TIMEOUT_MS` | `5000` | Redis command timeout for the event store, in milliseconds; `0` disables the timeout (restores unbounded pre-v6 behavior) |
|
|
290
|
-
| `MCP_REDIS_URL` | — | Redis URL for shared event store; production requires `rediss://` and ACL-scoped credentials |
|
|
291
|
-
| `MCP_EVENT_ENCRYPTION_KEY` | — | Required 32-byte base64 AES key for Redis replay payloads; generate with `openssl rand -base64 32` |
|
|
292
|
-
| `MCP_REDIS_KEY_PREFIX` | `mcp:event-store` | Dedicated Redis namespace for replay data |
|
|
282
|
+
| `MCP_MAX_SESSIONS` | `100` | Maximum concurrent HTTP MCP request handlers (retained name) |
|
|
283
|
+
| `MCP_REDIS_URL` | — | Fallback Redis URL for shared rate limiting, after `RATE_LIMIT_REDIS_URL` and before `REDIS_URL`; production requires `rediss://` |
|
|
284
|
+
| `MCP_SESSION_MODE`, `MCP_SESSION_TIMEOUT`, `MCP_EVENT_*`, `MCP_REDIS_KEY_PREFIX` | Ignored as of 0.15.0 | Old session/replay settings produce a warning containing names only. 0.14.x behavior is unchanged; see [compatibility](./COMPATIBILITY.md). |
|
|
293
285
|
| `MCP_TLS_KEY_PATH` | — | TLS key for native HTTPS |
|
|
294
286
|
| `MCP_TLS_CERT_PATH` | — | TLS cert for native HTTPS |
|
|
295
287
|
| `MCP_TLS_CA_PATH` | — | Optional CA bundle for native HTTPS; only used when the TLS key and cert are set |
|
|
@@ -322,7 +314,7 @@ Production containers must choose their rate-limit topology explicitly: set
|
|
|
322
314
|
Vercel support is kept as a reference proof of concept — we do not run a hosted deployment. See [docs/VERCEL_DEPLOYMENT.md](./docs/VERCEL_DEPLOYMENT.md) if you want to self-deploy.
|
|
323
315
|
|
|
324
316
|
Key points:
|
|
325
|
-
- Uses stateless request handling
|
|
317
|
+
- Uses stateless request handling and a shared atomic Redis rate limiter (SDK v2); GET replay is retired
|
|
326
318
|
- Requires Clerk or bearer auth
|
|
327
319
|
- Leave `MCP_TLS_*` unset (Vercel terminates HTTPS)
|
|
328
320
|
- Set `MCP_PUBLIC_BASE_URL` to your deployment URL so advertised MCP endpoints never depend on request headers
|
|
@@ -405,11 +397,10 @@ for the public threat model and assurance case.
|
|
|
405
397
|
|
|
406
398
|
<h2 align="center" id="roadmap">Roadmap</h2>
|
|
407
399
|
|
|
408
|
-
Release 0.
|
|
400
|
+
Release 0.15.0 moves to MCP SDK v2 and the 2026-07-28 spec.
|
|
409
401
|
The [roadmap](https://github.com/CodesWhat/portkey-admin-mcp/blob/main/ROADMAP.md) separates completed work from upstream contract and
|
|
410
|
-
tenant-verification gates. The
|
|
411
|
-
the same endpoint
|
|
412
|
-
still unassigned. See [compatibility and deprecations](./COMPATIBILITY.md).
|
|
402
|
+
tenant-verification gates. The MCP v2 migration shipped in 0.15.0 and keeps older
|
|
403
|
+
clients on the same endpoint while retiring session and replay storage. See [compatibility and deprecations](./COMPATIBILITY.md).
|
|
413
404
|
|
|
414
405
|
<hr>
|
|
415
406
|
|
|
@@ -428,7 +419,7 @@ tool catalog in this repository as authoritative when a third-party index lags.
|
|
|
428
419
|
<h2 align="center" id="built-with">Built With</h2>
|
|
429
420
|
|
|
430
421
|
[](https://www.typescriptlang.org/)
|
|
431
|
-
[](https://github.com/modelcontextprotocol/typescript-sdk)
|
|
432
423
|
[](https://zod.dev/)
|
|
433
424
|
[](https://biomejs.dev/)
|
|
434
425
|
[](https://nodejs.org/)
|