zuplo 7.8.7 → 7.8.9
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/custom-policies.mdx +2 -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/usage-limits.mdx +2 -2
- package/docs/api-management/overview.md +2 -2
- package/docs/articles/add-api-to-backstage.mdx +4 -3
- package/docs/articles/api-key-consumer-bucket-portal-ui.mdx +1 -1
- package/docs/articles/api-key-management.mdx +1 -1
- package/docs/articles/custom-domains.mdx +3 -2
- package/docs/articles/migrate-from-apigee.md +3 -3
- package/docs/articles/migrate-from-aws-api-gateway.md +3 -3
- package/docs/articles/migrate-from-azure-apim.md +3 -3
- package/docs/articles/migrate-from-kong.md +3 -3
- package/docs/articles/source-control-setup-github.mdx +2 -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/cli/create-zuplo-api.mdx +4 -4
- package/docs/cli/openapi-merge.mdx +1 -1
- package/docs/cli/openapi-merge.partial.mdx +1 -1
- package/docs/concepts/ai-gateway.mdx +1 -1
- package/docs/concepts/how-zuplo-works.mdx +2 -1
- package/docs/concepts/mcp.mdx +4 -4
- package/docs/dedicated/architecture.mdx +1 -1
- package/docs/dev-portal/migration.mdx +2 -2
- package/docs/errors/not-found.mdx +1 -1
- package/docs/getting-started/ai-gateway/portal.mdx +181 -0
- package/docs/getting-started/dev-portal/agent.mdx +148 -0
- package/docs/getting-started/dev-portal/index.mdx +26 -0
- package/docs/getting-started/dev-portal/local.mdx +213 -0
- package/docs/getting-started/dev-portal/portal.mdx +146 -0
- package/docs/{articles/step-3-add-api-key-auth.mdx → getting-started/gateway/add-api-key-auth/index.mdx} +32 -23
- package/docs/{articles/step-3-add-api-key-auth-local.mdx → getting-started/gateway/add-api-key-auth/local.mdx} +28 -20
- package/docs/{articles/step-2-add-rate-limiting.mdx → getting-started/gateway/add-rate-limiting/index.mdx} +22 -13
- package/docs/{articles/step-2-add-rate-limiting-local.mdx → getting-started/gateway/add-rate-limiting/local.mdx} +24 -14
- package/docs/getting-started/gateway/agent.mdx +199 -0
- package/docs/{articles/step-4-deploying-to-the-edge.mdx → getting-started/gateway/deploy-to-the-edge/index.mdx} +39 -27
- package/docs/{articles/step-4-deploying-to-the-edge-local.mdx → getting-started/gateway/deploy-to-the-edge/local.mdx} +48 -17
- package/docs/{articles/step-5-dynamic-rate-limiting.mdx → getting-started/gateway/dynamic-rate-limiting/index.mdx} +24 -12
- package/docs/{articles/step-5-dynamic-rate-limiting-local.mdx → getting-started/gateway/dynamic-rate-limiting/local.mdx} +24 -12
- package/docs/getting-started/gateway/index.mdx +24 -0
- package/docs/{articles/step-1-setup-basic-gateway.mdx → getting-started/gateway/setup-a-basic-gateway/index.mdx} +33 -21
- package/docs/{articles/step-1-setup-basic-gateway-local.mdx → getting-started/gateway/setup-a-basic-gateway/local.mdx} +24 -15
- package/docs/getting-started/index.mdx +25 -0
- package/docs/getting-started/mcp-gateway/agent.mdx +161 -0
- package/docs/getting-started/mcp-gateway/index.mdx +25 -0
- package/docs/{mcp-gateway/quickstart-local.mdx → getting-started/mcp-gateway/local.mdx} +64 -38
- package/docs/{mcp-gateway/quickstart.mdx → getting-started/mcp-gateway/portal.mdx} +71 -54
- package/docs/getting-started/mcp-server/agent.mdx +152 -0
- package/docs/getting-started/mcp-server/index.mdx +25 -0
- package/docs/{articles/mcp-quickstart-local.mdx → getting-started/mcp-server/local.mdx} +24 -13
- package/docs/{articles/mcp-quickstart.mdx → getting-started/mcp-server/portal.mdx} +35 -15
- package/docs/getting-started/migrate/agent.mdx +129 -0
- package/docs/getting-started/migrate/index.mdx +25 -0
- package/docs/getting-started/migrate/local.mdx +141 -0
- package/docs/getting-started/migrate/portal.mdx +129 -0
- package/docs/home.mdx +6 -0
- package/docs/mcp-gateway/connect-clients/chatgpt.mdx +2 -1
- package/docs/mcp-gateway/connect-clients/claude-code.mdx +2 -1
- package/docs/mcp-gateway/connect-clients/claude-desktop.mdx +23 -20
- package/docs/mcp-gateway/connect-clients/cursor.mdx +2 -1
- package/docs/mcp-gateway/connect-clients/overview.mdx +2 -1
- package/docs/mcp-gateway/connect-clients/vs-code.mdx +2 -1
- package/docs/mcp-gateway/how-it-works.mdx +2 -2
- package/docs/mcp-gateway/how-to/connect-upstream-api-key.mdx +4 -3
- package/docs/mcp-gateway/how-to/curate-tools.mdx +3 -2
- package/docs/mcp-gateway/overview.mdx +3 -3
- package/docs/policies/ai-gateway-smart-router-inbound/doc.md +14 -0
- package/docs/policies/akamai-ai-firewall-v2-inbound/doc.md +7 -0
- package/package.json +5 -5
- package/docs/ai-gateway/getting-started.mdx +0 -307
- package/docs/dev-portal/local-development.mdx +0 -72
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Migration Guides
|
|
3
|
+
showLastModified: false
|
|
4
|
+
suggestEdit: false
|
|
5
|
+
sidebar_label: Agent
|
|
6
|
+
title: Getting Started with API Migration - Agent
|
|
7
|
+
description:
|
|
8
|
+
Use a coding agent to import an OpenAPI document and configure upstream
|
|
9
|
+
forwarding, then review and test the API before migrating clients.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<WizardSteps build="migrate" method="agent" />
|
|
13
|
+
|
|
14
|
+
<MethodTabs build="migrate" method="agent" />
|
|
15
|
+
|
|
16
|
+
Have a coding agent import an existing API and configure Zuplo to forward its
|
|
17
|
+
requests. You'll review the route changes and verify responses before moving any
|
|
18
|
+
clients.
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
- [Node.js](https://nodejs.org/en/download) 24 or later and Git.
|
|
23
|
+
- A [Zuplo account](https://portal.zuplo.com) and an installed coding agent.
|
|
24
|
+
- Your API's OpenAPI document and upstream URL, or the Petstore document linked
|
|
25
|
+
below.
|
|
26
|
+
|
|
27
|
+
## Migrate your API with an agent
|
|
28
|
+
|
|
29
|
+
<Stepper>
|
|
30
|
+
|
|
31
|
+
1. **Create the migration project**
|
|
32
|
+
|
|
33
|
+
Run:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx create-zuplo-api@latest migrated-api
|
|
37
|
+
cd migrated-api
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
When prompted, choose **Yes** to create a matching Portal project, complete
|
|
41
|
+
sign-in, and select your Zuplo account. Select the coding agent you use when
|
|
42
|
+
asked. The CLI creates and links the hosted project. See
|
|
43
|
+
[`create-zuplo-api`](../../cli/create-zuplo-api.mdx).
|
|
44
|
+
|
|
45
|
+
:::tip{title="Zuplo skills"}
|
|
46
|
+
|
|
47
|
+
The scaffold installs Zuplo skills in this project for Codex and Cursor and
|
|
48
|
+
configures the Claude Code plugin. If setup fails, follow
|
|
49
|
+
[Agent Skills](../../build-with-ai.mdx#agent-skills) from this directory
|
|
50
|
+
before starting your agent.
|
|
51
|
+
|
|
52
|
+
:::
|
|
53
|
+
|
|
54
|
+
2. **Get your existing OpenAPI document**
|
|
55
|
+
|
|
56
|
+
Get your API's OpenAPI document from its repository, API documentation, or
|
|
57
|
+
current gateway and save a copy in the project root. The prompt below uses
|
|
58
|
+
`openapi.json`; substitute your file's name if it differs.
|
|
59
|
+
|
|
60
|
+
<p>
|
|
61
|
+
If you don't have an OpenAPI document, download the{" "}
|
|
62
|
+
<a href="/docs/downloads/petstore-openapi.json" download="openapi.json">
|
|
63
|
+
Swagger Petstore OpenAPI document
|
|
64
|
+
</a>
|
|
65
|
+
.
|
|
66
|
+
</p>
|
|
67
|
+
|
|
68
|
+
Give the agent your upstream URL and current authentication requirements.
|
|
69
|
+
Choose a read-only operation to verify. For Petstore, use
|
|
70
|
+
`https://petstore3.swagger.io/api/v3/pet/findByStatus?status=available`.
|
|
71
|
+
|
|
72
|
+
3. **Give the agent a bounded migration task**
|
|
73
|
+
|
|
74
|
+
Open the agent in the project directory. Provide the upstream URL and
|
|
75
|
+
operation you chose, then use this prompt:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
Read the project instructions and bundled Zuplo docs. Import ./openapi.json
|
|
79
|
+
into ./config/routes.oas.json with:
|
|
80
|
+
npx zuplo openapi merge --source ./openapi.json --destination ./config/routes.oas.json
|
|
81
|
+
|
|
82
|
+
For the read-only operation I selected, configure x-zuplo-route with a
|
|
83
|
+
urlForwardHandler from $import(@zuplo/runtime). Set options.baseUrl to my
|
|
84
|
+
original API's base URL. Check imported paths so server URL prefixes are
|
|
85
|
+
not duplicated. Preserve the operationId and unrelated route configuration.
|
|
86
|
+
|
|
87
|
+
Start npm run dev. Call the original API and the matching localhost:9000
|
|
88
|
+
route with the same query parameters and required headers. Compare their
|
|
89
|
+
status codes and response structure, allowing for changes in live data.
|
|
90
|
+
Show the diff and report actual test results, including failures.
|
|
91
|
+
|
|
92
|
+
Do not delete other routes, change client URLs or DNS, add credentials to
|
|
93
|
+
source files, or deploy. Identify any imported paths, security declarations,
|
|
94
|
+
or server URL prefixes that need manual review. For private APIs, OpenAPI
|
|
95
|
+
security metadata is not a substitute for gateway authentication policies.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Ask the agent to preserve your existing authentication, rate limits, and
|
|
99
|
+
transformations explicitly; don't infer them from the OpenAPI file alone.
|
|
100
|
+
|
|
101
|
+
4. **Review and verify the migration**
|
|
102
|
+
|
|
103
|
+
Check that the handler points to the original API, that server-path prefixes
|
|
104
|
+
aren't duplicated, and that unrelated routes remain intact. Review `git diff`
|
|
105
|
+
before accepting the agent's changes.
|
|
106
|
+
|
|
107
|
+
With `npm run dev` running, call your chosen operation directly and through
|
|
108
|
+
the local gateway. Use the same headers and query parameters in both
|
|
109
|
+
requests, and compare the status and response structure. For a private API,
|
|
110
|
+
also test invalid or missing credentials and the request bodies and error
|
|
111
|
+
responses that clients depend on.
|
|
112
|
+
|
|
113
|
+
5. **Deploy and move traffic gradually**
|
|
114
|
+
|
|
115
|
+
Follow [Deploy to the edge](../gateway/deploy-to-the-edge/local.mdx). Repeat
|
|
116
|
+
the tests against the deployed gateway URL, then point one test client at it.
|
|
117
|
+
Keep the original endpoint available while migrating clients in stages so you
|
|
118
|
+
can restore their previous base URL if needed.
|
|
119
|
+
|
|
120
|
+
</Stepper>
|
|
121
|
+
|
|
122
|
+
## Next steps
|
|
123
|
+
|
|
124
|
+
- [Editor tutorial](./local.mdx) for the exact route configuration and update
|
|
125
|
+
workflow.
|
|
126
|
+
- [Migration overview](../../articles/migration-overview.md) for translating
|
|
127
|
+
another gateway's configuration.
|
|
128
|
+
- [API key authentication](../gateway/add-api-key-auth/local.mdx) to protect
|
|
129
|
+
routes with managed keys.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Migration Guides
|
|
3
|
+
fullWidth: true
|
|
4
|
+
disablePager: true
|
|
5
|
+
showLastModified: false
|
|
6
|
+
suggestEdit: false
|
|
7
|
+
centered: false
|
|
8
|
+
toc: false
|
|
9
|
+
title: Getting Started with API Migration
|
|
10
|
+
description:
|
|
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
|
+
---
|
|
14
|
+
|
|
15
|
+
<WizardSteps build="migrate" />
|
|
16
|
+
|
|
17
|
+
Put Zuplo in front of your existing API by importing its OpenAPI document and
|
|
18
|
+
forwarding requests to your backend. This tutorial helps you verify the gateway
|
|
19
|
+
before you change where your clients send traffic.
|
|
20
|
+
|
|
21
|
+
Bring your OpenAPI document and backend URL, or use the included Petstore
|
|
22
|
+
example. Choose a workflow to import the API and compare a read-only request
|
|
23
|
+
through Zuplo with the same request sent directly to your backend.
|
|
24
|
+
|
|
25
|
+
<MethodPicker build="migrate" />
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Migration Guides
|
|
3
|
+
showLastModified: false
|
|
4
|
+
suggestEdit: false
|
|
5
|
+
sidebar_label: Editor
|
|
6
|
+
title: Getting Started with API Migration - Editor
|
|
7
|
+
description:
|
|
8
|
+
Import an existing API into a local Zuplo project, configure upstream
|
|
9
|
+
forwarding, compare responses, and deploy for a gradual migration.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<WizardSteps build="migrate" method="local" />
|
|
13
|
+
|
|
14
|
+
<MethodTabs build="migrate" method="local" />
|
|
15
|
+
|
|
16
|
+
Import an existing API into a local Zuplo project, add its upstream handler, and
|
|
17
|
+
compare responses before moving client traffic.
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
- [Node.js](https://nodejs.org/en/download) 24 or later and Git.
|
|
22
|
+
- A terminal and an editor.
|
|
23
|
+
- A [Zuplo account](https://portal.zuplo.com) for linking and deployment.
|
|
24
|
+
|
|
25
|
+
## Import and test your API
|
|
26
|
+
|
|
27
|
+
<Stepper>
|
|
28
|
+
|
|
29
|
+
1. **Create a project**
|
|
30
|
+
|
|
31
|
+
Run:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx create-zuplo-api@latest migrated-api
|
|
35
|
+
cd migrated-api
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
When prompted, choose **Yes** to create a matching Portal project, then
|
|
39
|
+
complete sign-in and account selection to link your local copy. For an
|
|
40
|
+
existing project, work on a new Git branch before importing routes.
|
|
41
|
+
|
|
42
|
+
2. **Get your existing OpenAPI document**
|
|
43
|
+
|
|
44
|
+
Get your API's OpenAPI document from its repository, API documentation, or
|
|
45
|
+
current gateway. Save a copy in the project root. The commands below use
|
|
46
|
+
`openapi.json`; substitute your file's name if it differs.
|
|
47
|
+
|
|
48
|
+
<p>
|
|
49
|
+
If you don't have an OpenAPI document, download the{" "}
|
|
50
|
+
<a href="/docs/downloads/petstore-openapi.json" download="openapi.json">
|
|
51
|
+
Swagger Petstore OpenAPI document
|
|
52
|
+
</a>
|
|
53
|
+
.
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
Choose a read-only operation and call it directly on the original API. Record
|
|
57
|
+
its URL, required headers, query parameters, and response. For Petstore, try:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
curl -i "https://petstore3.swagger.io/api/v3/pet/findByStatus?status=available"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
3. **Import the routes**
|
|
64
|
+
|
|
65
|
+
Run:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npx zuplo openapi merge --source ./openapi.json --destination ./config/routes.oas.json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Open `config/routes.oas.json` and find the operation you chose. The
|
|
72
|
+
destination must end in `.oas.json`. See
|
|
73
|
+
[`openapi merge`](../../cli/openapi-merge.mdx) for importing from URLs and
|
|
74
|
+
controlling server paths.
|
|
75
|
+
|
|
76
|
+
4. **Configure forwarding**
|
|
77
|
+
|
|
78
|
+
On the operation you chose, set `x-zuplo-route` to the following, replacing
|
|
79
|
+
`YOUR_UPSTREAM_BASE_URL` with your original API's base URL:
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
"x-zuplo-route": {
|
|
83
|
+
"corsPolicy": "none",
|
|
84
|
+
"handler": {
|
|
85
|
+
"module": "$import(@zuplo/runtime)",
|
|
86
|
+
"export": "urlForwardHandler",
|
|
87
|
+
"options": { "baseUrl": "YOUR_UPSTREAM_BASE_URL" }
|
|
88
|
+
},
|
|
89
|
+
"policies": { "inbound": [] }
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Importing OpenAPI describes the route; this handler makes it forward to the
|
|
94
|
+
upstream. See [URL Forward](../../handlers/url-forward.mdx). Check the
|
|
95
|
+
imported path so any server prefix appears only once. For Petstore, use
|
|
96
|
+
`https://petstore3.swagger.io/api/v3` if the route path is
|
|
97
|
+
`/pet/findByStatus`, or `https://petstore3.swagger.io` if it already starts
|
|
98
|
+
with `/api/v3`.
|
|
99
|
+
|
|
100
|
+
5. **Compare local and upstream responses**
|
|
101
|
+
|
|
102
|
+
Start `npm run dev`. In a second terminal, run:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
curl -i "http://localhost:9000/YOUR_ROUTE"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Replace `YOUR_ROUTE` with the imported route path. Include the same headers
|
|
109
|
+
and query parameters as your original request, such as `status=available` for
|
|
110
|
+
Petstore. Compare the status and response structure with the original API;
|
|
111
|
+
live data can change between requests. Check the gateway logs if you get an
|
|
112
|
+
error.
|
|
113
|
+
|
|
114
|
+
6. **Preserve behavior when importing updates**
|
|
115
|
+
|
|
116
|
+
Before re-importing a changed OpenAPI file, commit your work. Run the same
|
|
117
|
+
merge command and review `git diff`. The importer merges routes by path and
|
|
118
|
+
method and preserves Zuplo route configuration. Routes absent from the new
|
|
119
|
+
document aren't automatically deleted; review them explicitly.
|
|
120
|
+
|
|
121
|
+
For your own API, translate authentication, rate limits, and transformations
|
|
122
|
+
into Zuplo policies. OpenAPI security declarations don't enforce access
|
|
123
|
+
control. Test both allowed and rejected requests, plus the headers, query
|
|
124
|
+
parameters, and bodies your clients send. The
|
|
125
|
+
[migration overview](../../articles/migration-overview.md) covers existing
|
|
126
|
+
gateway configurations.
|
|
127
|
+
|
|
128
|
+
7. **Deploy and move a test client**
|
|
129
|
+
|
|
130
|
+
Follow [Deploy to the edge](../gateway/deploy-to-the-edge/local.mdx), then
|
|
131
|
+
repeat your tests against the deployed gateway URL. Change one test client's
|
|
132
|
+
base URL to that gateway and verify its workflow before moving more clients.
|
|
133
|
+
Keep the original endpoint available for rollback.
|
|
134
|
+
|
|
135
|
+
</Stepper>
|
|
136
|
+
|
|
137
|
+
## Next steps
|
|
138
|
+
|
|
139
|
+
- [Add API key authentication](../gateway/add-api-key-auth/local.mdx).
|
|
140
|
+
- [Configure upstream AWS authentication](../../articles/upstream-iam-auth.mdx).
|
|
141
|
+
- [Plan your full migration](../../articles/migration-overview.md).
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Migration Guides
|
|
3
|
+
showLastModified: false
|
|
4
|
+
suggestEdit: false
|
|
5
|
+
sidebar_label: Portal
|
|
6
|
+
title: Getting Started with API Migration - Portal
|
|
7
|
+
description:
|
|
8
|
+
Import an OpenAPI document in the Portal, forward requests to your existing
|
|
9
|
+
API, and verify a route before moving client traffic.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<WizardSteps build="migrate" method="portal" />
|
|
13
|
+
|
|
14
|
+
<MethodTabs build="migrate" method="portal" />
|
|
15
|
+
|
|
16
|
+
Put Zuplo in front of an existing API by importing its OpenAPI document and
|
|
17
|
+
forwarding requests to the original backend. You'll test one read-only route
|
|
18
|
+
before changing any client traffic.
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
- A [Zuplo account](https://portal.zuplo.com).
|
|
23
|
+
- Your existing API's OpenAPI document in JSON or YAML and its upstream URL.
|
|
24
|
+
|
|
25
|
+
## Get your existing OpenAPI document
|
|
26
|
+
|
|
27
|
+
Get the OpenAPI document for the API you want to migrate from its repository,
|
|
28
|
+
API documentation, or current gateway. Download or export the existing file; you
|
|
29
|
+
don't need to write a new one for this tutorial.
|
|
30
|
+
|
|
31
|
+
<p>
|
|
32
|
+
If you don't have an OpenAPI document, download the{" "}
|
|
33
|
+
<a href="/docs/downloads/petstore-openapi.json" download="openapi.json">
|
|
34
|
+
Swagger Petstore OpenAPI document
|
|
35
|
+
</a>
|
|
36
|
+
.
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
Choose a read-only operation and call it directly on the original API. You'll
|
|
40
|
+
compare that response with the gateway's response. For Petstore, you can use
|
|
41
|
+
[`GET /pet/findByStatus?status=available`](https://petstore3.swagger.io/api/v3/pet/findByStatus?status=available).
|
|
42
|
+
|
|
43
|
+
## Import and test a route
|
|
44
|
+
|
|
45
|
+
<Stepper>
|
|
46
|
+
|
|
47
|
+
1. **Create the gateway**
|
|
48
|
+
|
|
49
|
+
In [**Projects**](https://portal.zuplo.com/+/account/projects), click **New
|
|
50
|
+
Project**, select **API & MCP Gateway**, enter `migrated-api`, and click
|
|
51
|
+
**Create Project**.
|
|
52
|
+
|
|
53
|
+
2. **Import the document**
|
|
54
|
+
|
|
55
|
+
Open **Code → config/routes.oas.json** and click **Import OpenAPI**. Upload
|
|
56
|
+
your OpenAPI file, review the routes, and click **Complete Import**.
|
|
57
|
+
|
|
58
|
+
<ModalScreenshot>
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
</ModalScreenshot>
|
|
63
|
+
|
|
64
|
+
The Route Designer should now list your API's routes. Importing an API
|
|
65
|
+
description doesn't configure its forwarding behavior or enforce its security
|
|
66
|
+
requirements; configure those next.
|
|
67
|
+
|
|
68
|
+
3. **Set the upstream handler**
|
|
69
|
+
|
|
70
|
+
Select the read-only route you chose. Under **Request Handler**, select **URL
|
|
71
|
+
Forward** and set **Forward to** to your original API's base URL. Save your
|
|
72
|
+
changes.
|
|
73
|
+
|
|
74
|
+
The [URL Forward handler](../../handlers/url-forward.mdx) appends the request
|
|
75
|
+
path. Check the imported path before setting the base URL so that any server
|
|
76
|
+
prefix appears only once. For Petstore, use
|
|
77
|
+
`https://petstore3.swagger.io/api/v3` if the route path is
|
|
78
|
+
`/pet/findByStatus`, or `https://petstore3.swagger.io` if the imported path
|
|
79
|
+
already starts with `/api/v3`.
|
|
80
|
+
|
|
81
|
+
4. **Compare the response**
|
|
82
|
+
|
|
83
|
+
Click **Test** next to the route's path, then send a GET request. Expect the
|
|
84
|
+
same status and response structure as the original API. Include the same
|
|
85
|
+
query parameters, such as `status=available` for the Petstore example.
|
|
86
|
+
|
|
87
|
+
Copy the gateway request URL from the test dialog and call it from a terminal
|
|
88
|
+
too:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
curl -i "https://YOUR_GATEWAY.zuplo.app/YOUR_ROUTE"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Replace `YOUR_ROUTE` with the imported route path and include its query
|
|
95
|
+
parameters and any required headers. A `404` usually means the route or
|
|
96
|
+
upstream path differs from the imported path. If forwarding fails, recheck
|
|
97
|
+
the handler's upstream URL.
|
|
98
|
+
|
|
99
|
+
5. **Preserve your API's behavior**
|
|
100
|
+
|
|
101
|
+
For a private API, add the
|
|
102
|
+
[authentication policies](../../articles/api-key-authentication.mdx) your
|
|
103
|
+
clients require and configure any credentials the upstream requires. OpenAPI
|
|
104
|
+
`security` metadata alone doesn't enforce authentication in Zuplo.
|
|
105
|
+
|
|
106
|
+
Before migrating real traffic, verify successful and failed requests, query
|
|
107
|
+
parameters, headers, request bodies, and status codes. Recreate any rate
|
|
108
|
+
limits or transformations currently handled by your old gateway. See the
|
|
109
|
+
[migration overview](../../articles/migration-overview.md) for
|
|
110
|
+
platform-specific migration guides.
|
|
111
|
+
|
|
112
|
+
6. **Deploy and move a test client**
|
|
113
|
+
|
|
114
|
+
Follow [Deploy to the edge](../gateway/deploy-to-the-edge/index.mdx) to
|
|
115
|
+
connect source control and deploy. Repeat your tests using the deployed
|
|
116
|
+
gateway URL.
|
|
117
|
+
|
|
118
|
+
Change one test client's base URL to the gateway and verify its normal
|
|
119
|
+
workflow. Keep the old endpoint available while you move clients in stages;
|
|
120
|
+
roll that client back to its previous base URL if checks fail. Move your
|
|
121
|
+
production domain only after the gateway passes your migration checks.
|
|
122
|
+
|
|
123
|
+
</Stepper>
|
|
124
|
+
|
|
125
|
+
## Next steps
|
|
126
|
+
|
|
127
|
+
- [Add API key authentication](../gateway/add-api-key-auth/index.mdx).
|
|
128
|
+
- [Import updated OpenAPI documents](../../articles/openapi.mdx).
|
|
129
|
+
- [Plan a migration from another gateway](../../articles/migration-overview.md).
|
package/docs/home.mdx
CHANGED
|
@@ -30,7 +30,8 @@ article for the latest plan availability.
|
|
|
30
30
|
## Prerequisites
|
|
31
31
|
|
|
32
32
|
- A Zuplo project with the MCP Gateway plugin configured and at least one MCP
|
|
33
|
-
route. See the [quickstart](
|
|
33
|
+
route. See the [quickstart](../../getting-started/mcp-gateway/portal.mdx) if
|
|
34
|
+
you haven't set one up yet.
|
|
34
35
|
- A ChatGPT Business, Enterprise, or Edu workspace for full MCP apps. Pro users
|
|
35
36
|
can use read/fetch MCP servers only.
|
|
36
37
|
- Developer Mode enabled for the ChatGPT account or workspace. OpenAI's current
|
|
@@ -14,7 +14,8 @@ OAuth flow against the gateway in your browser.
|
|
|
14
14
|
## Prerequisites
|
|
15
15
|
|
|
16
16
|
- A Zuplo project with the MCP Gateway plugin configured and at least one MCP
|
|
17
|
-
route. See the [quickstart](
|
|
17
|
+
route. See the [quickstart](../../getting-started/mcp-gateway/portal.mdx) if
|
|
18
|
+
you haven't set one up yet.
|
|
18
19
|
- Claude Code installed and signed in. Install instructions are at
|
|
19
20
|
[code.claude.com](https://code.claude.com/).
|
|
20
21
|
|
|
@@ -13,7 +13,8 @@ Claude's connector settings, then complete the browser-based OAuth flow.
|
|
|
13
13
|
## Prerequisites
|
|
14
14
|
|
|
15
15
|
- A Zuplo project with the MCP Gateway plugin configured and at least one MCP
|
|
16
|
-
route. See the [quickstart](
|
|
16
|
+
route. See the [quickstart](../../getting-started/mcp-gateway/portal.mdx) if
|
|
17
|
+
you haven't set one up yet.
|
|
17
18
|
- Claude Desktop installed, or access to Claude.ai in your browser.
|
|
18
19
|
- A Claude plan that supports custom connectors. Per
|
|
19
20
|
[Anthropic's documentation](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp),
|
|
@@ -25,9 +26,13 @@ Claude's connector settings, then complete the browser-based OAuth flow.
|
|
|
25
26
|
## Get the route URL
|
|
26
27
|
|
|
27
28
|
Each MCP route in `config/routes.oas.json` is reachable at
|
|
28
|
-
`https://{deploymentUrl}/{routePath}` once deployed
|
|
29
|
-
|
|
30
|
-
|
|
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}`.
|
|
31
36
|
|
|
32
37
|
## Add the connector in Claude
|
|
33
38
|
|
|
@@ -36,14 +41,12 @@ identical in each.
|
|
|
36
41
|
|
|
37
42
|
<Stepper>
|
|
38
43
|
|
|
39
|
-
1. **Open connector settings.**
|
|
40
|
-
|
|
41
|
-
- **Claude.ai:** open **Settings** → **Connectors** in the web app.
|
|
44
|
+
1. **Open connector settings.** In Claude Desktop or Claude.ai, open **Customize
|
|
45
|
+
→ Connectors**.
|
|
42
46
|
|
|
43
47
|
2. **Add a custom connector.**
|
|
44
48
|
|
|
45
|
-
|
|
46
|
-
connector**.
|
|
49
|
+
Click **+**, then **Add custom connector**.
|
|
47
50
|
|
|
48
51
|
3. **Enter the gateway URL.**
|
|
49
52
|
|
|
@@ -75,7 +78,7 @@ identical in each.
|
|
|
75
78
|
:::tip
|
|
76
79
|
|
|
77
80
|
You can adjust which tools Claude is allowed to use per connector. Open the
|
|
78
|
-
connector in
|
|
81
|
+
connector in Customize → Connectors and toggle individual tools on or off.
|
|
79
82
|
|
|
80
83
|
:::
|
|
81
84
|
|
|
@@ -101,21 +104,22 @@ in addition to DCR.
|
|
|
101
104
|
If you need to script the install or share the configuration with a team, Claude
|
|
102
105
|
Desktop also reads `claude_desktop_config.json`. This approach uses
|
|
103
106
|
[`mcp-remote`](https://www.npmjs.com/package/mcp-remote) as a stdio bridge to
|
|
104
|
-
the
|
|
105
|
-
|
|
106
|
-
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`.
|
|
107
109
|
|
|
108
110
|
1. In Claude Desktop, open **Settings** → **Developer** → **Edit Config**. This
|
|
109
111
|
opens `claude_desktop_config.json` in your editor.
|
|
110
112
|
2. Add or merge in the following entry, replacing `Zuplo MCP` with the name you
|
|
111
|
-
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:
|
|
112
116
|
|
|
113
117
|
```json title="claude_desktop_config.json"
|
|
114
118
|
{
|
|
115
119
|
"mcpServers": {
|
|
116
120
|
"Zuplo MCP": {
|
|
117
121
|
"command": "npx",
|
|
118
|
-
"args": ["mcp-remote", "https://{deploymentUrl}/{routePath}"]
|
|
122
|
+
"args": ["-y", "mcp-remote", "https://{deploymentUrl}/{routePath}"]
|
|
119
123
|
}
|
|
120
124
|
}
|
|
121
125
|
}
|
|
@@ -130,10 +134,9 @@ automatically on every launch without going through the UI.
|
|
|
130
134
|
|
|
131
135
|
:::note
|
|
132
136
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
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.
|
|
137
140
|
|
|
138
141
|
:::
|
|
139
142
|
|
|
@@ -147,7 +150,7 @@ file-based configuration.
|
|
|
147
150
|
configured correctly and that browser cookies are enabled for the gateway
|
|
148
151
|
origin.
|
|
149
152
|
- **Tools do not appear after a successful authorization.** Open the connector
|
|
150
|
-
in
|
|
153
|
+
in Customize → Connectors and check that each tool is enabled. Disabled tools
|
|
151
154
|
are hidden from the attachment menu.
|
|
152
155
|
|
|
153
156
|
## Related
|
|
@@ -17,7 +17,8 @@ or by using a deeplink that opens Cursor and adds the entry.
|
|
|
17
17
|
## Prerequisites
|
|
18
18
|
|
|
19
19
|
- A Zuplo project with the MCP Gateway plugin configured and at least one MCP
|
|
20
|
-
route. See the [quickstart](
|
|
20
|
+
route. See the [quickstart](../../getting-started/mcp-gateway/portal.mdx) if
|
|
21
|
+
you haven't set one up yet.
|
|
21
22
|
- Cursor installed and signed in.
|
|
22
23
|
|
|
23
24
|
## Get the route URL
|
|
@@ -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).
|
|
@@ -15,7 +15,8 @@ view.
|
|
|
15
15
|
## Prerequisites
|
|
16
16
|
|
|
17
17
|
- A Zuplo project with the MCP Gateway plugin configured and at least one MCP
|
|
18
|
-
route. See the [quickstart](
|
|
18
|
+
route. See the [quickstart](../../getting-started/mcp-gateway/portal.mdx) if
|
|
19
|
+
you haven't set one up yet.
|
|
19
20
|
- VS Code installed.
|
|
20
21
|
- The GitHub Copilot extension installed and signed in.
|
|
21
22
|
|
|
@@ -256,8 +256,8 @@ A few capabilities are intentionally out of scope, at least today:
|
|
|
256
256
|
|
|
257
257
|
- [Set up an MCP Gateway](./code-config/overview.mdx) — the how-to that puts
|
|
258
258
|
this conceptual model into practice.
|
|
259
|
-
- [Quickstart](
|
|
260
|
-
and front your first upstream.
|
|
259
|
+
- [Quickstart](../getting-started/mcp-gateway/portal.mdx) — add the MCP Gateway
|
|
260
|
+
plugin to a Zuplo project and front your first upstream.
|
|
261
261
|
- [Authentication overview](./auth/overview.mdx) — the two OAuth layers expanded
|
|
262
262
|
with the full standards table.
|
|
263
263
|
- [Reference](./reference.mdx) — the full URL catalog, default TTLs,
|
|
@@ -32,8 +32,8 @@ MCP server and add it to any client you like.
|
|
|
32
32
|
|
|
33
33
|
## Run the wizard with a custom upstream
|
|
34
34
|
|
|
35
|
-
Follow the [Portal quickstart](
|
|
36
|
-
Virtual Server**, with these choices:
|
|
35
|
+
Follow the [Portal quickstart](../../getting-started/mcp-gateway/portal.mdx) to
|
|
36
|
+
start an **MCP Gateway Virtual Server**, with these choices:
|
|
37
37
|
|
|
38
38
|
1. **Upstream**: select the **Custom** tab instead of a library server. Set a
|
|
39
39
|
**Name**, the **MCP Server URL** (the upstream provides this), and the
|
|
@@ -135,7 +135,8 @@ gateway presents the upstream's API key on their behalf.
|
|
|
135
135
|
|
|
136
136
|
## Related
|
|
137
137
|
|
|
138
|
-
- [MCP Gateway quickstart](
|
|
138
|
+
- [MCP Gateway quickstart](../../getting-started/mcp-gateway/portal.mdx): the
|
|
139
|
+
full wizard walkthrough.
|
|
139
140
|
- [Connect an upstream OAuth provider](./connect-upstream-oauth.mdx): the OAuth
|
|
140
141
|
equivalent of this guide.
|
|
141
142
|
- [`set-headers-inbound` policy](../../policies/set-headers-inbound.mdx): the
|
|
@@ -30,7 +30,7 @@ the same policy directly in your project files.
|
|
|
30
30
|
|
|
31
31
|
The **Tools** step appears while you add or edit an MCP Gateway Virtual Server.
|
|
32
32
|
For a full walkthrough of creating one, see the
|
|
33
|
-
[Portal quickstart](
|
|
33
|
+
[Portal quickstart](../../getting-started/mcp-gateway/portal.mdx).
|
|
34
34
|
|
|
35
35
|
1. **Open the Virtual Server wizard.** On the **Code** tab, click **Add Route**
|
|
36
36
|
and choose **MCP Gateway Virtual Server**, then work through the wizard to
|
|
@@ -119,6 +119,7 @@ is selected.
|
|
|
119
119
|
directly, with description and annotation overrides.
|
|
120
120
|
- [Capability filtering](../capability-filtering.mdx): the conceptual model
|
|
121
121
|
behind curation.
|
|
122
|
-
- [Portal quickstart](
|
|
122
|
+
- [Portal quickstart](../../getting-started/mcp-gateway/portal.mdx): create a
|
|
123
|
+
Virtual Server end to end.
|
|
123
124
|
- [Connect a gateway to an upstream OAuth provider](./connect-upstream-oauth.mdx):
|
|
124
125
|
pair curation with per-user upstream OAuth.
|
|
@@ -133,9 +133,9 @@ MCP client discovers and authenticates against it without custom configuration.
|
|
|
133
133
|
|
|
134
134
|
## Next steps
|
|
135
135
|
|
|
136
|
-
- [Try the quickstart](
|
|
137
|
-
project, configure Auth0, expose one upstream MCP
|
|
138
|
-
Desktop.
|
|
136
|
+
- [Try the quickstart](../getting-started/mcp-gateway/portal.mdx) — add the MCP
|
|
137
|
+
Gateway plugin to a Zuplo project, configure Auth0, expose one upstream MCP
|
|
138
|
+
server, and connect Claude Desktop.
|
|
139
139
|
- [Browse the how-to guides](./connect-clients/overview.mdx) — connect specific
|
|
140
140
|
MCP clients, add more upstreams, curate tools, configure upstream OAuth.
|
|
141
141
|
- [Read how it works](./how-it-works.mdx) — the request lifecycle, the two OAuth
|