zuplo 7.8.8 → 7.8.10
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/docs/ai-gateway/azure-ai.mdx +132 -0
- package/docs/ai-gateway/cookbooks/sdk-path-shim.mdx +457 -0
- package/docs/ai-gateway/integrations/ai-sdk.mdx +127 -1
- package/docs/ai-gateway/integrations/claude-code.mdx +82 -180
- package/docs/ai-gateway/integrations/claude-desktop.mdx +61 -99
- package/docs/ai-gateway/integrations/codex.mdx +63 -57
- package/docs/ai-gateway/vertex-ai.mdx +32 -0
- package/docs/articles/custom-domains.mdx +3 -2
- package/docs/articles/source-control.mdx +4 -3
- package/docs/articles/testing.mdx +5 -5
- package/docs/articles/upstream-iam-auth.mdx +2 -2
- package/docs/concepts/how-zuplo-works.mdx +2 -1
- package/docs/dev-portal/migration.mdx +2 -2
- package/docs/getting-started/dev-portal/index.mdx +2 -2
- package/docs/getting-started/gateway/add-api-key-auth/index.mdx +3 -0
- package/docs/getting-started/gateway/add-api-key-auth/local.mdx +3 -0
- package/docs/getting-started/gateway/add-rate-limiting/index.mdx +3 -0
- package/docs/getting-started/gateway/add-rate-limiting/local.mdx +3 -0
- package/docs/getting-started/gateway/agent.mdx +2 -1
- package/docs/getting-started/gateway/deploy-to-the-edge/index.mdx +3 -0
- package/docs/getting-started/gateway/deploy-to-the-edge/local.mdx +3 -0
- package/docs/getting-started/gateway/dynamic-rate-limiting/index.mdx +3 -0
- package/docs/getting-started/gateway/dynamic-rate-limiting/local.mdx +3 -0
- package/docs/getting-started/gateway/setup-a-basic-gateway/index.mdx +4 -1
- package/docs/getting-started/gateway/setup-a-basic-gateway/local.mdx +4 -1
- package/docs/getting-started/mcp-gateway/local.mdx +31 -9
- package/docs/getting-started/mcp-gateway/portal.mdx +8 -7
- package/docs/getting-started/mcp-server/local.mdx +2 -2
- package/docs/getting-started/migrate/index.mdx +2 -2
- package/docs/mcp-gateway/connect-clients/claude-desktop.mdx +21 -19
- package/docs/mcp-gateway/connect-clients/overview.mdx +2 -1
- package/docs/policies/ai-gateway-auth-v2-inbound/doc.md +10 -0
- package/package.json +5 -5
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
category: API Management
|
|
3
|
+
disablePager: true
|
|
3
4
|
showLastModified: false
|
|
4
5
|
suggestEdit: false
|
|
5
6
|
title: Dynamic rate limiting - Editor
|
|
@@ -187,3 +188,5 @@ less than an hour.
|
|
|
187
188
|
questions answered
|
|
188
189
|
- Start generating revenue from your new API with our
|
|
189
190
|
[Monetization tutorial](../../../articles/monetization/index.mdx)
|
|
191
|
+
|
|
192
|
+
<TutorialPager build="gateway" method="local" step="dynamic-rate-limiting" />
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
category: API Management
|
|
3
|
+
disablePager: true
|
|
3
4
|
showLastModified: false
|
|
4
5
|
suggestEdit: false
|
|
5
|
-
title:
|
|
6
|
+
title: Set up a basic gateway - Portal
|
|
6
7
|
description:
|
|
7
8
|
Proxy an origin API through a managed Zuplo gateway, add your first route, and
|
|
8
9
|
see traffic flowing end to end in the Zuplo Portal.
|
|
@@ -123,3 +124,5 @@ Note - Zuplo also supports building and running your API locally. To learn more
|
|
|
123
124
|
response from Step 2.
|
|
124
125
|
|
|
125
126
|
</Stepper>
|
|
127
|
+
|
|
128
|
+
<TutorialPager build="gateway" method="portal" step="setup-a-basic-gateway" />
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
category: API Management
|
|
3
|
+
disablePager: true
|
|
3
4
|
showLastModified: false
|
|
4
5
|
suggestEdit: false
|
|
5
|
-
title:
|
|
6
|
+
title: Set up a basic gateway - Editor
|
|
6
7
|
description:
|
|
7
8
|
Proxy an origin API through a managed Zuplo gateway, add your first route, and
|
|
8
9
|
see traffic flowing end to end with the Zuplo CLI and your editor.
|
|
@@ -116,3 +117,5 @@ project template, which ships with a working todo API.
|
|
|
116
117
|
gateway is now serving traffic locally.
|
|
117
118
|
|
|
118
119
|
</Stepper>
|
|
120
|
+
|
|
121
|
+
<TutorialPager build="gateway" method="local" step="setup-a-basic-gateway" />
|
|
@@ -4,8 +4,8 @@ showLastModified: false
|
|
|
4
4
|
suggestEdit: false
|
|
5
5
|
title: Getting Started with MCP Gateway - Editor
|
|
6
6
|
description:
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
Build an MCP Gateway locally with the Zuplo CLI, connect an upstream MCP
|
|
8
|
+
server, and test its tools with a local MCP client.
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
<WizardSteps build="mcp-gateway" method="local" />
|
|
@@ -222,11 +222,33 @@ older project and the build complains about the compatibility date, see
|
|
|
222
222
|
|
|
223
223
|
6. **Connect Claude Desktop**
|
|
224
224
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
`
|
|
225
|
+
Use a local stdio bridge so Claude Desktop can reach your local gateway.
|
|
226
|
+
Native remote connectors connect from Anthropic's servers and cannot reach
|
|
227
|
+
`127.0.0.1` on your computer.
|
|
228
228
|
|
|
229
|
-
Claude Desktop
|
|
229
|
+
In Claude Desktop, open **Settings → Developer → Edit Config** and add this
|
|
230
|
+
entry to `claude_desktop_config.json`, preserving any existing servers:
|
|
231
|
+
|
|
232
|
+
```json title="claude_desktop_config.json"
|
|
233
|
+
{
|
|
234
|
+
"mcpServers": {
|
|
235
|
+
"Zuplo MCP": {
|
|
236
|
+
"command": "npx",
|
|
237
|
+
"args": [
|
|
238
|
+
"-y",
|
|
239
|
+
"mcp-remote",
|
|
240
|
+
"http://127.0.0.1:9000/mcp/linear-v1",
|
|
241
|
+
"--allow-http"
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Save the file and restart Claude Desktop. The bridge opens the gateway's
|
|
249
|
+
OAuth flow on first connection.
|
|
250
|
+
|
|
251
|
+
In the browser:
|
|
230
252
|
1. The dev-login shortcut signs you in without any IdP prompt.
|
|
231
253
|
2. The gateway's consent page lists Linear with a **Connect** button.
|
|
232
254
|
3. Click **Connect**, complete Linear's OAuth flow, then click **Authorize**
|
|
@@ -234,9 +256,9 @@ older project and the build complains about the compatibility date, see
|
|
|
234
256
|
|
|
235
257
|
:::tip{title="Checkpoint: Claude is connected"}
|
|
236
258
|
|
|
237
|
-
Back in Claude Desktop, the
|
|
238
|
-
|
|
239
|
-
gateway just issued.
|
|
259
|
+
Back in Claude Desktop, the **Zuplo MCP** server appears under **Settings →
|
|
260
|
+
Developer**. Its tools are available in chat. Subsequent requests reuse the
|
|
261
|
+
tokens the gateway just issued.
|
|
240
262
|
|
|
241
263
|
:::
|
|
242
264
|
|
|
@@ -4,7 +4,8 @@ showLastModified: false
|
|
|
4
4
|
suggestEdit: false
|
|
5
5
|
title: Getting Started with MCP Gateway - Portal
|
|
6
6
|
description:
|
|
7
|
-
|
|
7
|
+
Connect an MCP client to Linear through a Zuplo MCP Gateway in the Portal,
|
|
8
|
+
then sign in and call a Linear tool through the gateway.
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
<WizardSteps build="mcp-gateway" method="portal" />
|
|
@@ -155,9 +156,9 @@ your machine.
|
|
|
155
156
|
|
|
156
157
|
:::tip{title="Upstream doesn't use OAuth?"}
|
|
157
158
|
|
|
158
|
-
Pick **None**
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
Pick **None** when the upstream doesn't require authentication. If gateway
|
|
160
|
+
OAuth is enabled, the gateway validates and removes its access token before
|
|
161
|
+
forwarding the request. It doesn't use that token to authenticate upstream.
|
|
161
162
|
|
|
162
163
|
:::
|
|
163
164
|
|
|
@@ -240,8 +241,8 @@ your machine.
|
|
|
240
241
|
Your route is live at `https://<your-gateway>/mcp/linear-v1`. Find the public
|
|
241
242
|
URL via the **Gateway deployed** button in the toolbar.
|
|
242
243
|
|
|
243
|
-
Open Claude Desktop, go to **
|
|
244
|
-
|
|
244
|
+
Open Claude Desktop, go to **Customize → Connectors**, click **+**, then
|
|
245
|
+
**Add custom connector**. Paste the route URL and click **Add**.
|
|
245
246
|
|
|
246
247
|
Claude Desktop opens the gateway's OAuth flow in a browser:
|
|
247
248
|
1. Sign in with your identity provider (Auth0 in this example).
|
|
@@ -251,7 +252,7 @@ your machine.
|
|
|
251
252
|
|
|
252
253
|
:::tip{title="Checkpoint: Claude is connected"}
|
|
253
254
|
|
|
254
|
-
Back in Claude Desktop, the new connector appears in **
|
|
255
|
+
Back in Claude Desktop, the new connector appears in **Customize →
|
|
255
256
|
Connectors** marked as connected. Subsequent requests reuse the tokens the
|
|
256
257
|
gateway just issued.
|
|
257
258
|
|
|
@@ -4,8 +4,8 @@ showLastModified: false
|
|
|
4
4
|
suggestEdit: false
|
|
5
5
|
title: Getting Started with MCP Server - Editor
|
|
6
6
|
description:
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
Expose a sample API as an MCP server with the Zuplo CLI and your editor, then
|
|
8
|
+
connect an MCP client and call a tool locally.
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
<WizardSteps build="mcp-server" method="local" />
|
|
@@ -8,8 +8,8 @@ centered: false
|
|
|
8
8
|
toc: false
|
|
9
9
|
title: Getting Started with API Migration
|
|
10
10
|
description:
|
|
11
|
-
Import an OpenAPI document
|
|
12
|
-
in the Portal, locally
|
|
11
|
+
Import an OpenAPI document, route requests through Zuplo, and compare them
|
|
12
|
+
with your existing backend in the Portal, locally, or with an AI agent.
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
<WizardSteps build="migrate" />
|
|
@@ -26,9 +26,13 @@ Claude's connector settings, then complete the browser-based OAuth flow.
|
|
|
26
26
|
## Get the route URL
|
|
27
27
|
|
|
28
28
|
Each MCP route in `config/routes.oas.json` is reachable at
|
|
29
|
-
`https://{deploymentUrl}/{routePath}` once deployed
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
`https://{deploymentUrl}/{routePath}` once deployed. The `{routePath}` is the
|
|
30
|
+
path you set on the route — for example `/mcp/linear-v1`.
|
|
31
|
+
|
|
32
|
+
Native remote connectors connect from Anthropic's servers, so the gateway URL
|
|
33
|
+
must be reachable from those servers. For a gateway running locally with
|
|
34
|
+
`zuplo dev`, use the [manual configuration](#use-a-manual-config-file-advanced)
|
|
35
|
+
with `http://127.0.0.1:9000/{routePath}`.
|
|
32
36
|
|
|
33
37
|
## Add the connector in Claude
|
|
34
38
|
|
|
@@ -37,14 +41,12 @@ identical in each.
|
|
|
37
41
|
|
|
38
42
|
<Stepper>
|
|
39
43
|
|
|
40
|
-
1. **Open connector settings.**
|
|
41
|
-
|
|
42
|
-
- **Claude.ai:** open **Settings** → **Connectors** in the web app.
|
|
44
|
+
1. **Open connector settings.** In Claude Desktop or Claude.ai, open **Customize
|
|
45
|
+
→ Connectors**.
|
|
43
46
|
|
|
44
47
|
2. **Add a custom connector.**
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
connector**.
|
|
49
|
+
Click **+**, then **Add custom connector**.
|
|
48
50
|
|
|
49
51
|
3. **Enter the gateway URL.**
|
|
50
52
|
|
|
@@ -76,7 +78,7 @@ identical in each.
|
|
|
76
78
|
:::tip
|
|
77
79
|
|
|
78
80
|
You can adjust which tools Claude is allowed to use per connector. Open the
|
|
79
|
-
connector in
|
|
81
|
+
connector in Customize → Connectors and toggle individual tools on or off.
|
|
80
82
|
|
|
81
83
|
:::
|
|
82
84
|
|
|
@@ -102,21 +104,22 @@ in addition to DCR.
|
|
|
102
104
|
If you need to script the install or share the configuration with a team, Claude
|
|
103
105
|
Desktop also reads `claude_desktop_config.json`. This approach uses
|
|
104
106
|
[`mcp-remote`](https://www.npmjs.com/package/mcp-remote) as a stdio bridge to
|
|
105
|
-
the
|
|
106
|
-
|
|
107
|
-
automatically on every launch without going through the UI.
|
|
107
|
+
the gateway. Use it for a gateway running on your computer or when you need
|
|
108
|
+
file-based configuration. This approach requires Node.js and `npx`.
|
|
108
109
|
|
|
109
110
|
1. In Claude Desktop, open **Settings** → **Developer** → **Edit Config**. This
|
|
110
111
|
opens `claude_desktop_config.json` in your editor.
|
|
111
112
|
2. Add or merge in the following entry, replacing `Zuplo MCP` with the name you
|
|
112
|
-
want to show, and the URL with your route URL
|
|
113
|
+
want to show, and the URL with your route URL. For local development, use
|
|
114
|
+
`http://127.0.0.1:9000/{routePath}` instead of the HTTPS URL and append
|
|
115
|
+
`"--allow-http"` to the `args` array:
|
|
113
116
|
|
|
114
117
|
```json title="claude_desktop_config.json"
|
|
115
118
|
{
|
|
116
119
|
"mcpServers": {
|
|
117
120
|
"Zuplo MCP": {
|
|
118
121
|
"command": "npx",
|
|
119
|
-
"args": ["mcp-remote", "https://{deploymentUrl}/{routePath}"]
|
|
122
|
+
"args": ["-y", "mcp-remote", "https://{deploymentUrl}/{routePath}"]
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
125
|
}
|
|
@@ -131,10 +134,9 @@ automatically on every launch without going through the UI.
|
|
|
131
134
|
|
|
132
135
|
:::note
|
|
133
136
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
file-based configuration.
|
|
137
|
+
Use native custom connectors for a deployed gateway. They do not require
|
|
138
|
+
Node.js. Use the `mcp-remote` bridge for a local gateway or file-based
|
|
139
|
+
configuration.
|
|
138
140
|
|
|
139
141
|
:::
|
|
140
142
|
|
|
@@ -148,7 +150,7 @@ file-based configuration.
|
|
|
148
150
|
configured correctly and that browser cookies are enabled for the gateway
|
|
149
151
|
origin.
|
|
150
152
|
- **Tools do not appear after a successful authorization.** Open the connector
|
|
151
|
-
in
|
|
153
|
+
in Customize → Connectors and check that each tool is enabled. Disabled tools
|
|
152
154
|
are hidden from the attachment menu.
|
|
153
155
|
|
|
154
156
|
## Related
|
|
@@ -119,7 +119,8 @@ tracks **what each client can consume**, not what the gateway forwards.
|
|
|
119
119
|
|
|
120
120
|
## Per-client guides
|
|
121
121
|
|
|
122
|
-
- [Claude Desktop](./claude-desktop.mdx) — add
|
|
122
|
+
- [Claude Desktop and Claude.ai](./claude-desktop.mdx) — add a custom remote
|
|
123
|
+
connector. For a local gateway, use the Claude Desktop manual configuration.
|
|
123
124
|
- [Claude Code](./claude-code.mdx) — add via the `claude mcp add` CLI command.
|
|
124
125
|
- [ChatGPT](./chatgpt.mdx) — add via Settings → Connectors (Developer Mode
|
|
125
126
|
required).
|
|
@@ -202,6 +202,16 @@ policies skip passthrough requests so a cache hit cannot bypass upstream
|
|
|
202
202
|
authentication. ZuploDemo is excluded because it must continue to use the
|
|
203
203
|
gateway's deployment credential.
|
|
204
204
|
|
|
205
|
+
When the primary provider is OpenAI and the passed-through credential is a
|
|
206
|
+
ChatGPT login token, such as the one Codex CLI sends after `codex login`, the
|
|
207
|
+
gateway sends `/v1/responses` requests to the ChatGPT Codex backend at
|
|
208
|
+
`https://chatgpt.com/backend-api/codex`. OpenAI only accepts those tokens there;
|
|
209
|
+
the public API rejects them. Requests that pass through an OpenAI platform API
|
|
210
|
+
key keep going to `https://api.openai.com`. The ChatGPT backend only speaks
|
|
211
|
+
streaming. For a request with `stream: false`, the gateway streams from the
|
|
212
|
+
backend and returns the completed response as one JSON body, the same shape
|
|
213
|
+
`https://api.openai.com` returns for a non-streaming request.
|
|
214
|
+
|
|
205
215
|
A missing, empty, or invalid dedicated key fails authentication; the gateway
|
|
206
216
|
never retries with `Authorization` as the Zuplo key. A missing or empty
|
|
207
217
|
`Authorization` also returns 401 in this mode.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zuplo",
|
|
3
|
-
"version": "7.8.
|
|
3
|
+
"version": "7.8.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The official Zuplo CLI for local development and platform management",
|
|
6
6
|
"homepage": "https://zuplo.com/docs/cli/overview",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"zuplo": "zuplo.js"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@zuplo/cli": "7.8.
|
|
36
|
-
"@zuplo/core": "7.8.
|
|
37
|
-
"@zuplo/runtime": "7.8.
|
|
38
|
-
"@zuplo/test": "7.8.
|
|
35
|
+
"@zuplo/cli": "7.8.10",
|
|
36
|
+
"@zuplo/core": "7.8.10",
|
|
37
|
+
"@zuplo/runtime": "7.8.10",
|
|
38
|
+
"@zuplo/test": "7.8.10"
|
|
39
39
|
}
|
|
40
40
|
}
|