Client configuration

Most MCP clients take a server URL and a headers block. Point yours at the Marvin server for your region and pass your access token as a Bearer header.

json
{
  "mcpServers": {
    "marvin": {
      "url": "https://mcp.heymarvin.com/",
      "headers": {
        "Authorization": "Bearer <ACCESS_TOKEN>"
      }
    }
  }
}

Get <ACCESS_TOKEN> by exchanging your API key with scope=mcp:read and the resource value matching the URL above.

Settings reference#

SettingValue
MCP server URLhttps://mcp.heymarvin.com/
Token endpointPOST https://app.heymarvin.com/api/v1/oauth/token
Grant typeclient_credentials
Required scopemcp:read
Required resource paramhttps://mcp.heymarvin.com
TransportJSON-RPC over Streamable HTTP
Token lifetime1 hour
Tokens expire after 1 hour

A token pasted into a static config file stops working after an hour. For anything long-running, generate the config from a script that exchanges a fresh token, or use a client that supports refreshing credentials. See Token lifecycle.

Verifying the connection#

Before debugging your client, confirm the credentials work on their own with a direct initialize call. If that succeeds and the client still fails, the problem is in the client config rather than the token.