SkaleData Docs

Connect other MCP clients with an API key

Connect Claude Code or another MCP client to the SkaleData MCP gateway with an org-wide API key, and what changes when the client acts as a key instead of a person.

Any MCP client that can send an HTTP header can connect to the SkaleData MCP gateway with an organization API key. Use this for Claude Code, scripts, and other clients that can't sign in to SkaleData as a person.

To connect Claude chat on claude.ai, sign in as yourself instead: see Connect Claude chat to SkaleData.

Before you begin

  • An org admin has turned on MCP data egress for your organization. While it's off, the gateway refuses every tool call. Read What data leaves your cloud first.
  • You have an org-wide API key with the full scope. An org admin creates one in the SkaleData console, under Organization > API Keys. See API keys.
  • For Superset tools, the app runs the MCP server. Someone with the operator role or higher turns on Run the MCP server in the app's Resources tab.

Connect a client

The gateway uses the streamable HTTP transport at this URL:

https://mcp.skaledata.run/mcp

Send the key on every request as a bearer token:

Authorization: Bearer sdk_...

For example, to add the gateway to Claude Code, with the key in the SKALEDATA_API_KEY environment variable:

claude mcp add --transport http skaledata https://mcp.skaledata.run/mcp \
  --header "Authorization: Bearer $SKALEDATA_API_KEY"

Other clients take the same URL and header in their own configuration.

Which keys work

KeyResult
Org-wide key with the full scopeWorks.
Org-wide key with narrower scopesConnects, but every tool call is refused, because the gateway needs the full scope to check your organization's MCP data egress setting.
Workspace API keyRefused with 403. Workspace keys can't use the gateway.
Revoked, expired, or unknown keyRefused with 401. A key you revoke fails from its next tool call.

How a key differs from signing in as a person

An API key isn't a person, so the gateway treats it as a shared service identity:

  • One identity for every key. In an app such as Superset, every API-key call runs as the same SkaleData service user, api-key@skaledata.run. Charts and dashboards that a key creates belong to that service user, not to the person who ran the client.
  • No saved queries. superset_save_sql_query refuses API keys, because a saved query is visible only to the user who saves it, so a query saved as the service user would be hidden from you. To save a query, use superset_open_sql_lab_with_context to open the query in SQL Lab, and then save it yourself.
  • No Airflow tools. Airflow tools refuse API keys, because Airflow applies a person's role for the app, and a key isn't a person. To use them, connect Claude chat with your SkaleData account.
  • No Airbyte tools. Airbyte tools refuse API keys. Airbyte records every change as one built-in user, so SkaleData's audit record is the only record of who made a change, and it must name a person. To use them, connect Claude chat with your SkaleData account.
  • The audit log names the key. SkaleData records each change that a key makes with the key's ID, not a person's email address. See What the audit log records.

Everything else works as it does for a signed-in person: your organization's MCP data egress setting, each app's MCP and raw SQL settings, and the audit record before every change all apply.

On this page