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#
| Setting | Value |
|---|---|
| MCP server URL | https://mcp.heymarvin.com/ |
| Token endpoint | POST https://app.heymarvin.com/api/v1/oauth/token |
| Grant type | client_credentials |
| Required scope | mcp:read |
Required resource param | https://mcp.heymarvin.com |
| Transport | JSON-RPC over Streamable HTTP |
| Token lifetime | 1 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.