How setup works
MCP connections have two layers:- An admin adds the MCP server under Settings → Integrations and chooses how it authenticates.
- Each user connects their own account under Settings → Connections.
Choose an authentication method
Add a server
Open Integrations
Describe the server
Choose authentication
Create the server
Configure OAuth
Metal uses the OAuth authorization code flow with PKCE. Each user authorizes their own provider account. After entering the server URL, Metal attempts server discovery automatically. You can also click Discover Server. Discovery looks for the provider’s authorization endpoint, token endpoint, and Dynamic Client Registration endpoint. It may also show tools, resources, and prompts when the server exposes them without authentication. Discovery can succeed even when capabilities remain empty because many servers require authentication before returning their capabilities.Dynamic Client Registration
Use Dynamic Client Registration (DCR) when discovery reports Dynamic Registration as supported. Metal registers an OAuth client with the provider for your organization, so you do not need to enter a client ID or secret. The provider’s authorization server must accept Metal’s registration request and callback URL. If it restricts permitted redirect URIs or OAuth clients, its administrator must allow Metal before users can connect.Statically configured OAuth client
Use a static OAuth client when the provider does not support DCR or requires clients to be registered in advance.Register Metal with the provider
Enter the OAuth endpoints
Enter the client credentials
Keep dynamic registration off
OAuth client type
Use the OAuth Client Type field to choose how Metal authenticates its OAuth client to the provider’s token endpoint. The field appears only for OAuth servers. API Key and None servers have no client type.token_endpoint_auth_method when it registers the client. If the provider responds with a method Metal cannot use, Metal keeps the method it requested. For statically configured clients, Metal uses the stored method when it exchanges and refreshes tokens. A client saved before this field existed keeps body placement until you change the client type.
OAuth scopes
Use the OAuth Scopes field to declare which scopes Metal requests when a user connects. The field appears for every OAuth server, whether or not the provider supports DCR.- Enter one or more scopes separated by spaces, for example
all-apis offline_access. - Include
offline_accesswhen the provider requires it to issue a refresh token. Without a refresh token, connections break as soon as the access token expires. - Leave the field blank only if the provider grants a working default scope set on its own. Some providers, including Databricks, reject an authorization request that carries no scope.
- The value is always sent for OAuth servers. Clearing the field clears the stored scopes.
- Individual scopes cannot contain whitespace. Metal joins the entries with a single space when it calls the authorization endpoint.
scopes_supported) when the provider publishes them. Set the field explicitly whenever you know which scopes the provider expects.
Connect your account
After an admin adds the server:- Go to Settings → Connections.
- Find the MCP server and click Connect.
- Complete the provider sign-in, paste your API key, or confirm the unauthenticated connection, depending on the method the admin selected.
Permissions and ownership
Only admins can add, configure, or remove an external MCP server for the organization. After the server is added, organization members manage their own connection under Settings → Connections. The server URL, authentication method, and static OAuth client configuration are organization-wide. OAuth tokens and API keys are per-user credentials. A user can disconnect or retry their own connection without changing the shared server configuration or another user’s connection.Troubleshooting
Server discovery did not find OAuth settings
Server discovery did not find OAuth settings
OAuth client not configured
OAuth client not configured
The provider rejected Metal's redirect URI
The provider rejected Metal's redirect URI
https://api.metal.ai/v1/integrations/oauth/mcp/callback to the OAuth
application’s allowed redirect URIs. The value must match exactly.Dynamic client registration failed
Dynamic client registration failed
Token exchange failed
Token exchange failed
Token exchange failed (invalid_client). invalid_client usually
means the OAuth Client Type does not match how the provider expects the
client to authenticate, or the client secret is wrong. Open the server in
Settings → Integrations, select the method the provider supports, and
have the user retry the connection.The provider returned invalid_scope or access_denied
The provider returned invalid_scope or access_denied
invalid_scope means the authorization request asked for a scope the
provider does not recognize, or asked for none at all when the provider
requires an explicit list. access_denied means the provider or the user
refused the request. Open the server in Settings → Integrations, adjust
the OAuth Scopes field to match what the provider expects, and have the
user retry the connection.Connections stop working after a short time
Connections stop working after a short time
offline_access (or the
provider’s equivalent refresh scope) to OAuth Scopes and reconnect.A user needs to reconnect
A user needs to reconnect

