Connect the APIVerve MCP server to your client

One URL, one credential, and a config block in the right file. The setup takes minutes; knowing how to prove it worked, and what each failure looks like, is the part that saves you an afternoon.

The APIVerve MCP server is hosted. There is no package to install or keep current: you point a client at one URL, give it a credential, and the client receives a tool for every endpoint in the catalog. New endpoints appear as tools the day they ship, because the server builds its tool list from the same catalog the REST API runs on.

https://api.apiverve.com/v1/mcp

The decisions you actually have to make are small but they matter: which transport your client speaks, how it authenticates, and where the config lives. Get those right and the rest is copy and paste.

Two decisions before you paste anything

Transport: hosted HTTP or the stdio bridge

Most current clients can talk to a remote MCP server over Streamable HTTP, and that is the default here. Some clients, or some versions of them, can only launch a local process and talk to it over stdio. For those, APIVerve publishes an official Docker image, apiverve/mcp, that speaks stdio to the client and forwards every request to the hosted endpoint. Because it is only a bridge, there is still nothing to update locally when the catalog changes.

Use the hosted endpoint whenever your client supports it. The bridge adds a dependency on Docker being installed and running, and a container start on every session.

Authentication: OAuth or a key in the config

The server negotiates rather than making you choose up front.

  • OAuth is the default. Connect with no credentials and the server answers 401 with a WWW-Authenticate header pointing at its protected-resource metadata. A client that supports MCP authorization runs the sign-in flow, you approve it in a browser, and no key is ever written to a file. This is the right choice for a config you commit or a machine you share.
  • A key in the x-api-key header is simpler to automate and is what headless setups and CI use. The cost is that a credential now sits in a file on disk. If you go this way, put a sub-key there, never your primary key. Lesson 4 explains why in detail.

Either way, the credential is checked against your account on every call, so rotating or revoking a key takes effect immediately, even against an OAuth token issued earlier.

You can see the negotiation for yourself. An unauthenticated request gets the challenge a client needs to start OAuth:

curl -si -X POST https://api.apiverve.com/v1/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
# HTTP/1.1 401 Unauthorized
# WWW-Authenticate: Bearer resource_metadata="https://api.apiverve.com/.well-known/oauth-protected-resource"
Check yourself

You are adding the APIVerve server to a .vscode/mcp.json that the whole team commits to the repository. Which authentication approach fits best?

Answer the check above to continue.

Run every example on your own key. Free plan, no card.

Scaling up?

Volume pricing, custom SLAs, and dedicated support for high-traffic teams.

Contact sales