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.
- package/docs/mcp-gateway/auth/configuring-auth0.mdx +216 -0
- package/docs/mcp-gateway/auth/configuring-clerk.mdx +153 -0
- package/docs/mcp-gateway/auth/configuring-cognito.mdx +128 -0
- package/docs/mcp-gateway/auth/configuring-entra.mdx +134 -0
- package/docs/mcp-gateway/auth/configuring-generic-oidc.mdx +242 -0
- package/docs/mcp-gateway/auth/configuring-google.mdx +117 -0
- package/docs/mcp-gateway/auth/configuring-keycloak.mdx +125 -0
- package/docs/mcp-gateway/auth/configuring-logto.mdx +116 -0
- package/docs/mcp-gateway/auth/configuring-okta.mdx +199 -0
- package/docs/mcp-gateway/auth/configuring-onelogin.mdx +122 -0
- package/docs/mcp-gateway/auth/configuring-ping.mdx +157 -0
- package/docs/mcp-gateway/auth/configuring-workos.mdx +117 -0
- package/docs/mcp-gateway/auth/manual-oauth-testing.mdx +528 -0
- package/docs/mcp-gateway/auth/overview.mdx +314 -0
- package/docs/mcp-gateway/auth/upstream-oauth.mdx +221 -0
- package/docs/mcp-gateway/capability-filtering.mdx +162 -0
- package/docs/mcp-gateway/code-config/compatibility-dates.mdx +33 -0
- package/docs/mcp-gateway/code-config/local-development.mdx +198 -0
- package/docs/mcp-gateway/code-config/mcp-proxy-handler.mdx +186 -0
- package/docs/mcp-gateway/code-config/multi-upstream.mdx +293 -0
- package/docs/mcp-gateway/code-config/overview.mdx +210 -0
- package/docs/mcp-gateway/connect-clients/chatgpt.mdx +127 -0
- package/docs/mcp-gateway/connect-clients/claude-code.mdx +184 -0
- package/docs/mcp-gateway/connect-clients/claude-desktop.mdx +160 -0
- package/docs/mcp-gateway/connect-clients/cursor.mdx +100 -0
- package/docs/mcp-gateway/connect-clients/other-clients.mdx +207 -0
- package/docs/mcp-gateway/connect-clients/overview.mdx +137 -0
- package/docs/mcp-gateway/connect-clients/vs-code.mdx +128 -0
- package/docs/mcp-gateway/how-it-works.mdx +266 -0
- package/docs/mcp-gateway/how-to/connect-upstream-oauth.mdx +268 -0
- package/docs/mcp-gateway/how-to/curate-tools.mdx +278 -0
- package/docs/mcp-gateway/introduction.mdx +151 -0
- package/docs/mcp-gateway/observability/analytics.mdx +191 -0
- package/docs/mcp-gateway/observability/logging.mdx +191 -0
- package/docs/mcp-gateway/quickstart.mdx +266 -0
- package/docs/mcp-gateway/reference.mdx +148 -0
- package/docs/mcp-gateway/test-clients.mdx +130 -0
- package/docs/mcp-gateway/troubleshooting.mdx +228 -0
- package/docs/mcp-server/introduction.mdx +10 -0
- package/docs/mcp-server/openai-apps-sdk.mdx +12 -0
- package/docs/policies/_index.md +14 -0
- package/docs/policies/akamai-ai-firewall/schema.json +1 -0
- package/docs/policies/akamai-firewall-for-ai-inbound/schema.json +1 -0
- package/docs/policies/akamai-firewall-for-ai-outbound/schema.json +1 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +1 -0
- package/docs/policies/api-key-inbound/schema.json +1 -0
- package/docs/policies/audit-log-inbound/schema.json +1 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/authzen-inbound/schema.json +1 -0
- package/docs/policies/axiomatics-authz-inbound/schema.json +1 -0
- package/docs/policies/basic-auth-inbound/schema.json +1 -0
- package/docs/policies/bot-detection-inbound/schema.json +1 -0
- package/docs/policies/brownout-inbound/schema.json +1 -0
- package/docs/policies/caching-inbound/schema.json +1 -0
- package/docs/policies/change-method-inbound/schema.json +1 -0
- package/docs/policies/clear-headers-inbound/schema.json +1 -0
- package/docs/policies/clear-headers-outbound/schema.json +1 -0
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/comet-opik-tracing-inbound/schema.json +1 -0
- package/docs/policies/complex-rate-limit-inbound/schema.json +1 -0
- package/docs/policies/composite-inbound/schema.json +1 -0
- package/docs/policies/composite-outbound/schema.json +1 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +1 -0
- package/docs/policies/firebase-jwt-inbound/schema.json +1 -0
- package/docs/policies/formdata-to-json-inbound/schema.json +1 -0
- package/docs/policies/galileo-tracing-inbound/schema.json +1 -0
- package/docs/policies/geo-filter-inbound/schema.json +1 -0
- package/docs/policies/graphql-complexity-limit-inbound/schema.json +1 -0
- package/docs/policies/graphql-disable-introspection-inbound/schema.json +1 -0
- package/docs/policies/graphql-introspection-filter-outbound/schema.json +1 -0
- package/docs/policies/http-deprecation-outbound/schema.json +1 -0
- package/docs/policies/jwt-scopes-inbound/schema.json +1 -0
- package/docs/policies/ldap-auth-inbound/schema.json +1 -0
- package/docs/policies/mcp-auth0-oauth-inbound/doc.md +54 -0
- package/docs/policies/mcp-auth0-oauth-inbound/intro.md +7 -0
- package/docs/policies/mcp-auth0-oauth-inbound/schema.json +135 -0
- package/docs/policies/mcp-capability-filter-inbound/doc.md +58 -0
- package/docs/policies/mcp-capability-filter-inbound/intro.md +9 -0
- package/docs/policies/mcp-capability-filter-inbound/schema.json +212 -0
- package/docs/policies/mcp-clerk-oauth-inbound/doc.md +34 -0
- package/docs/policies/mcp-clerk-oauth-inbound/intro.md +1 -0
- package/docs/policies/mcp-clerk-oauth-inbound/schema.json +134 -0
- package/docs/policies/mcp-cognito-oauth-inbound/doc.md +52 -0
- package/docs/policies/mcp-cognito-oauth-inbound/intro.md +7 -0
- package/docs/policies/mcp-cognito-oauth-inbound/schema.json +152 -0
- package/docs/policies/mcp-entra-oauth-inbound/doc.md +51 -0
- package/docs/policies/mcp-entra-oauth-inbound/intro.md +6 -0
- package/docs/policies/mcp-entra-oauth-inbound/schema.json +131 -0
- package/docs/policies/mcp-google-oauth-inbound/doc.md +52 -0
- package/docs/policies/mcp-google-oauth-inbound/intro.md +6 -0
- package/docs/policies/mcp-google-oauth-inbound/schema.json +125 -0
- package/docs/policies/mcp-keycloak-oauth-inbound/doc.md +43 -0
- package/docs/policies/mcp-keycloak-oauth-inbound/intro.md +2 -0
- package/docs/policies/mcp-keycloak-oauth-inbound/schema.json +140 -0
- package/docs/policies/mcp-logto-oauth-inbound/doc.md +52 -0
- package/docs/policies/mcp-logto-oauth-inbound/intro.md +6 -0
- package/docs/policies/mcp-logto-oauth-inbound/schema.json +131 -0
- package/docs/policies/mcp-oauth-inbound/doc.md +70 -0
- package/docs/policies/mcp-oauth-inbound/intro.md +11 -0
- package/docs/policies/mcp-oauth-inbound/schema.json +177 -0
- package/docs/policies/mcp-okta-oauth-inbound/doc.md +61 -0
- package/docs/policies/mcp-okta-oauth-inbound/intro.md +7 -0
- package/docs/policies/mcp-okta-oauth-inbound/schema.json +137 -0
- package/docs/policies/mcp-onelogin-oauth-inbound/doc.md +50 -0
- package/docs/policies/mcp-onelogin-oauth-inbound/intro.md +6 -0
- package/docs/policies/mcp-onelogin-oauth-inbound/schema.json +131 -0
- package/docs/policies/mcp-ping-oauth-inbound/doc.md +80 -0
- package/docs/policies/mcp-ping-oauth-inbound/intro.md +7 -0
- package/docs/policies/mcp-ping-oauth-inbound/schema.json +151 -0
- package/docs/policies/mcp-token-exchange-inbound/doc.md +135 -0
- package/docs/policies/mcp-token-exchange-inbound/intro.md +6 -0
- package/docs/policies/mcp-token-exchange-inbound/schema.json +134 -0
- package/docs/policies/mcp-workos-oauth-inbound/doc.md +50 -0
- package/docs/policies/mcp-workos-oauth-inbound/intro.md +6 -0
- package/docs/policies/mcp-workos-oauth-inbound/schema.json +125 -0
- package/docs/policies/mock-api-inbound/schema.json +1 -0
- package/docs/policies/moesif-inbound/schema.json +1 -0
- package/docs/policies/monetization-inbound/schema.json +1 -0
- package/docs/policies/mtls-auth-inbound/schema.json +1 -0
- package/docs/policies/okta-fga-authz-inbound/schema.json +1 -0
- package/docs/policies/okta-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/openfga-authz-inbound/schema.json +1 -0
- package/docs/policies/openmeter-inbound/schema.json +1 -0
- package/docs/policies/prompt-injection-outbound/schema.json +1 -0
- package/docs/policies/propel-auth-jwt-inbound/schema.json +1 -0
- package/docs/policies/query-param-to-header-inbound/schema.json +1 -0
- package/docs/policies/quota-inbound/schema.json +1 -0
- package/docs/policies/rate-limit-inbound/schema.json +1 -0
- package/docs/policies/readme-metrics-inbound/schema.json +1 -0
- package/docs/policies/remove-headers-inbound/schema.json +1 -0
- package/docs/policies/remove-headers-outbound/schema.json +1 -0
- package/docs/policies/remove-query-params-inbound/schema.json +1 -0
- package/docs/policies/replace-string-outbound/schema.json +1 -0
- package/docs/policies/request-size-limit-inbound/schema.json +1 -0
- package/docs/policies/request-validation-inbound/schema.json +1 -0
- package/docs/policies/require-origin-inbound/schema.json +1 -0
- package/docs/policies/secret-masking-outbound/schema.json +1 -0
- package/docs/policies/semantic-cache-inbound/schema.json +1 -0
- package/docs/policies/set-body-inbound/schema.json +1 -0
- package/docs/policies/set-headers-inbound/schema.json +1 -0
- package/docs/policies/set-headers-outbound/schema.json +1 -0
- package/docs/policies/set-query-params-inbound/schema.json +1 -0
- package/docs/policies/set-status-outbound/schema.json +1 -0
- package/docs/policies/set-upstream-api-key-inbound/schema.json +1 -0
- package/docs/policies/sleep-inbound/schema.json +1 -0
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +1 -0
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-gcp-jwt-inbound/schema.json +1 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/validate-json-schema-inbound/schema.json +1 -0
- package/docs/policies/web-bot-auth-inbound/schema.json +1 -0
- package/docs/policies/xml-to-json-outbound/schema.json +1 -0
- 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)
|