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.
Files changed (73) hide show
  1. package/docs/ai-gateway/custom-policies.mdx +2 -1
  2. package/docs/ai-gateway/integrations/claude-code.mdx +82 -180
  3. package/docs/ai-gateway/integrations/claude-desktop.mdx +61 -99
  4. package/docs/ai-gateway/integrations/codex.mdx +63 -57
  5. package/docs/ai-gateway/usage-limits.mdx +2 -2
  6. package/docs/api-management/overview.md +2 -2
  7. package/docs/articles/add-api-to-backstage.mdx +4 -3
  8. package/docs/articles/api-key-consumer-bucket-portal-ui.mdx +1 -1
  9. package/docs/articles/api-key-management.mdx +1 -1
  10. package/docs/articles/custom-domains.mdx +3 -2
  11. package/docs/articles/migrate-from-apigee.md +3 -3
  12. package/docs/articles/migrate-from-aws-api-gateway.md +3 -3
  13. package/docs/articles/migrate-from-azure-apim.md +3 -3
  14. package/docs/articles/migrate-from-kong.md +3 -3
  15. package/docs/articles/source-control-setup-github.mdx +2 -2
  16. package/docs/articles/source-control.mdx +4 -3
  17. package/docs/articles/testing.mdx +5 -5
  18. package/docs/articles/upstream-iam-auth.mdx +2 -2
  19. package/docs/cli/create-zuplo-api.mdx +4 -4
  20. package/docs/cli/openapi-merge.mdx +1 -1
  21. package/docs/cli/openapi-merge.partial.mdx +1 -1
  22. package/docs/concepts/ai-gateway.mdx +1 -1
  23. package/docs/concepts/how-zuplo-works.mdx +2 -1
  24. package/docs/concepts/mcp.mdx +4 -4
  25. package/docs/dedicated/architecture.mdx +1 -1
  26. package/docs/dev-portal/migration.mdx +2 -2
  27. package/docs/errors/not-found.mdx +1 -1
  28. package/docs/getting-started/ai-gateway/portal.mdx +181 -0
  29. package/docs/getting-started/dev-portal/agent.mdx +148 -0
  30. package/docs/getting-started/dev-portal/index.mdx +26 -0
  31. package/docs/getting-started/dev-portal/local.mdx +213 -0
  32. package/docs/getting-started/dev-portal/portal.mdx +146 -0
  33. package/docs/{articles/step-3-add-api-key-auth.mdx → getting-started/gateway/add-api-key-auth/index.mdx} +32 -23
  34. package/docs/{articles/step-3-add-api-key-auth-local.mdx → getting-started/gateway/add-api-key-auth/local.mdx} +28 -20
  35. package/docs/{articles/step-2-add-rate-limiting.mdx → getting-started/gateway/add-rate-limiting/index.mdx} +22 -13
  36. package/docs/{articles/step-2-add-rate-limiting-local.mdx → getting-started/gateway/add-rate-limiting/local.mdx} +24 -14
  37. package/docs/getting-started/gateway/agent.mdx +199 -0
  38. package/docs/{articles/step-4-deploying-to-the-edge.mdx → getting-started/gateway/deploy-to-the-edge/index.mdx} +39 -27
  39. package/docs/{articles/step-4-deploying-to-the-edge-local.mdx → getting-started/gateway/deploy-to-the-edge/local.mdx} +48 -17
  40. package/docs/{articles/step-5-dynamic-rate-limiting.mdx → getting-started/gateway/dynamic-rate-limiting/index.mdx} +24 -12
  41. package/docs/{articles/step-5-dynamic-rate-limiting-local.mdx → getting-started/gateway/dynamic-rate-limiting/local.mdx} +24 -12
  42. package/docs/getting-started/gateway/index.mdx +24 -0
  43. package/docs/{articles/step-1-setup-basic-gateway.mdx → getting-started/gateway/setup-a-basic-gateway/index.mdx} +33 -21
  44. package/docs/{articles/step-1-setup-basic-gateway-local.mdx → getting-started/gateway/setup-a-basic-gateway/local.mdx} +24 -15
  45. package/docs/getting-started/index.mdx +25 -0
  46. package/docs/getting-started/mcp-gateway/agent.mdx +161 -0
  47. package/docs/getting-started/mcp-gateway/index.mdx +25 -0
  48. package/docs/{mcp-gateway/quickstart-local.mdx → getting-started/mcp-gateway/local.mdx} +64 -38
  49. package/docs/{mcp-gateway/quickstart.mdx → getting-started/mcp-gateway/portal.mdx} +71 -54
  50. package/docs/getting-started/mcp-server/agent.mdx +152 -0
  51. package/docs/getting-started/mcp-server/index.mdx +25 -0
  52. package/docs/{articles/mcp-quickstart-local.mdx → getting-started/mcp-server/local.mdx} +24 -13
  53. package/docs/{articles/mcp-quickstart.mdx → getting-started/mcp-server/portal.mdx} +35 -15
  54. package/docs/getting-started/migrate/agent.mdx +129 -0
  55. package/docs/getting-started/migrate/index.mdx +25 -0
  56. package/docs/getting-started/migrate/local.mdx +141 -0
  57. package/docs/getting-started/migrate/portal.mdx +129 -0
  58. package/docs/home.mdx +6 -0
  59. package/docs/mcp-gateway/connect-clients/chatgpt.mdx +2 -1
  60. package/docs/mcp-gateway/connect-clients/claude-code.mdx +2 -1
  61. package/docs/mcp-gateway/connect-clients/claude-desktop.mdx +23 -20
  62. package/docs/mcp-gateway/connect-clients/cursor.mdx +2 -1
  63. package/docs/mcp-gateway/connect-clients/overview.mdx +2 -1
  64. package/docs/mcp-gateway/connect-clients/vs-code.mdx +2 -1
  65. package/docs/mcp-gateway/how-it-works.mdx +2 -2
  66. package/docs/mcp-gateway/how-to/connect-upstream-api-key.mdx +4 -3
  67. package/docs/mcp-gateway/how-to/curate-tools.mdx +3 -2
  68. package/docs/mcp-gateway/overview.mdx +3 -3
  69. package/docs/policies/ai-gateway-smart-router-inbound/doc.md +14 -0
  70. package/docs/policies/akamai-ai-firewall-v2-inbound/doc.md +7 -0
  71. package/package.json +5 -5
  72. package/docs/ai-gateway/getting-started.mdx +0 -307
  73. 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
+ ![Import an OpenAPI file in the Route Designer](/media/mcp-quickstart/import-openapi.png)
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
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  title: Zuplo Documentation
3
3
  sidebar_label: Home
4
+ fullWidth: true
5
+ centered: false
6
+ toc: false
7
+ disablePager: true
8
+ showLastModified: false
9
+ suggestEdit: false
4
10
  ---
5
11
 
6
12
  <DocsHome />
@@ -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](../quickstart.mdx) if you haven't set one up yet.
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](../quickstart.mdx) if you haven't set one up yet.
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](../quickstart.mdx) if you haven't set one up yet.
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 (or
29
- `http://127.0.0.1:9000/{routePath}` when running locally with `zuplo dev`). The
30
- `{routePath}` is the path you set on the route — for example `/mcp/linear-v1`.
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
- - **Claude Desktop:** open **Settings** → **Connectors**.
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
- Scroll to the bottom of the Connectors list and click **Add custom
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 Settings → Connectors and toggle individual tools on or off.
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 remote gateway. Use it if your version of Claude Desktop doesn't yet support
105
- custom remote connectors natively, or if you want the connector to start
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
- The native custom-connector flow above is the recommended path because it
134
- supports all of Claude Desktop's MCP features out of the box and does not
135
- require Node.js. Use the `mcp-remote` bridge only when you specifically need the
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 Settings → Connectors and check that each tool is enabled. Disabled tools
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](../quickstart.mdx) if you haven't set one up yet.
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 via `claude_desktop_config.json`.
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](../quickstart.mdx) if you haven't set one up yet.
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](./quickstart.mdx) — add the MCP Gateway plugin to a Zuplo project
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](../quickstart.mdx) to start an **MCP Gateway
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](../quickstart.mdx): the full wizard walkthrough.
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](../quickstart.mdx).
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](../quickstart.mdx): create a Virtual Server end to end.
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](./quickstart.mdx) — add the MCP Gateway plugin to a Zuplo
137
- project, configure Auth0, expose one upstream MCP server, and connect Claude
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