Two different things need credentials: the AI client calling your MCP server, and your API, which SourceMCP calls on the client's behalf. They never mix: what a client sends to SourceMCP is never forwarded to your API.
An API key (mcpk_live_…) belongs to one server. Create keys on the server's API keys tab, up to
10 active at a time. A key is shown once, when it's created; SourceMCP keeps
only a hash, so a lost key can't be recovered: revoke it and create another.
Clients send it as Authorization: Bearer mcpk_live_…. Keys in query strings are refused.
Use API keys for clients configured from a file (Cursor, VS Code, Claude Code, mcp-remote), for shared
machines, and anywhere you want to revoke one client's access without affecting the others.
With OAuth, the client opens a browser window, you sign in with your SourceMCP account and approve access, and the client gets a short-lived token for that one MCP URL. Only the account that owns a server can connect to it this way.
Use OAuth where there's no header field (Claude's custom connectors, ChatGPT), or when you'd rather not handle keys at all.
| API key | OAuth | |
|---|---|---|
| Set up by | Pasting a key into config | Signing in from the client |
| Works in | Cursor, Claude Code, VS Code, mcp-remote | All of those, plus Claude and ChatGPT |
| Revoke by | Revoking the key | Signing out or removing the connector |
SourceMCP calls your API with credentials you give it per server. They are encrypted at rest, used only for calls to that server's base URL, and write-only: after saving, the dashboard shows only header names and a masked hint, and no API returns them.
Authorization: Bearer … or X-API-Key: ….Some APIs have no static key, only a login endpoint that returns an access token (often with a refresh token). SourceMCP finds that endpoint in the spec and offers Sign in to the API:
With a refresh token, SourceMCP renews the session before it expires. Without one, the server stops working when the access token expires, and the dashboard asks you to Sign in again. Endpoints that need no authentication, such as a health check, keep working either way.