Connect an MCP client

How to point any MCP-compatible client at the SnapLogic MCP Server and authenticate using HTTP Basic.

The SnapLogic MCP Server uses the MCP Streamable HTTP transport. Point your client at your region's Tectonic host and the path that matches your use case (/mcp, /mcp/platform, or /mcp/pygen), then add a standard Authorization header. For the full tool catalogue, base URLs, and troubleshooting, see SnapLogic MCP Server tools.

Authentication

All MCP API requests must include an Authorization header. Use HTTP Basic with your SnapLogic login credentials:

Authorization: Basic base64(user:password)

An MCP client config is long-lived. HTTP Basic does not expire, which makes it the reliable default for a persistent client configuration.

Important: HTTP Basic requires HTTPS (all SnapLogic hosts use HTTPS) and is unavailable for MFA-enabled accounts or orgs that have disabled Basic auth. Contact your org administrator if Basic auth is not available for your account.

Client configurations

Claude Code (CLI)

claude mcp add --transport http platform-mcp \
  https://cdn.elastic.snaplogic.com/api/1/rest/public/platform_mcp/mcp/platform \
  --header "Authorization: Basic $(printf '%s' 'USER:PASSWORD' | base64)" \
  --scope project

Claude Code (.mcp.json, project-scoped)

{
  "mcpServers": {
    "platform-mcp": {
      "type": "http",
      "url": "https://cdn.elastic.snaplogic.com/api/1/rest/public/platform_mcp/mcp",
      "headers": { "Authorization": "Basic BASE64_OF_USER_COLON_PASSWORD" }
    }
  }
}

Claude Desktop

Use the same JSON entry as above in claude_desktop_config.json (type: http with a headers object). No mcp-remote shim is needed for a header-authenticated HTTP server.

Python MCP SDK

import base64
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
    url = "https://cdn.elastic.snaplogic.com/api/1/rest/public/platform_mcp/mcp/platform"
    headers = {"Authorization": "Basic " + base64.b64encode(b"USER:PASSWORD").decode()}
    async with streamablehttp_client(url, headers=headers) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print(len(tools.tools), "tools")
Note: Use cdn.elastic.snaplogic.com for US tenants and cdn.emea.snaplogic.com for EU. Swap /mcp/platform for /mcp/pygen or /mcp as needed.