Two tokens, two different jobs
Almost every MCP setup problem is these two being confused. They are unrelated.
This page is about the proxy token. For the upstream credential, see
MCP Server Catalog.
Neither token reaches the model or its context window. Your client sends the
proxy token to hoop; hoop authenticates you, applies tool policy and masking,
then talks to the MCP server with the connection’s own credential.
Which endpoint do I use?
Gateway endpoint
For
streamable-http, sse and stdio connections. A shared URL on your
hoop gateway. Nothing to install.Local endpoint
For
client-stdio connections. hoop connect opens a port on your own
machine and runs the MCP server there.Path A — Gateway endpoint
Use this for remote servers (streamable-http, sse) and for agent-run
stdio servers. Nothing is installed on your machine.
1
Open the connection
In the web app, go to Resources, pick the MCP Gateway connection, and
click Connect.
2
Copy the endpoint and token
The modal shows an MCP endpoint ending in
/mcp and an
Authorization header value beginning mcpproxy-. It also renders a
ready-to-paste config block for Claude Code, Cursor and Devin.3
Add it to your client
Paste the block for your client, or use the commands below.Claude CodeOr in Cursor — Devin —
.mcp.json:~/.cursor/mcp.json for every project, or .cursor/mcp.json
for one:.devin/mcp_config.json:4
Restart the client and verify
Restart your MCP client, then ask it to list its tools. Denied tools are
absent by design: hoop removes them from the catalog before the model sees
them, so the model never attempts a call you would have blocked.
Path B — Local endpoint (client-stdio)
Use this when the connection’s transport is client-stdio. The MCP server
runs on your machine, so it sees your working tree, your SSH agent and
your logged-in CLIs. Every tool call is still inspected by hoop first.
Here is what actually happens:
1
Install the hoop CLI
2
Install the MCP server's runtime
The command the admin configured runs on your machine, so its runtime must
be there. An
npx-based server needs Node; a uvx-based one needs Python
and uv. Ask your admin what the command is, or read it from the
connection page.3
Log in and connect
--port 9000 if 8081 is taken.4
Point your client at the local endpoint
Same config as Path A with one difference: the URL is the local one the
CLI printed. No
Authorization header is needed — hoop connect already
authenticated you.5
Use it
Restart your MCP client. The first tool call starts the MCP server on your
machine; hoop stops it when you end the session. Nothing runs until you
actually use the connection.
Each user gets their own MCP server process. Two people on the same
connection never share state, and neither sees the other’s files.
Configuring the upstream credential
Everything above is how you reach hoop. This is how hoop reaches the MCP server, and it is an admin task done once per connection.Static token
The provider issues a long-lived key — a Stripe secret key, a GitHub PAT, a Datadog API key — and hoop sends it on every request.1
Create the connection
Resources → New → MCP Gateway. Name the role.
2
Pick the server
Choose it from the MCP Server dropdown. Hoop fills in the endpoint and
transport, then shows one token field labelled with the header that
provider expects.
3
Paste the key
Paste the credential. Select Secrets Manager as the source to have
hoop fetch it from AWS Secrets Manager or HashiCorp Vault at connection
time instead of storing it.
4
Set a tool policy
Deny destructive tools or hold them for review before you hand the
connection out. Tool-level control is the reason to route MCP through a
gateway.
OAuth
Use this when the server implements the MCP authorization profile: RFC 9728 discovery, RFC 7591 dynamic client registration, and PKCE.1
Choose the server and click Authorize with MCP
Hoop discovers the provider’s authorization server, registers itself as a
client, and opens the provider’s login in a browser.
2
Complete the login
Approve the scopes the provider asks for. Hoop writes the resulting token
into the connection’s
Authorization header.3
If the provider has no dynamic registration
Register hoop manually with the provider, then supply the Client ID and
Client Secret in the form. Whitelist this redirect URI:
Hoop brokers the OAuth flow and freezes the resulting token onto the
connection. Token refresh and per-user grants are not yet wired, so a
connection whose token expires needs re-authorizing. The agent refuses
MCP_AUTH=oauth at runtime rather than running an unauthenticated backend
silently.No authentication
Some servers need none. Leave the authorization panel empty and save. Astdio or client-stdio server usually falls here: it authenticates through
its own environment, not an HTTP header.
For a stdio server, secrets go in Headers and hoop turns them into
environment variables in the child process rather than HTTP headers.
Troubleshooting
See also
MCP Gateway
What the gateway inspects and how to choose a transport.
MCP Server Catalog
Every server hoop can proxy and how each one authenticates.