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
@@ -1,13 +1,16 @@
1
1
  ---
2
- title: "MCP Gateway quickstart (Portal)"
3
- sidebar_label: "Quickstart"
2
+ category: MCP Gateway
3
+ showLastModified: false
4
+ suggestEdit: false
5
+ title: Getting Started with MCP Gateway - Portal
4
6
  description:
5
- Build an MCP Gateway in the Zuplo Portal. Create a project, add an MCP Gateway
6
- Virtual Server with the guided wizard, set your identity provider's
7
- environment variables, and connect Claude Desktop. No local setup required.
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
- <QuickstartPicker mode="portal" alternateLink="/mcp-gateway/quickstart-local" />
11
+ <WizardSteps build="mcp-gateway" method="portal" />
12
+
13
+ <MethodTabs build="mcp-gateway" method="portal" />
11
14
 
12
15
  Build a Zuplo MCP Gateway fronting Linear at
13
16
  `https://<your-gateway>/mcp/linear-v1`, entirely in the browser. By the end,
@@ -21,40 +24,53 @@ authenticate upstream. This guide uses Linear and Auth0, but the wizard supports
21
24
  any upstream in its library (plus custom servers) and every identity provider
22
25
  Zuplo wraps.
23
26
 
24
- Prefer the CLI? The [local quickstart](./quickstart-local.mdx) reaches the same
25
- result on your machine.
27
+ Prefer the CLI? The [local quickstart](./local.mdx) reaches the same result on
28
+ your machine.
26
29
 
27
30
  ## Prerequisites
28
31
 
29
32
  - A free [Zuplo account](https://portal.zuplo.com).
30
33
  - An account with your identity provider. For the Auth0 example, that's an Auth0
31
34
  tenant with a Regular Web Application configured. The
32
- [Configuring Auth0](./auth/configuring-auth0.mdx#set-up-the-auth0-tenant)
35
+ [Configuring Auth0](../../mcp-gateway/auth/configuring-auth0.mdx#set-up-the-auth0-tenant)
33
36
  guide covers the dashboard side. From it you'll need the **domain**, **client
34
37
  ID**, and **client secret**.
35
38
 
39
+ ## Create and test your MCP Gateway
40
+
36
41
  <Stepper>
37
42
 
38
- 1. **Create a project and start a Virtual Server**
43
+ 1. **Create a Zuplo project**
44
+
45
+ In the Zuplo Portal, open
46
+ [**Projects**](https://portal.zuplo.com/+/account/projects), click **New
47
+ Project**, and select **API & MCP Gateway**. Name the project
48
+ `my-mcp-gateway`, choose a blank project rather than importing one, and click
49
+ **Create Project**. The project opens on the **Project** tab.
50
+
51
+ <ModalScreenshot>
52
+
53
+ ![New Zuplo project dialog with API & MCP Gateway selected](/media/mcp-gateway-portal-quickstart/new-project.png)
54
+
55
+ </ModalScreenshot>
56
+
57
+ 2. **Start an MCP Gateway Virtual Server**
39
58
 
40
- Sign in to the Zuplo Portal and
41
- [create a new empty project](https://portal.zuplo.com/+/account/projects/new)
42
- (choose a blank project rather than importing one). The project opens on the
43
- **Project** tab; click the **Code** tab.
59
+ Open the **Code** tab in the project you created.
44
60
 
45
- Click **Add Route**, then choose **MCP Gateway Virtual Server** from the
46
- menu.
61
+ Click **Add to Gateway** (or **Add Route** if the project already has
62
+ routes), then choose **MCP Gateway Virtual Server** from the menu.
47
63
 
48
64
  <ModalScreenshot size="md">
49
65
 
50
- ![Add an MCP Gateway Virtual Server from the Add Route menu](../../public/media/mcp-gateway-quickstart/01-add-route.png)
66
+ ![Add an MCP Gateway Virtual Server from the Add Route menu](../../../public/media/mcp-gateway-quickstart/01-add-route.png)
51
67
 
52
68
  </ModalScreenshot>
53
69
 
54
70
  The **New MCP Gateway Virtual Server** wizard opens and walks through four
55
71
  steps: the upstream server, inbound auth, tools, and outbound auth.
56
72
 
57
- 2. **Choose the upstream MCP server**
73
+ 3. **Choose the upstream MCP server**
58
74
 
59
75
  On the **Upstream** step, pick the MCP server this virtual server fronts.
60
76
  Select **Linear** from the **Library** of pre-configured servers. The
@@ -65,7 +81,7 @@ result on your machine.
65
81
 
66
82
  <ModalScreenshot size="md">
67
83
 
68
- ![Select Linear from the upstream server library](../../public/media/mcp-gateway-quickstart/02-upstream.png)
84
+ ![Select Linear from the upstream server library](../../../public/media/mcp-gateway-quickstart/02-upstream.png)
69
85
 
70
86
  </ModalScreenshot>
71
87
 
@@ -76,7 +92,7 @@ result on your machine.
76
92
 
77
93
  :::
78
94
 
79
- 3. **Choose an identity provider**
95
+ 4. **Choose an identity provider**
80
96
 
81
97
  The **Inbound Auth** step controls how MCP clients authenticate _to_ the
82
98
  gateway. Pick your identity provider; this guide uses **Auth0**. The wizard
@@ -84,7 +100,7 @@ result on your machine.
84
100
 
85
101
  <ModalScreenshot size="md">
86
102
 
87
- ![Choose Auth0 as the identity provider](../../public/media/mcp-gateway-quickstart/03-inbound-auth.png)
103
+ ![Choose Auth0 as the identity provider](../../../public/media/mcp-gateway-quickstart/03-inbound-auth.png)
88
104
 
89
105
  </ModalScreenshot>
90
106
 
@@ -93,11 +109,12 @@ result on your machine.
93
109
  The catalog includes WorkOS, Google, Okta, Microsoft Entra, Cognito, Clerk,
94
110
  Keycloak, Logto, OneLogin, and PingOne. You can also select an existing
95
111
  inbound policy, or pick **None** if this route doesn't need gateway OAuth.
96
- See the [provider catalog](./auth/overview.mdx#identity-providers).
112
+ See the
113
+ [provider catalog](../../mcp-gateway/auth/overview.mdx#identity-providers).
97
114
 
98
115
  :::
99
116
 
100
- 4. **Decide what the virtual server exposes**
117
+ 5. **Decide what the virtual server exposes**
101
118
 
102
119
  The **Tools** step controls which tools, prompts, and resources the virtual
103
120
  server exposes to its clients:
@@ -111,7 +128,7 @@ result on your machine.
111
128
 
112
129
  <ModalScreenshot size="md">
113
130
 
114
- ![Choose Filter & curate or Passthrough for the exposed catalog](../../public/media/mcp-gateway-quickstart/04-tools.png)
131
+ ![Choose Filter & curate or Passthrough for the exposed catalog](../../../public/media/mcp-gateway-quickstart/04-tools.png)
115
132
 
116
133
  </ModalScreenshot>
117
134
 
@@ -122,7 +139,7 @@ result on your machine.
122
139
 
123
140
  :::
124
141
 
125
- 5. **Configure upstream authentication**
142
+ 6. **Configure upstream authentication**
126
143
 
127
144
  On **Outbound Auth**, leave **User OAuth** selected so each user connects
128
145
  their own Linear account. Click **Next**.
@@ -133,22 +150,22 @@ result on your machine.
133
150
 
134
151
  <ModalScreenshot size="md">
135
152
 
136
- ![Choose User OAuth and Dynamic client registration](../../public/media/mcp-gateway-quickstart/05-outbound-auth.png)
153
+ ![Choose User OAuth and Dynamic client registration](../../../public/media/mcp-gateway-quickstart/05-outbound-auth.png)
137
154
 
138
155
  </ModalScreenshot>
139
156
 
140
157
  :::tip{title="Upstream doesn't use OAuth?"}
141
158
 
142
- Pick **None** to forward directly. The user's token is then either forwarded
143
- to the upstream or removed at the point of login, depending on the upstream's
144
- needs.
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.
145
162
 
146
163
  :::
147
164
 
148
165
  The wizard adds the new MCP route to `config/routes.oas.json` and scaffolds
149
166
  the inbound auth and token-exchange policies. **Save** the project.
150
167
 
151
- 6. **Set your identity provider's environment variables**
168
+ 7. **Set your identity provider's environment variables**
152
169
 
153
170
  In `config/policies.json`, set the Auth0 policy's environment variable
154
171
  references to match these names, then save the file:
@@ -195,7 +212,7 @@ result on your machine.
195
212
 
196
213
  :::
197
214
 
198
- 7. **Verify the OAuth policy is wired up**
215
+ 8. **Verify the OAuth policy is wired up**
199
216
 
200
217
  Click the **Test** button next to the route's path and send a `POST` with no
201
218
  `Authorization` header. You should get a `401 Unauthorized` whose
@@ -219,13 +236,13 @@ result on your machine.
219
236
 
220
237
  :::
221
238
 
222
- 8. **Connect Claude Desktop**
239
+ 9. **Connect Claude Desktop**
223
240
 
224
241
  Your route is live at `https://<your-gateway>/mcp/linear-v1`. Find the public
225
242
  URL via the **Gateway deployed** button in the toolbar.
226
243
 
227
- Open Claude Desktop, go to **Settings → Connectors**, scroll to the bottom,
228
- and click **Add custom connector**. Paste the route URL and click **Add**.
244
+ Open Claude Desktop, go to **Customize → Connectors**, click **+**, then
245
+ **Add custom connector**. Paste the route URL and click **Add**.
229
246
 
230
247
  Claude Desktop opens the gateway's OAuth flow in a browser:
231
248
  1. Sign in with your identity provider (Auth0 in this example).
@@ -235,26 +252,26 @@ result on your machine.
235
252
 
236
253
  :::tip{title="Checkpoint: Claude is connected"}
237
254
 
238
- Back in Claude Desktop, the new connector appears in **Settings →
255
+ Back in Claude Desktop, the new connector appears in **Customize →
239
256
  Connectors** marked as connected. Subsequent requests reuse the tokens the
240
257
  gateway just issued.
241
258
 
242
259
  :::
243
260
 
244
261
  For per-client setup details, see
245
- [Connect MCP clients](./connect-clients/overview.mdx).
262
+ [Connect MCP clients](../../mcp-gateway/connect-clients/overview.mdx).
246
263
 
247
- 9. **Test it**
264
+ 10. **Test it**
248
265
 
249
- In Claude Desktop, prompt the model with something that requires Linear.
250
- "list my open issues" works well. Claude asks for permission to call the
251
- tool, then returns results proxied through the gateway.
266
+ In Claude Desktop, prompt the model with something that requires Linear.
267
+ "list my open issues" works well. Claude asks for permission to call the
268
+ tool, then returns results proxied through the gateway.
252
269
 
253
- Open the project's
254
- [**Observability → Analytics**](https://portal.zuplo.com/+/account/project/analytics)
255
- view and select the **MCP** section to see the call appear in the events
256
- timeline, the success rate, the top capabilities table, and the user
257
- breakdown.
270
+ Open the project's
271
+ [**Observability → Analytics**](https://portal.zuplo.com/+/account/project/analytics)
272
+ view and select the **MCP** section to see the call appear in the events
273
+ timeline, the success rate, the top capabilities table, and the user
274
+ breakdown.
258
275
 
259
276
  </Stepper>
260
277
 
@@ -267,7 +284,7 @@ again for each additional upstream you want to front.
267
284
 
268
285
  The Working Copy (Development) URLs are fine for testing everything above. Once
269
286
  you've confirmed the virtual server works, set up a production deployment via
270
- [environments](../articles/environments.mdx) before giving others access. The
287
+ [environments](../../articles/environments.mdx) before giving others access. The
271
288
  development URL is tied to your working copy and isn't meant for shared or
272
289
  production traffic.
273
290
 
@@ -275,12 +292,12 @@ production traffic.
275
292
 
276
293
  ## Next steps
277
294
 
278
- - [Connect more clients](./connect-clients/overview.mdx): Claude Code, Cursor,
279
- VS Code, ChatGPT, and any other MCP client.
280
- - [How it works](./how-it-works.mdx): the request lifecycle and the two OAuth
281
- surfaces.
282
- - [Capability filtering](./capability-filtering.mdx): go deeper on the Curate
283
- option, overriding tool descriptions and annotations, not just
295
+ - [Connect more clients](../../mcp-gateway/connect-clients/overview.mdx): Claude
296
+ Code, Cursor, VS Code, ChatGPT, and any other MCP client.
297
+ - [How it works](../../mcp-gateway/how-it-works.mdx): the request lifecycle and
298
+ the two OAuth surfaces.
299
+ - [Capability filtering](../../mcp-gateway/capability-filtering.mdx): go deeper
300
+ on the Curate option, overriding tool descriptions and annotations, not just
284
301
  include/exclude.
285
- - [Add more upstreams](./code-config/multi-upstream.mdx): front several upstream
286
- MCP servers from one Zuplo project.
302
+ - [Add more upstreams](../../mcp-gateway/code-config/multi-upstream.mdx): front
303
+ several upstream MCP servers from one Zuplo project.
@@ -0,0 +1,152 @@
1
+ ---
2
+ category: MCP Server
3
+ showLastModified: false
4
+ suggestEdit: false
5
+ sidebar_label: Agent
6
+ title: Getting Started with MCP Server - Agent
7
+ description:
8
+ Use a coding agent to expose a Todo API as an MCP server, review its single
9
+ read-only tool, and verify it with MCP Inspector.
10
+ ---
11
+
12
+ <WizardSteps build="mcp-server" method="agent" />
13
+
14
+ <MethodTabs build="mcp-server" method="agent" />
15
+
16
+ Use a coding agent to turn a Todo API into an MCP server. The finished server
17
+ exposes one read-only tool, which you'll call from MCP Inspector before using it
18
+ with your agent.
19
+
20
+ ## Prerequisites
21
+
22
+ - [Node.js](https://nodejs.org/en/download) 24 or later.
23
+ - An installed coding agent, such as Codex, Claude Code, or Cursor.
24
+ - A [Zuplo account](https://portal.zuplo.com).
25
+
26
+ ## Build your MCP server with an agent
27
+
28
+ <Stepper>
29
+
30
+ 1. **Create the project**
31
+
32
+ Run:
33
+
34
+ ```bash
35
+ npx create-zuplo-api@latest todo-mcp
36
+ cd todo-mcp
37
+ ```
38
+
39
+ When prompted, choose **Yes** to create a matching Portal project, complete
40
+ sign-in, and select your Zuplo account. Select the coding agent you use when
41
+ asked. The CLI creates and links the hosted project. See
42
+ [`create-zuplo-api`](../../cli/create-zuplo-api.mdx).
43
+
44
+ :::tip{title="Zuplo skills"}
45
+
46
+ The scaffold installs Zuplo skills in this project for Codex and Cursor and
47
+ configures the Claude Code plugin. If setup fails, follow
48
+ [Agent Skills](../../build-with-ai.mdx#agent-skills) from this directory
49
+ before starting your agent.
50
+
51
+ :::
52
+
53
+ 2. **Ask the agent to expose one tool**
54
+
55
+ Open your agent in the project directory and use this prompt:
56
+
57
+ ```text
58
+ Read the project instructions and bundled Zuplo docs. Turn the default Todo
59
+ API into an MCP server with exactly one read-only tool.
60
+
61
+ In config/routes.oas.json, keep the existing GET /todos URL forward handler
62
+ pointing to https://todo.zuplo.io. Set its operationId to getTodos. Add an
63
+ x-zuplo-route.mcp object with type "tool", name "getTodos", and annotations
64
+ { "readOnlyHint": true }.
65
+
66
+ Add a POST-only /mcp operation with operationId todo-mcp-server, a 200
67
+ response description, and x-zuplo-route with corsPolicy "none" and handler:
68
+ {
69
+ "module": "$import(@zuplo/runtime)",
70
+ "export": "mcpServerHandler",
71
+ "options": {
72
+ "name": "Todo MCP server",
73
+ "version": "1.0.0",
74
+ "operations": [{ "file": "./config/routes.oas.json", "id": "getTodos" }]
75
+ }
76
+ }
77
+
78
+ Do not expose create, update, or delete operations as MCP tools. Keep the
79
+ sample unauthenticated for this local exercise; don't claim it is ready
80
+ for private data. Preserve unrelated files and routes.
81
+
82
+ Run npm run dev and confirm GET /todos returns 200. Use an MCP client to
83
+ check that tools/list exposes exactly getTodos and tools/call returns todos.
84
+ If you cannot run an MCP client, say which checks remain for me. Do not
85
+ deploy. Show the diff and explain how to test with MCP Inspector.
86
+ ```
87
+
88
+ For the underlying configuration, see the
89
+ [MCP Server handler](../../handlers/mcp-server.mdx).
90
+
91
+ 3. **Review the route and start the server**
92
+
93
+ Check the diff before running the agent's code. The `/mcp` handler's
94
+ `operations` list should contain only `getTodos`, and that ID must match
95
+ `GET /todos`.
96
+
97
+ Start `npm run dev` if the agent hasn't left it running. In another terminal,
98
+ run:
99
+
100
+ ```bash
101
+ curl -i http://localhost:9000/todos
102
+ ```
103
+
104
+ Expect `200 OK` and a JSON response containing todos.
105
+
106
+ 4. **Test the MCP tool**
107
+
108
+ Start MCP Inspector in another terminal:
109
+
110
+ ```bash
111
+ npx @modelcontextprotocol/inspector
112
+ ```
113
+
114
+ Open the URL printed by Inspector. Select **Streamable HTTP**, enter
115
+ `http://localhost:9000/mcp`, and connect. List tools: there should be exactly
116
+ one, `getTodos`. Run it with an empty arguments object `{}`. The result
117
+ should contain the Todo API response without a tool error.
118
+
119
+ A missing tool usually means the `operationId` and handler's `id` don't
120
+ match. If the tool errors, test `/todos` directly to distinguish an upstream
121
+ problem from an MCP configuration problem.
122
+
123
+ 5. **Connect your coding agent**
124
+
125
+ For Codex, register the HTTP MCP server from your terminal:
126
+
127
+ ```bash
128
+ codex mcp add todo-api --url http://localhost:9000/mcp
129
+ ```
130
+
131
+ Start a new Codex session so it loads the server. For another client, use its
132
+ HTTP MCP configuration with the same URL. Keep the gateway running, then ask
133
+ the agent to `Use getTodos to list the todos`. Approve the tool call and
134
+ check that the response matches the Inspector result.
135
+
136
+ Cloud-hosted clients can't reach your computer's `localhost`. To use one,
137
+ [deploy the project](../gateway/deploy-to-the-edge/local.mdx) and provide its
138
+ hosted `/mcp` URL.
139
+
140
+ </Stepper>
141
+
142
+ This local sample has no authentication. Before exposing private operations,
143
+ configure
144
+ [MCP server authentication](../../articles/configuring-auth0-for-mcp-auth.mdx).
145
+
146
+ ## Next steps
147
+
148
+ - [Choose tools in the Route Designer](./local.mdx) to add more operations.
149
+ - [Configure the MCP Server handler](../../handlers/mcp-server.mdx) for your
150
+ API's tools.
151
+ - [Add authentication](../../articles/configuring-auth0-for-mcp-auth.mdx) before
152
+ sharing a server that accesses private data.
@@ -0,0 +1,25 @@
1
+ ---
2
+ category: MCP Server
3
+ fullWidth: true
4
+ disablePager: true
5
+ showLastModified: false
6
+ suggestEdit: false
7
+ centered: false
8
+ toc: false
9
+ title: Getting Started with MCP Server
10
+ description:
11
+ Turn an OpenAPI-described API into a managed MCP server with Zuplo, in the
12
+ Portal, locally with the CLI, or with an AI agent.
13
+ ---
14
+
15
+ <WizardSteps build="mcp-server" />
16
+
17
+ An MCP server makes API operations available as tools for AI assistants through
18
+ the Model Context Protocol (MCP). This tutorial adds an MCP interface to a
19
+ sample Todo API using its OpenAPI document.
20
+
21
+ Choose a workflow to create the server, select its tools, and test a tool call.
22
+ The sample API is provided. Use an MCP client, such as MCP Inspector, to test
23
+ the result. For the local guides, use a client that can reach your machine.
24
+
25
+ <MethodPicker build="mcp-server" />
@@ -1,14 +1,25 @@
1
1
  ---
2
- title: Dynamic MCP Server - Quickstart
3
- sidebar_label: "Dynamic MCP Server - Quickstart"
2
+ category: MCP Server
3
+ showLastModified: false
4
+ suggestEdit: false
5
+ title: Getting Started with MCP Server - Editor
6
+ description:
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.
4
9
  ---
5
10
 
11
+ <WizardSteps build="mcp-server" method="local" />
12
+
13
+ <MethodTabs build="mcp-server" method="local" />
14
+
15
+ Turn an OpenAPI-described API into a managed MCP server. This path builds it
16
+ with the Zuplo CLI and your editor.
17
+
6
18
  Zuplo allows you to instantly add a managed MCP Server to your existing API,
7
- powered by OpenAPI. In this guide we'll build one locally using the
8
- [Zuplo CLI](../cli/overview.mdx).
19
+ powered by OpenAPI.
9
20
 
10
21
  If you're not familiar with Zuplo, it's recommended to go through
11
- [Step 1](./step-1-setup-basic-gateway-local.mdx) first.
22
+ [Step 1](../gateway/setup-a-basic-gateway/local.mdx) first.
12
23
 
13
24
  <Stepper>
14
25
 
@@ -22,8 +33,8 @@ If you're not familiar with Zuplo, it's recommended to go through
22
33
  npm run dev
23
34
  ```
24
35
 
25
- See [Step 1](./step-1-setup-basic-gateway-local.mdx) for a walkthrough of the
26
- `create-zuplo-api` prompts.
36
+ See [Step 1](../gateway/setup-a-basic-gateway/local.mdx) for a walkthrough of
37
+ the `create-zuplo-api` prompts.
27
38
 
28
39
  1. Test the **Get all todos** route
29
40
 
@@ -42,7 +53,7 @@ If you're not familiar with Zuplo, it's recommended to go through
42
53
  On your `routes.oas.json` file, choose **Add** and then **Dynamic OpenAPI to
43
54
  MCP Server**.
44
55
 
45
- ![Add Route](../../public/media/mcp-quickstart/add-mcp-route.png)
56
+ ![Add Route](../../../public/media/mcp-quickstart/add-mcp-route.png)
46
57
 
47
58
  A new route will appear. Confirm the following values:
48
59
  - **Summary**: enter `MCP Server`
@@ -51,12 +62,12 @@ If you're not familiar with Zuplo, it's recommended to go through
51
62
 
52
63
  Click the **Select Tools** option for your new MCP Server endpoint.
53
64
 
54
- ![Select Tools](../../public/media/mcp-quickstart/select-mcp-tools.png)
65
+ ![Select Tools](../../../public/media/mcp-quickstart/select-mcp-tools.png)
55
66
 
56
67
  You should see the MCP tools dialog. Check the tools from your `*.oas.json`
57
68
  files that you want to surface in your MCP Server.
58
69
 
59
- ![MCP Server](../../public/media/mcp-quickstart/mcp-tools-dialog.png)
70
+ ![MCP Server](../../../public/media/mcp-quickstart/mcp-tools-dialog.png)
60
71
 
61
72
  Click **Update Tools**, then click **Save** at the bottom left.
62
73
  Congratulations, you just published your first MCP Server! It's now available
@@ -66,7 +77,7 @@ If you're not familiar with Zuplo, it's recommended to go through
66
77
 
67
78
  You can connect any MCP client that can reach your local gateway. The AI
68
79
  coding agent you configured in
69
- [Step 1](./step-1-setup-basic-gateway-local.mdx) (such as Claude Code or
80
+ [Step 1](../gateway/setup-a-basic-gateway/local.mdx) (such as Claude Code or
70
81
  Cursor) is a great option — point it at your local MCP server URL:
71
82
 
72
83
  ```
@@ -80,8 +91,8 @@ If you're not familiar with Zuplo, it's recommended to go through
80
91
  Cloud clients like the
81
92
  [OpenAI playground](https://platform.openai.com/playground) can't reach
82
93
  `localhost`. To use one, deploy your project first — see
83
- [Step 4](./step-4-deploying-to-the-edge-local.mdx) — and use your deployed
84
- MCP server URL instead.
94
+ [Step 4](../gateway/deploy-to-the-edge/local.mdx) — and use your deployed MCP
95
+ server URL instead.
85
96
 
86
97
  :::
87
98
 
@@ -1,20 +1,40 @@
1
1
  ---
2
- title: Dynamic MCP Server - Quickstart
3
- sidebar_label: "Dynamic MCP Server - Quickstart"
2
+ category: MCP Server
3
+ showLastModified: false
4
+ suggestEdit: false
5
+ title: Getting Started with MCP Server - Portal
6
+ description:
7
+ Turn an OpenAPI-described API into a managed MCP server in the Zuplo Portal,
8
+ then connect an MCP client and call your first tool.
4
9
  ---
5
10
 
11
+ <WizardSteps build="mcp-server" method="portal" />
12
+
13
+ <MethodTabs build="mcp-server" method="portal" />
14
+
15
+ Turn an OpenAPI-described API into a managed MCP server. This path builds it in
16
+ the Zuplo Portal.
17
+
6
18
  Zuplo allows you to instantly add a managed MCP Server to your existing API,
7
19
  powered by OpenAPI.
8
20
 
9
21
  If you're not familiar with Zuplo, it's recommended to go through the
10
- [Step 1](./step-1-setup-basic-gateway.mdx) first.
22
+ [Step 1](../gateway/setup-a-basic-gateway/index.mdx) first.
11
23
 
12
24
  <Stepper>
13
25
 
14
26
  1. Create a **new project**
15
27
 
16
- Sign in to the Zuplo Portal and
17
- [create a new project](https://portal.zuplo.com/+/account/projects/new).
28
+ In the Zuplo Portal, open
29
+ [**Projects**](https://portal.zuplo.com/+/account/projects), click **New
30
+ Project**, select **API & MCP Gateway**, enter a project name, and click
31
+ **Create Project**.
32
+
33
+ <ModalScreenshot>
34
+
35
+ ![New Zuplo project dialog with API & MCP Gateway selected](/media/mcp-gateway-portal-quickstart/new-project.png)
36
+
37
+ </ModalScreenshot>
18
38
 
19
39
  1. **Import** an **OpenAPI** document
20
40
 
@@ -23,7 +43,7 @@ If you're not familiar with Zuplo, it's recommended to go through the
23
43
 
24
44
  <ModalScreenshot size="sm">
25
45
 
26
- ![Import OpenAPI](../../public/media/mcp-quickstart/import-openapi.png)
46
+ ![Import OpenAPI](../../../public/media/mcp-quickstart/import-openapi.png)
27
47
 
28
48
  </ModalScreenshot>
29
49
 
@@ -32,7 +52,7 @@ If you're not familiar with Zuplo, it's recommended to go through the
32
52
 
33
53
  <ModalScreenshot size="sm">
34
54
 
35
- ![Complete Import](../../public/media/mcp-quickstart/complete-import.png)
55
+ ![Complete Import](../../../public/media/mcp-quickstart/complete-import.png)
36
56
 
37
57
  </ModalScreenshot>
38
58
 
@@ -56,7 +76,7 @@ If you're not familiar with Zuplo, it's recommended to go through the
56
76
  On your `routes.oas.json` file, choose **Add** and then **Dynamic OpenAPI to
57
77
  MCP Server** (3)
58
78
 
59
- ![Add Route](../../public/media/mcp-quickstart/add-mcp-route.png)
79
+ ![Add Route](../../../public/media/mcp-quickstart/add-mcp-route.png)
60
80
 
61
81
  A new route will appear. Confirm the following values:
62
82
  - **Summary**: enter `MCP Server`
@@ -65,12 +85,12 @@ If you're not familiar with Zuplo, it's recommended to go through the
65
85
 
66
86
  Click the **Select Tools** option for your new MCP Server endpoint (1).
67
87
 
68
- ![Select Tools](../../public/media/mcp-quickstart/select-mcp-tools.png)
88
+ ![Select Tools](../../../public/media/mcp-quickstart/select-mcp-tools.png)
69
89
 
70
90
  You should see the MCP tools dialog. Check the tools from your `*.oas.json`
71
91
  files, that you want to surface in your MCP Server.
72
92
 
73
- ![MCP Server](../../public/media/mcp-quickstart/mcp-tools-dialog.png)
93
+ ![MCP Server](../../../public/media/mcp-quickstart/mcp-tools-dialog.png)
74
94
 
75
95
  Click **Update Tools** (1)
76
96
 
@@ -86,7 +106,7 @@ If you're not familiar with Zuplo, it's recommended to go through the
86
106
  [platform.openai.com/playground](https://platform.openai.com/playground)
87
107
  (you'll need an OpenAI account).
88
108
 
89
- ![Add tool](../../public/media/mcp-quickstart/openai-add-tool.png)
109
+ ![Add tool](../../../public/media/mcp-quickstart/openai-add-tool.png)
90
110
 
91
111
  Click `Create...` next to the **Tools** label and choose **MCP Server**.
92
112
 
@@ -96,13 +116,13 @@ If you're not familiar with Zuplo, it's recommended to go through the
96
116
  Zuplo, clicking on your MCP Server route and then clicking **Test**. At the
97
117
  top you'll see a button to copy the URL to your clipboard.
98
118
 
99
- ![Copy MCP Server URL](../../public/media/mcp-quickstart/copy-mcp-server-url.png)
119
+ ![Copy MCP Server URL](../../../public/media/mcp-quickstart/copy-mcp-server-url.png)
100
120
 
101
121
  Back to the OpenAI playground...
102
122
 
103
123
  <ModalScreenshot size="sm">
104
124
 
105
- ![Connect MCP Server](../../public/media/mcp-quickstart/connect-mcp-server.png)
125
+ ![Connect MCP Server](../../../public/media/mcp-quickstart/connect-mcp-server.png)
106
126
 
107
127
  </ModalScreenshot>
108
128
 
@@ -115,7 +135,7 @@ If you're not familiar with Zuplo, it's recommended to go through the
115
135
 
116
136
  <ModalScreenshot size="sm">
117
137
 
118
- ![Add tools](../../public/media/mcp-quickstart/add-tools.png)
138
+ ![Add tools](../../../public/media/mcp-quickstart/add-tools.png)
119
139
 
120
140
  </ModalScreenshot>
121
141
 
@@ -132,7 +152,7 @@ If you're not familiar with Zuplo, it's recommended to go through the
132
152
 
133
153
  Click **Approve** and you should see the todos listed 👏
134
154
 
135
- ![The prompt](../../public/media/mcp-quickstart/the-prompt.png)
155
+ ![The prompt](../../../public/media/mcp-quickstart/the-prompt.png)
136
156
 
137
157
  </Stepper>
138
158