zuplo 6.70.53 → 6.70.55

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 (160) hide show
  1. package/docs/mcp-gateway/auth/configuring-auth0.mdx +216 -0
  2. package/docs/mcp-gateway/auth/configuring-clerk.mdx +153 -0
  3. package/docs/mcp-gateway/auth/configuring-cognito.mdx +128 -0
  4. package/docs/mcp-gateway/auth/configuring-entra.mdx +134 -0
  5. package/docs/mcp-gateway/auth/configuring-generic-oidc.mdx +242 -0
  6. package/docs/mcp-gateway/auth/configuring-google.mdx +117 -0
  7. package/docs/mcp-gateway/auth/configuring-keycloak.mdx +125 -0
  8. package/docs/mcp-gateway/auth/configuring-logto.mdx +116 -0
  9. package/docs/mcp-gateway/auth/configuring-okta.mdx +199 -0
  10. package/docs/mcp-gateway/auth/configuring-onelogin.mdx +122 -0
  11. package/docs/mcp-gateway/auth/configuring-ping.mdx +157 -0
  12. package/docs/mcp-gateway/auth/configuring-workos.mdx +117 -0
  13. package/docs/mcp-gateway/auth/manual-oauth-testing.mdx +528 -0
  14. package/docs/mcp-gateway/auth/overview.mdx +314 -0
  15. package/docs/mcp-gateway/auth/upstream-oauth.mdx +221 -0
  16. package/docs/mcp-gateway/capability-filtering.mdx +162 -0
  17. package/docs/mcp-gateway/code-config/compatibility-dates.mdx +33 -0
  18. package/docs/mcp-gateway/code-config/local-development.mdx +198 -0
  19. package/docs/mcp-gateway/code-config/mcp-proxy-handler.mdx +186 -0
  20. package/docs/mcp-gateway/code-config/multi-upstream.mdx +293 -0
  21. package/docs/mcp-gateway/code-config/overview.mdx +210 -0
  22. package/docs/mcp-gateway/connect-clients/chatgpt.mdx +127 -0
  23. package/docs/mcp-gateway/connect-clients/claude-code.mdx +184 -0
  24. package/docs/mcp-gateway/connect-clients/claude-desktop.mdx +160 -0
  25. package/docs/mcp-gateway/connect-clients/cursor.mdx +100 -0
  26. package/docs/mcp-gateway/connect-clients/other-clients.mdx +207 -0
  27. package/docs/mcp-gateway/connect-clients/overview.mdx +137 -0
  28. package/docs/mcp-gateway/connect-clients/vs-code.mdx +128 -0
  29. package/docs/mcp-gateway/how-it-works.mdx +266 -0
  30. package/docs/mcp-gateway/how-to/connect-upstream-oauth.mdx +268 -0
  31. package/docs/mcp-gateway/how-to/curate-tools.mdx +278 -0
  32. package/docs/mcp-gateway/introduction.mdx +151 -0
  33. package/docs/mcp-gateway/observability/analytics.mdx +191 -0
  34. package/docs/mcp-gateway/observability/logging.mdx +191 -0
  35. package/docs/mcp-gateway/quickstart.mdx +266 -0
  36. package/docs/mcp-gateway/reference.mdx +148 -0
  37. package/docs/mcp-gateway/test-clients.mdx +130 -0
  38. package/docs/mcp-gateway/troubleshooting.mdx +228 -0
  39. package/docs/mcp-server/introduction.mdx +10 -0
  40. package/docs/mcp-server/openai-apps-sdk.mdx +12 -0
  41. package/docs/policies/_index.md +14 -0
  42. package/docs/policies/akamai-ai-firewall/schema.json +1 -0
  43. package/docs/policies/akamai-firewall-for-ai-inbound/schema.json +1 -0
  44. package/docs/policies/akamai-firewall-for-ai-outbound/schema.json +1 -0
  45. package/docs/policies/amberflo-metering-inbound/schema.json +1 -0
  46. package/docs/policies/api-key-inbound/schema.json +1 -0
  47. package/docs/policies/audit-log-inbound/schema.json +1 -0
  48. package/docs/policies/auth0-jwt-auth-inbound/schema.json +1 -0
  49. package/docs/policies/authzen-inbound/schema.json +1 -0
  50. package/docs/policies/axiomatics-authz-inbound/schema.json +1 -0
  51. package/docs/policies/basic-auth-inbound/schema.json +1 -0
  52. package/docs/policies/bot-detection-inbound/schema.json +1 -0
  53. package/docs/policies/brownout-inbound/schema.json +1 -0
  54. package/docs/policies/caching-inbound/schema.json +1 -0
  55. package/docs/policies/change-method-inbound/schema.json +1 -0
  56. package/docs/policies/clear-headers-inbound/schema.json +1 -0
  57. package/docs/policies/clear-headers-outbound/schema.json +1 -0
  58. package/docs/policies/clerk-jwt-auth-inbound/schema.json +1 -0
  59. package/docs/policies/cognito-jwt-auth-inbound/schema.json +1 -0
  60. package/docs/policies/comet-opik-tracing-inbound/schema.json +1 -0
  61. package/docs/policies/complex-rate-limit-inbound/schema.json +1 -0
  62. package/docs/policies/composite-inbound/schema.json +1 -0
  63. package/docs/policies/composite-outbound/schema.json +1 -0
  64. package/docs/policies/curity-phantom-token-inbound/schema.json +1 -0
  65. package/docs/policies/firebase-jwt-inbound/schema.json +1 -0
  66. package/docs/policies/formdata-to-json-inbound/schema.json +1 -0
  67. package/docs/policies/galileo-tracing-inbound/schema.json +1 -0
  68. package/docs/policies/geo-filter-inbound/schema.json +1 -0
  69. package/docs/policies/graphql-complexity-limit-inbound/schema.json +1 -0
  70. package/docs/policies/graphql-disable-introspection-inbound/schema.json +1 -0
  71. package/docs/policies/graphql-introspection-filter-outbound/schema.json +1 -0
  72. package/docs/policies/http-deprecation-outbound/schema.json +1 -0
  73. package/docs/policies/jwt-scopes-inbound/schema.json +1 -0
  74. package/docs/policies/ldap-auth-inbound/schema.json +1 -0
  75. package/docs/policies/mcp-auth0-oauth-inbound/doc.md +54 -0
  76. package/docs/policies/mcp-auth0-oauth-inbound/intro.md +7 -0
  77. package/docs/policies/mcp-auth0-oauth-inbound/schema.json +135 -0
  78. package/docs/policies/mcp-capability-filter-inbound/doc.md +58 -0
  79. package/docs/policies/mcp-capability-filter-inbound/intro.md +9 -0
  80. package/docs/policies/mcp-capability-filter-inbound/schema.json +212 -0
  81. package/docs/policies/mcp-clerk-oauth-inbound/doc.md +34 -0
  82. package/docs/policies/mcp-clerk-oauth-inbound/intro.md +1 -0
  83. package/docs/policies/mcp-clerk-oauth-inbound/schema.json +134 -0
  84. package/docs/policies/mcp-cognito-oauth-inbound/doc.md +52 -0
  85. package/docs/policies/mcp-cognito-oauth-inbound/intro.md +7 -0
  86. package/docs/policies/mcp-cognito-oauth-inbound/schema.json +152 -0
  87. package/docs/policies/mcp-entra-oauth-inbound/doc.md +51 -0
  88. package/docs/policies/mcp-entra-oauth-inbound/intro.md +6 -0
  89. package/docs/policies/mcp-entra-oauth-inbound/schema.json +131 -0
  90. package/docs/policies/mcp-google-oauth-inbound/doc.md +52 -0
  91. package/docs/policies/mcp-google-oauth-inbound/intro.md +6 -0
  92. package/docs/policies/mcp-google-oauth-inbound/schema.json +125 -0
  93. package/docs/policies/mcp-keycloak-oauth-inbound/doc.md +43 -0
  94. package/docs/policies/mcp-keycloak-oauth-inbound/intro.md +2 -0
  95. package/docs/policies/mcp-keycloak-oauth-inbound/schema.json +140 -0
  96. package/docs/policies/mcp-logto-oauth-inbound/doc.md +52 -0
  97. package/docs/policies/mcp-logto-oauth-inbound/intro.md +6 -0
  98. package/docs/policies/mcp-logto-oauth-inbound/schema.json +131 -0
  99. package/docs/policies/mcp-oauth-inbound/doc.md +70 -0
  100. package/docs/policies/mcp-oauth-inbound/intro.md +11 -0
  101. package/docs/policies/mcp-oauth-inbound/schema.json +177 -0
  102. package/docs/policies/mcp-okta-oauth-inbound/doc.md +61 -0
  103. package/docs/policies/mcp-okta-oauth-inbound/intro.md +7 -0
  104. package/docs/policies/mcp-okta-oauth-inbound/schema.json +137 -0
  105. package/docs/policies/mcp-onelogin-oauth-inbound/doc.md +50 -0
  106. package/docs/policies/mcp-onelogin-oauth-inbound/intro.md +6 -0
  107. package/docs/policies/mcp-onelogin-oauth-inbound/schema.json +131 -0
  108. package/docs/policies/mcp-ping-oauth-inbound/doc.md +80 -0
  109. package/docs/policies/mcp-ping-oauth-inbound/intro.md +7 -0
  110. package/docs/policies/mcp-ping-oauth-inbound/schema.json +151 -0
  111. package/docs/policies/mcp-token-exchange-inbound/doc.md +135 -0
  112. package/docs/policies/mcp-token-exchange-inbound/intro.md +6 -0
  113. package/docs/policies/mcp-token-exchange-inbound/schema.json +134 -0
  114. package/docs/policies/mcp-workos-oauth-inbound/doc.md +50 -0
  115. package/docs/policies/mcp-workos-oauth-inbound/intro.md +6 -0
  116. package/docs/policies/mcp-workos-oauth-inbound/schema.json +125 -0
  117. package/docs/policies/mock-api-inbound/schema.json +1 -0
  118. package/docs/policies/moesif-inbound/schema.json +1 -0
  119. package/docs/policies/monetization-inbound/schema.json +1 -0
  120. package/docs/policies/mtls-auth-inbound/schema.json +1 -0
  121. package/docs/policies/okta-fga-authz-inbound/schema.json +1 -0
  122. package/docs/policies/okta-jwt-auth-inbound/schema.json +1 -0
  123. package/docs/policies/open-id-jwt-auth-inbound/schema.json +1 -0
  124. package/docs/policies/openfga-authz-inbound/schema.json +1 -0
  125. package/docs/policies/openmeter-inbound/schema.json +1 -0
  126. package/docs/policies/prompt-injection-outbound/schema.json +1 -0
  127. package/docs/policies/propel-auth-jwt-inbound/schema.json +1 -0
  128. package/docs/policies/query-param-to-header-inbound/schema.json +1 -0
  129. package/docs/policies/quota-inbound/schema.json +1 -0
  130. package/docs/policies/rate-limit-inbound/schema.json +1 -0
  131. package/docs/policies/readme-metrics-inbound/schema.json +1 -0
  132. package/docs/policies/remove-headers-inbound/schema.json +1 -0
  133. package/docs/policies/remove-headers-outbound/schema.json +1 -0
  134. package/docs/policies/remove-query-params-inbound/schema.json +1 -0
  135. package/docs/policies/replace-string-outbound/schema.json +1 -0
  136. package/docs/policies/request-size-limit-inbound/schema.json +1 -0
  137. package/docs/policies/request-validation-inbound/schema.json +1 -0
  138. package/docs/policies/require-origin-inbound/schema.json +1 -0
  139. package/docs/policies/secret-masking-outbound/schema.json +1 -0
  140. package/docs/policies/semantic-cache-inbound/schema.json +1 -0
  141. package/docs/policies/set-body-inbound/schema.json +1 -0
  142. package/docs/policies/set-headers-inbound/schema.json +1 -0
  143. package/docs/policies/set-headers-outbound/schema.json +1 -0
  144. package/docs/policies/set-query-params-inbound/schema.json +1 -0
  145. package/docs/policies/set-status-outbound/schema.json +1 -0
  146. package/docs/policies/set-upstream-api-key-inbound/schema.json +1 -0
  147. package/docs/policies/sleep-inbound/schema.json +1 -0
  148. package/docs/policies/stripe-webhook-verification-inbound/schema.json +1 -0
  149. package/docs/policies/supabase-jwt-auth-inbound/schema.json +1 -0
  150. package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +1 -0
  151. package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +1 -0
  152. package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +1 -0
  153. package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +1 -0
  154. package/docs/policies/upstream-gcp-jwt-inbound/schema.json +1 -0
  155. package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +1 -0
  156. package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +1 -0
  157. package/docs/policies/validate-json-schema-inbound/schema.json +1 -0
  158. package/docs/policies/web-bot-auth-inbound/schema.json +1 -0
  159. package/docs/policies/xml-to-json-outbound/schema.json +1 -0
  160. package/package.json +4 -4
@@ -0,0 +1,184 @@
1
+ ---
2
+ title: "Connect Claude Code"
3
+ sidebar_label: "Claude Code"
4
+ description:
5
+ Connect Claude Code's CLI to a Zuplo MCP Gateway using `claude mcp add`,
6
+ authenticate over OAuth, and manage the connection from the `/mcp` slash
7
+ command.
8
+ ---
9
+
10
+ [Claude Code](https://code.claude.com/) is Anthropic's command-line coding
11
+ agent. It speaks the MCP Streamable HTTP transport natively and handles the
12
+ OAuth flow against the gateway in your browser.
13
+
14
+ ## Prerequisites
15
+
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.
18
+ - Claude Code installed and signed in. Install instructions are at
19
+ [code.claude.com](https://code.claude.com/).
20
+
21
+ ## Get the route URL
22
+
23
+ Each MCP route in `config/routes.oas.json` is reachable at
24
+ `https://{deploymentUrl}/{routePath}` once deployed — for example
25
+ `https://{deploymentUrl}/mcp/linear-v1`.
26
+
27
+ ## Add the gateway
28
+
29
+ From a terminal, run `claude mcp add` with the `http` transport, a friendly name
30
+ for the server, and your route URL:
31
+
32
+ ```bash
33
+ claude mcp add --transport http zuplo https://{deploymentUrl}/{routePath}
34
+ ```
35
+
36
+ The name (`zuplo` above) is the identifier you'll see in `/mcp` and in any
37
+ prompts that invoke the server. Pick whatever makes sense for your team.
38
+
39
+ By default the server is registered at **local scope** for the current project.
40
+ Use `--scope user` to make it available across every project on your machine, or
41
+ `--scope project` to commit a `.mcp.json` file alongside your code so your whole
42
+ team picks it up:
43
+
44
+ ```bash
45
+ # Share with the team via .mcp.json in the repo root
46
+ claude mcp add --transport http --scope project zuplo https://{deploymentUrl}/{routePath}
47
+ ```
48
+
49
+ Once added, the configuration is written to one of:
50
+
51
+ - `~/.claude.json` (local or user scope)
52
+ - `.mcp.json` at the project root (project scope)
53
+
54
+ You can also edit either file directly. The HTTP server entry has this shape:
55
+
56
+ ```json title=".mcp.json"
57
+ {
58
+ "mcpServers": {
59
+ "zuplo": {
60
+ "type": "http",
61
+ "url": "https://{deploymentUrl}/{routePath}"
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## Authenticate
68
+
69
+ The first time Claude Code talks to the gateway, the gateway returns
70
+ `401 Unauthorized` and Claude Code marks the server as needing authentication.
71
+
72
+ <Stepper>
73
+
74
+ 1. Inside a Claude Code session, run the `/mcp` slash command:
75
+
76
+ ```text
77
+ /mcp
78
+ ```
79
+
80
+ 2. Select the gateway entry and follow the browser prompt. Claude Code opens the
81
+ gateway's OAuth flow, you sign in with your identity provider, and the
82
+ gateway returns the access token to Claude Code.
83
+
84
+ 3. The gateway then displays the consent page with the upstream MCP server the
85
+ route depends on. Click **Connect** and complete the upstream OAuth flow,
86
+ then click **Authorize** to finish.
87
+
88
+ 4. Back in the terminal, run `/mcp` again to confirm the server is connected and
89
+ to see the tool count.
90
+
91
+ </Stepper>
92
+
93
+ Access tokens are stored securely (in the system keychain on macOS, in a
94
+ credentials file on other platforms) and refresh automatically. To revoke
95
+ access, open `/mcp` and choose **Clear authentication** for the server.
96
+
97
+ ## Use a fixed OAuth callback port
98
+
99
+ By default, Claude Code picks a random local port for the OAuth callback. The
100
+ gateway accepts any loopback redirect URI by default, so this works out of the
101
+ box. If you have a strict identity provider that requires a fixed redirect URI
102
+ registered in advance, pass `--callback-port`:
103
+
104
+ ```bash
105
+ claude mcp add --transport http --callback-port 8080 \
106
+ zuplo https://{deploymentUrl}/{routePath}
107
+ ```
108
+
109
+ ## Use pre-configured OAuth credentials
110
+
111
+ The gateway supports [Dynamic Client Registration (DCR)](../auth/overview.mdx),
112
+ so Claude Code registers itself automatically. If you operate a strict
113
+ environment that requires pre-registered OAuth clients instead, register an
114
+ OAuth app with the gateway's identity provider, then pass the credentials when
115
+ you add the server:
116
+
117
+ ```bash
118
+ claude mcp add --transport http \
119
+ --client-id your-client-id --client-secret --callback-port 8080 \
120
+ zuplo https://{deploymentUrl}/{routePath}
121
+ ```
122
+
123
+ The `--client-secret` flag prompts for the secret with masked input. Claude Code
124
+ stores the secret in the system keychain, not in the config file.
125
+
126
+ For non-interactive scripts, set the secret via the `MCP_CLIENT_SECRET`
127
+ environment variable instead of the prompt:
128
+
129
+ ```bash
130
+ MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
131
+ --client-id your-client-id --client-secret --callback-port 8080 \
132
+ zuplo https://{deploymentUrl}/{routePath}
133
+ ```
134
+
135
+ ## What Claude Code supports
136
+
137
+ Claude Code uses OAuth 2.1 with PKCE and registers itself via Dynamic Client
138
+ Registration. It supports the following MCP capabilities from the gateway:
139
+
140
+ - **Tools** — invoke gateway-exposed tools during a session.
141
+ - **Prompts** — surface prompts as `/mcp__<server>__<prompt>` slash commands.
142
+ - **Resources** — reference resources with `@server:protocol://path` in prompts.
143
+ - **Roots** — declare the project root to the server.
144
+ - **Elicitation** — Claude Code shows form dialogs and opens URLs when a server
145
+ requests structured input or interactive authorization mid-task.
146
+
147
+ ## Manage the connection
148
+
149
+ A few commands you'll use often:
150
+
151
+ ```bash
152
+ # List every configured server
153
+ claude mcp list
154
+
155
+ # Show details for one server
156
+ claude mcp get zuplo
157
+
158
+ # Remove the server
159
+ claude mcp remove zuplo
160
+ ```
161
+
162
+ Inside a session, `/mcp` shows the live status of each server (connected,
163
+ pending, failed), the number of tools each one exposes, and provides
164
+ re-authentication and authentication-clearing commands per server.
165
+
166
+ ## Troubleshooting
167
+
168
+ - **`/mcp` shows the server as failed.** Run `claude mcp get zuplo` to confirm
169
+ the URL is correct, then re-run `/mcp` to retry. Check the gateway's
170
+ deployment is healthy and the URL is reachable from your machine.
171
+ - **"Incompatible auth server: does not support dynamic client registration."**
172
+ This appears if the gateway's identity provider blocks DCR. Either enable DCR
173
+ on the provider or use pre-configured OAuth credentials as shown above.
174
+ - **The browser does not open during OAuth.** Copy the URL Claude Code prints in
175
+ the terminal and open it manually. If the callback fails, paste the full
176
+ callback URL from your browser's address bar into the prompt Claude Code
177
+ shows.
178
+
179
+ ## Related
180
+
181
+ - [Connect MCP clients overview](./overview.mdx)
182
+ - Anthropic's docs:
183
+ [Connect Claude Code to tools via MCP](https://code.claude.com/docs/en/mcp)
184
+ - [Authentication overview](../auth/overview.mdx)
@@ -0,0 +1,160 @@
1
+ ---
2
+ title: "Connect Claude Desktop and Claude.ai"
3
+ sidebar_label: "Claude Desktop"
4
+ description:
5
+ Connect Claude Desktop or Claude.ai to a Zuplo MCP Gateway as a custom remote
6
+ connector, complete the OAuth flow, and start using your tools.
7
+ ---
8
+
9
+ Claude Desktop and Claude.ai connect to remote MCP servers through **Custom
10
+ Connectors**. Adding a Zuplo MCP route takes two steps: paste the route URL into
11
+ Claude's connector settings, then complete the browser-based OAuth flow.
12
+
13
+ ## Prerequisites
14
+
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.
17
+ - Claude Desktop installed, or access to Claude.ai in your browser.
18
+ - A Claude plan that supports custom connectors. Per
19
+ [Anthropic's documentation](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp),
20
+ custom connectors are available on Free, Pro, Max, Team, and Enterprise plans.
21
+ Free plans are limited to one custom connector. Team and Enterprise plans
22
+ require an organization owner to add the connector first before individual
23
+ members can authenticate.
24
+
25
+ ## Get the route URL
26
+
27
+ 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`.
31
+
32
+ ## Add the connector in Claude
33
+
34
+ Both Claude Desktop and Claude.ai support custom connectors. The flow is nearly
35
+ identical in each.
36
+
37
+ <Stepper>
38
+
39
+ 1. **Open connector settings.**
40
+ - **Claude Desktop:** open **Settings** → **Connectors**.
41
+ - **Claude.ai:** open **Settings** → **Connectors** in the web app.
42
+
43
+ 2. **Add a custom connector.**
44
+
45
+ Scroll to the bottom of the Connectors list and click **Add custom
46
+ connector**.
47
+
48
+ 3. **Enter the gateway URL.**
49
+
50
+ Paste the route URL (for example `https://{deploymentUrl}/mcp/linear-v1`).
51
+ Optionally name the connector (the name is what Claude shows you in the
52
+ connector list and in tool results) and click **Add**.
53
+
54
+ 4. **Sign in to the gateway.**
55
+
56
+ Claude opens the gateway's OAuth flow in a browser. Sign in with the identity
57
+ provider you configured for the gateway — see the
58
+ [provider catalog](../auth/overview.mdx#identity-providers) for the full list
59
+ of supported IdPs.
60
+
61
+ 5. **Complete the upstream connection.**
62
+
63
+ The gateway shows a consent page with the upstream MCP server the route
64
+ proxies to. Click **Connect** next to the upstream and complete its OAuth
65
+ flow. Once it's connected, click **Authorize** to finish.
66
+
67
+ 6. **Verify the connector is active.**
68
+
69
+ Back in Claude, the new connector appears in your Connectors list. Open a
70
+ chat and click the attachment icon to confirm tools, prompts, and resources
71
+ from the gateway are available.
72
+
73
+ </Stepper>
74
+
75
+ :::tip
76
+
77
+ 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.
79
+
80
+ :::
81
+
82
+ ## What Claude Desktop supports
83
+
84
+ Claude Desktop registers itself with the gateway through
85
+ [Dynamic Client Registration (DCR)](https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization).
86
+
87
+ Claude Desktop supports the following MCP capabilities from the gateway:
88
+
89
+ - **Tools** — invoke gateway-exposed tools by name.
90
+ - **Prompts** — surface prompts as commands in the chat interface.
91
+ - **Resources** — attach resources to messages from the attachment menu.
92
+ - **Roots** — declare filesystem boundaries to the server.
93
+ - **MCP Apps** — render interactive HTML widgets inline in the conversation.
94
+
95
+ Claude.ai (the web version) supports the same set, plus
96
+ [Client ID Metadata Documents (CIMD)](https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization)
97
+ in addition to DCR.
98
+
99
+ ## Use a manual config file (advanced)
100
+
101
+ If you need to script the install or share the configuration with a team, Claude
102
+ Desktop also reads `claude_desktop_config.json`. This approach uses
103
+ [`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
+
108
+ 1. In Claude Desktop, open **Settings** → **Developer** → **Edit Config**. This
109
+ opens `claude_desktop_config.json` in your editor.
110
+ 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:
112
+
113
+ ```json title="claude_desktop_config.json"
114
+ {
115
+ "mcpServers": {
116
+ "Zuplo MCP": {
117
+ "command": "npx",
118
+ "args": ["mcp-remote", "https://{deploymentUrl}/{routePath}"]
119
+ }
120
+ }
121
+ }
122
+ ```
123
+
124
+ 3. Save the file and restart Claude Desktop.
125
+ 4. The first time Claude Desktop starts the bridge, it opens a browser window to
126
+ complete the OAuth flow against the gateway. Sign in and approve the consent
127
+ page as you would for a native connector.
128
+ 5. Verify the server appears in Claude Desktop. Tools are available behind the
129
+ attachment icon.
130
+
131
+ :::note
132
+
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
+
138
+ :::
139
+
140
+ ## Troubleshooting
141
+
142
+ - **Browser does not open during OAuth.** Verify the gateway's deployment URL is
143
+ reachable from your machine and your firewall or proxy allows outbound HTTPS
144
+ to the gateway origin.
145
+ - **Consent page shows "Connect" for every upstream every time.** This means the
146
+ gateway never received the user's signed-in identity. Confirm that your IdP is
147
+ configured correctly and that browser cookies are enabled for the gateway
148
+ origin.
149
+ - **Tools do not appear after a successful authorization.** Open the connector
150
+ in Settings → Connectors and check that each tool is enabled. Disabled tools
151
+ are hidden from the attachment menu.
152
+
153
+ ## Related
154
+
155
+ - [Connect MCP clients overview](./overview.mdx)
156
+ - Anthropic's official guide:
157
+ [Connect to remote MCP servers](https://modelcontextprotocol.io/docs/develop/connect-remote-servers)
158
+ - Anthropic's setup article:
159
+ [Get started with custom connectors using remote MCP](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp)
160
+ - [Authentication overview](../auth/overview.mdx)
@@ -0,0 +1,100 @@
1
+ ---
2
+ title: "Connect Cursor"
3
+ sidebar_label: "Cursor"
4
+ description:
5
+ Connect Cursor to a Zuplo MCP Gateway using a one-click deeplink or by editing
6
+ `mcp.json` directly, complete the OAuth flow, and use gateway tools in Cursor
7
+ Composer.
8
+ ---
9
+
10
+ [Cursor](https://cursor.com/) is an AI-first code editor. It speaks the MCP
11
+ Streamable HTTP transport natively and supports OAuth-protected remote MCP
12
+ servers, which is exactly what the Zuplo MCP Gateway exposes.
13
+
14
+ Add the gateway connector in Cursor by editing Cursor's `mcp.json` configuration
15
+ or by using a deeplink that opens Cursor and adds the entry.
16
+
17
+ ## Prerequisites
18
+
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.
21
+ - Cursor installed and signed in.
22
+
23
+ ## Get the route URL
24
+
25
+ Each MCP route in `config/routes.oas.json` is reachable at
26
+ `https://{deploymentUrl}/{routePath}` once deployed — for example
27
+ `https://{deploymentUrl}/mcp/linear-v1`.
28
+
29
+ ## Edit mcp.json
30
+
31
+ Cursor reads MCP server configuration from two locations:
32
+
33
+ - `~/.cursor/mcp.json` — applies to every project you open with Cursor.
34
+ - `.cursor/mcp.json` in a project's root — applies only to that project, and can
35
+ be committed to version control to share with your team.
36
+
37
+ Add an entry under `mcpServers`, using a friendly name as the key and the route
38
+ URL as the value:
39
+
40
+ ```json title="~/.cursor/mcp.json"
41
+ {
42
+ "mcpServers": {
43
+ "Zuplo MCP": {
44
+ "url": "https://{deploymentUrl}/{routePath}"
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ Restart Cursor after editing the file. The first time Cursor connects, it opens
51
+ a browser to complete the OAuth flow.
52
+
53
+ ### Environment variable interpolation
54
+
55
+ Cursor's `mcp.json` supports interpolation so you don't need to hardcode
56
+ sensitive values:
57
+
58
+ - `${env:NAME}` — resolves to the environment variable `NAME`.
59
+ - `${workspaceFolder}` — resolves to the project root.
60
+ - `${userHome}` — resolves to your home directory.
61
+
62
+ These work inside `command`, `args`, `env`, `url`, and `headers`. For example,
63
+ to use a per-environment deployment URL:
64
+
65
+ ```json
66
+ {
67
+ "mcpServers": {
68
+ "Zuplo MCP": {
69
+ "url": "${env:ZUPLO_MCP_URL}"
70
+ }
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## What Cursor supports
76
+
77
+ Cursor registers itself with the gateway through Dynamic Client Registration and
78
+ supports:
79
+
80
+ - **Tools** — invoke gateway-exposed tools from Composer.
81
+ - **Prompts** — surface gateway prompts in the prompt picker.
82
+ - **Roots** — declare the project root to the server.
83
+ - **Elicitation** — handle form-mode and URL-mode elicitation requests from the
84
+ gateway, including upstream re-authorization prompts.
85
+ - **MCP Apps** — render interactive HTML widgets from compatible servers.
86
+
87
+ ## Troubleshooting
88
+
89
+ - **Cursor shows "Failed to connect" for the server.** Open `~/.cursor/mcp.json`
90
+ and confirm the URL is correct and reachable. If the gateway is healthy,
91
+ restart Cursor to retry the OAuth flow.
92
+ - **Tools do not refresh after upstream changes.** Restart Cursor or toggle the
93
+ server off and back on in the MCP settings. Cursor caches the tool list per
94
+ server.
95
+
96
+ ## Related
97
+
98
+ - [Connect MCP clients overview](./overview.mdx)
99
+ - Cursor's docs: [Model Context Protocol](https://cursor.com/docs/context/mcp)
100
+ - [Authentication overview](../auth/overview.mdx)
@@ -0,0 +1,207 @@
1
+ ---
2
+ title: "Other MCP clients"
3
+ sidebar_label: "Other clients"
4
+ description:
5
+ Add a Zuplo MCP Gateway to Windsurf, Goose, Gemini CLI, GitHub Copilot CLI,
6
+ Postman, MCPJam, Continue, LibreChat, and JetBrains AI Assistant.
7
+ ---
8
+
9
+ The Zuplo MCP Gateway works with any MCP client that speaks the Streamable HTTP
10
+ transport. The pages in this section give the basics for several popular clients
11
+ beyond the ones with dedicated guides ([Claude Desktop](./claude-desktop.mdx),
12
+ [Claude Code](./claude-code.mdx), [ChatGPT](./chatgpt.mdx),
13
+ [Cursor](./cursor.mdx), [VS Code](./vs-code.mdx)).
14
+
15
+ For each client, the pattern is the same: paste your MCP route URL
16
+ (`https://{deploymentUrl}/{routePath}`, for example
17
+ `https://{deploymentUrl}/mcp/linear-v1`) into the client's configuration, then
18
+ complete the gateway's OAuth flow in your browser when prompted.
19
+
20
+ ## Windsurf
21
+
22
+ [Windsurf](https://windsurf.com/) is an agentic IDE from Codeium with a built-in
23
+ AI flow called **Cascade**. Cascade supports stdio, Streamable HTTP, and the
24
+ older SSE transport, with OAuth available on each.
25
+
26
+ To add the gateway, edit `~/.codeium/windsurf/mcp_config.json` and add an entry
27
+ under `mcpServers`:
28
+
29
+ ```json title="~/.codeium/windsurf/mcp_config.json"
30
+ {
31
+ "mcpServers": {
32
+ "zuplo": {
33
+ "serverUrl": "https://{deploymentUrl}/{routePath}"
34
+ }
35
+ }
36
+ }
37
+ ```
38
+
39
+ Windsurf supports environment-variable interpolation with `${env:VAR_NAME}` in
40
+ the config so you don't have to hardcode the URL or any header values.
41
+
42
+ Restart Cascade and complete the gateway's OAuth flow in your browser when
43
+ prompted.
44
+
45
+ Capabilities supported: tools.
46
+
47
+ Docs: [Windsurf Cascade MCP](https://docs.windsurf.com/windsurf/cascade/mcp).
48
+
49
+ ## Goose
50
+
51
+ [Goose](https://block.github.io/goose/) is Block's open-source AI agent. Goose
52
+ supports the Streamable HTTP transport for remote MCP servers — it calls them
53
+ **remote extensions**.
54
+
55
+ To add the gateway from the Goose CLI:
56
+
57
+ ```bash
58
+ goose configure
59
+ ```
60
+
61
+ Choose **Add Extension** → **Remote Extension (Streamable HTTP)** and follow the
62
+ prompts. Enter your route URL when asked. From the Goose Desktop app, open
63
+ **Settings** → **Extensions** → **Add custom extension** and paste the same URL.
64
+
65
+ Goose then opens the gateway's OAuth flow in your browser. Sign in and complete
66
+ the upstream consent page.
67
+
68
+ Capabilities supported: tools, prompts, resources, roots, sampling, elicitation,
69
+ MCP Apps.
70
+
71
+ Docs:
72
+ [Goose extensions](https://block.github.io/goose/docs/getting-started/using-extensions).
73
+
74
+ ## Gemini CLI
75
+
76
+ The [Gemini CLI](https://github.com/google-gemini/gemini-cli) is Google's
77
+ open-source terminal agent for Gemini. Configure MCP servers in
78
+ `~/.gemini/settings.json` under the `mcpServers` key:
79
+
80
+ ```json title="~/.gemini/settings.json"
81
+ {
82
+ "mcpServers": {
83
+ "zuplo": {
84
+ "httpUrl": "https://{deploymentUrl}/{routePath}"
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ Restart the CLI. The Gemini CLI registers itself with the gateway through
91
+ Dynamic Client Registration and opens the OAuth flow in your browser on first
92
+ connect.
93
+
94
+ Capabilities supported: tools, prompts.
95
+
96
+ Docs:
97
+ [Gemini CLI MCP server configuration](https://geminicli.com/docs/tools/mcp-server/).
98
+
99
+ ## GitHub Copilot CLI
100
+
101
+ The [GitHub Copilot CLI](https://github.com/features/copilot/cli/) is GitHub's
102
+ terminal agent. Use the `/mcp add` slash command from inside a Copilot CLI
103
+ session to add the gateway. Copilot CLI prompts for the server name, transport
104
+ (`http`), and URL, then writes the entry to `~/.copilot/mcp-config.json` and
105
+ starts the OAuth flow.
106
+
107
+ Capabilities supported: tools, sampling, elicitation, OAuth Client Credentials.
108
+
109
+ Docs:
110
+ [Add an MCP server](https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli#add-an-mcp-server).
111
+
112
+ ## Postman
113
+
114
+ [Postman](https://www.postman.com/) supports MCP server testing and debugging
115
+ through its AI Agent Builder. Create a new MCP request, choose **Streamable
116
+ HTTP**, and paste your MCP route URL. Postman handles the OAuth flow inline.
117
+
118
+ Postman is a useful client for verifying that an MCP route responds correctly,
119
+ inspecting raw JSON-RPC traffic, and debugging tool schemas.
120
+
121
+ Capabilities supported: tools, prompts, resources, sampling, elicitation, MCP
122
+ Apps.
123
+
124
+ Docs: [Postman download](https://www.postman.com/downloads/) (MCP support is
125
+ built into the standard Postman desktop client).
126
+
127
+ ## MCPJam
128
+
129
+ [MCPJam Inspector](https://github.com/MCPJam/inspector) is an open-source local
130
+ development client for MCP servers, ChatGPT apps, and MCP App extensions. It's a
131
+ strong tool for verifying gateway behavior end-to-end during development.
132
+
133
+ Launch the inspector, set the transport to **Streamable HTTP**, and paste your
134
+ MCP route URL. MCPJam runs the OAuth flow and shows tools, prompts, resources,
135
+ and any MCP Apps the gateway exposes.
136
+
137
+ Capabilities supported: tools, prompts, resources, elicitation, MCP Apps, DCR,
138
+ CIMD, Tasks.
139
+
140
+ Docs: [MCPJam getting started](https://docs.mcpjam.com/getting-started).
141
+
142
+ ## Continue
143
+
144
+ [Continue](https://www.continue.dev/) is an open-source AI code assistant that
145
+ runs in VS Code and JetBrains IDEs. Continue supports MCP servers in **agent
146
+ mode** only.
147
+
148
+ Add the gateway either by editing your main Continue config or by creating a
149
+ standalone YAML file under `.continue/mcpServers/`. For a remote HTTP server:
150
+
151
+ ```yaml title=".continue/mcpServers/zuplo.yaml"
152
+ name: zuplo
153
+ version: 0.0.1
154
+ schema: v1
155
+ mcpServers:
156
+ - name: zuplo
157
+ type: streamable-http
158
+ url: https://{deploymentUrl}/{routePath}
159
+ ```
160
+
161
+ Capabilities supported: tools, prompts, resources, MCP Apps.
162
+
163
+ Docs:
164
+ [Continue MCP deep dive](https://docs.continue.dev/customize/deep-dives/mcp).
165
+
166
+ ## LibreChat
167
+
168
+ [LibreChat](https://github.com/danny-avila/LibreChat) is an open-source
169
+ self-hosted AI chat UI. LibreChat supports MCP servers as additional tool
170
+ sources.
171
+
172
+ Add the gateway in the `mcpServers` section of your `librechat.yaml`
173
+ configuration, restart the LibreChat server, and complete the OAuth flow the
174
+ first time you select the connector in a conversation.
175
+
176
+ Capabilities supported: tools.
177
+
178
+ Docs: [LibreChat MCP](https://www.librechat.ai/docs/features/mcp).
179
+
180
+ ## JetBrains AI Assistant
181
+
182
+ The
183
+ [JetBrains AI Assistant](https://plugins.jetbrains.com/plugin/22282-jetbrains-ai-assistant)
184
+ plugin is available in every JetBrains IDE. It supports MCP servers as sources
185
+ of tools for the AI Assistant.
186
+
187
+ Open the AI Assistant settings, add an MCP server, and paste your MCP route URL.
188
+ Complete the OAuth flow in your browser when prompted.
189
+
190
+ Capabilities supported: tools.
191
+
192
+ Docs:
193
+ [Model Context Protocol in JetBrains AI Assistant](https://www.jetbrains.com/help/ai-assistant/mcp.html).
194
+
195
+ ## Other clients
196
+
197
+ For an up-to-date list of MCP clients, see the official
198
+ [MCP clients page](https://modelcontextprotocol.io/clients). Any client that
199
+ supports the Streamable HTTP transport and standard MCP authorization (RFC 9728
200
+ Protected Resource Metadata plus OAuth 2.1) will work with the Zuplo MCP Gateway
201
+ out of the box.
202
+
203
+ ## Related
204
+
205
+ - [Connect MCP clients overview](./overview.mdx)
206
+ - [Authentication overview](../auth/overview.mdx)
207
+ - [Configuring the MCP Gateway with code](../code-config/overview.mdx)