CloudEagle

CloudEagle MCP — Setup Guide

Connect your AI assistant to your live SaaS management data

Ask questions about your SaaS portfolio — contracts, vendors, applications, users, and workflows — powered by your live CloudEagle data, directly inside any MCP-compatible AI assistant.

Things you can ask

1 Connect to your AI assistant

Select your AI assistant below. Each tab walks you through getting your API key and completing the OAuth connection.

  1. Register the server in Claude Code
    Run this command once in your terminal:
    claude mcp add --transport http cloudeagle https://mcp.cloudeagle.ai/mcp
  2. Sign in via the browser
    The first time you use a CloudEagle tool, a browser window opens automatically with the CloudEagle sign-in page. Enter your CloudEagle username and password, or click your company's SSO button (Google, Okta, Microsoft, etc.). Claude Code stores your session — you will not be asked again until the session expires.
  3. Verify the connection
    Type /mcp in Claude Code and confirm cloudeagle shows as connected. Then try: "List my CloudEagle applications."
Session expiry: Your session lasts 30 days. When it expires, re-run claude mcp add --transport http cloudeagle https://mcp.cloudeagle.ai/mcp — the browser sign-in page will open again.
  1. Add CloudEagle to the Claude Desktop config
    Open the configuration file for your platform:
    macOS~/Library/Application Support/Claude/claude_desktop_config.json
    Windows%APPDATA%\Claude\claude_desktop_config.json
    If the file does not exist, create it. Add the following:
    {
      "mcpServers": {
        "cloudeagle": {
          "type": "http",
          "url": "https://mcp.cloudeagle.ai/mcp"
        }
      }
    }
    Fully quit and reopen Claude Desktop.
  2. Sign in via the browser
    On first use, Claude Desktop opens a browser window with the CloudEagle sign-in page. Enter your CloudEagle username and password, or click your company's SSO button (Google, Okta, Microsoft, etc.). Your session is stored automatically.
  3. Verify the connection
    Open a new chat and type "What CloudEagle tools are available?"
Session expiry: Your session lasts 30 days. When it expires, remove and re-add the server in Claude Desktop settings — the browser sign-in page will open again.
  1. Add CloudEagle to the Cursor MCP config
    Open or create .cursor/mcp.json in your home directory (or project root):
    {
      "mcpServers": {
        "cloudeagle": {
          "url": "https://mcp.cloudeagle.ai/mcp"
        }
      }
    }
    Restart Cursor.
  2. Sign in via the browser
    On first use, Cursor opens a browser window with the CloudEagle sign-in page. Enter your CloudEagle username and password, or click your company's SSO button (Google, Okta, Microsoft, etc.). Your session is stored automatically.
  3. Verify the connection
    CloudEagle tools will be available in Cursor's AI assistant. Try: "List my CloudEagle applications."
Session expiry: Your session lasts 30 days. When it expires, remove and re-add the server in Cursor settings — the browser sign-in page will open again.
  1. Add CloudEagle in Windsurf Settings
    Open Windsurf Settings → MCP Servers → Add Server and fill in:
    TypeHTTP
    URLhttps://mcp.cloudeagle.ai/mcp
    Save and restart Windsurf.
  2. Sign in via the browser
    On first use, Windsurf opens a browser window with the CloudEagle sign-in page. Enter your CloudEagle username and password, or click your company's SSO button (Google, Okta, Microsoft, etc.). Your session is stored automatically.
  3. Verify the connection
    CloudEagle tools will be available in Windsurf's AI assistant. Try: "List my CloudEagle applications."
Session expiry: Your session lasts 30 days. When it expires, remove and re-add the server in Windsurf settings — the browser sign-in page will open again.

Automated agents (Claude API, LangChain, LangGraph, custom scripts) cannot open a browser for OAuth. Instead, pass a CloudEagle API key directly as a Bearer token — no OAuth dance required.

  1. Get your CloudEagle API key
    Log in to CloudEagle → click your name in the top-right → View ProfileGenerate API Key. Copy the key.
  2. Configure your agent
    Pass the key as Authorization: Bearer in the MCP client headers. Replace {tenant} with your CloudEagle tenant slug.

    Anthropic Python SDK (claude-sdk agents)

    import anthropic
    
    client = anthropic.Anthropic()
    response = client.beta.messages.create(
        model="claude-opus-4-5",
        max_tokens=4096,
        tools=[{"type": "mcp", "server_label": "cloudeagle",
                "server_url": "https://mcp.cloudeagle.ai/{tenant}",
                "headers": {"Authorization": "Bearer YOUR_API_KEY"}}],
        messages=[{"role": "user", "content": "List my SaaS applications."}],
        betas=["mcp-client-2025-04-04"],
    )

    Python MCP SDK

    from mcp.client.streamable_http import streamablehttp_client
    
    async with streamablehttp_client(
        "https://mcp.cloudeagle.ai/{tenant}",
        headers={"Authorization": "Bearer YOUR_API_KEY"}
    ) as (read, write, _):
        # tools are discovered automatically
        ...

    TypeScript / Node

    import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
    
    const transport = new StreamableHTTPClientTransport(
      new URL("https://mcp.cloudeagle.ai/{tenant}"),
      { requestInit: { headers: { "Authorization": "Bearer YOUR_API_KEY" } } }
    );

    Claude Code (agent mode, no browser)

    # ~/.claude/mcp.json
    {
      "mcpServers": {
        "cloudeagle": {
          "type": "http",
          "url": "https://mcp.cloudeagle.ai/{tenant}",
          "headers": { "Authorization": "Bearer YOUR_API_KEY" }
        }
      }
    }
Key expiry: API keys expire after 90 days. Update the key in your agent config when you generate a new one in CloudEagle.
  1. Get your CloudEagle API key
    Log in to CloudEagle → click your name in the top-right → View ProfileGenerate API Key. Copy the key.
  2. Connect using the MCP SDK
    Pass your API key as a Bearer token in the Authorization header:

    Python

    from mcp.client.streamable_http import streamablehttp_client
    
    async with streamablehttp_client(
        "https://mcp.cloudeagle.ai/mcp",
        headers={"Authorization": "Bearer YOUR_API_KEY"}
    ) as (read, write, _):
        # tools are discovered automatically
        ...

    TypeScript

    import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
    
    const transport = new StreamableHTTPClientTransport(
      new URL("https://mcp.cloudeagle.ai/mcp"),
      { requestInit: { headers: { "Authorization": "Bearer YOUR_API_KEY" } } }
    );
Replace YOUR_API_KEY with the key copied in step 1. Keys expire after 90 days — update this value when you generate a new one.

Available tools

Tool What it does
search_applicationsFind a SaaS application by name
search_vendorsFind a vendor by name
list_applicationsSee all applications in your tenant with full details
list_vendorsSee all vendors in your tenant with full details
list_workflowsSee your assigned workflows, or all workflows in the tenant
list_application_usersSee who has access to a specific application
list_vendor_contractsSee all contracts for a vendor
list_vendor_transactionsSee all transactions for a vendor

Example prompts

Finding applications & vendors

"Search for the Slack application"
"Show me all vendors that contain Amazon"
"List all applications in my tenant"

Contracts & spend

"Show me all contracts for Salesforce"
"What transactions does Workday have?"
"List contracts for AWS"

Users & access

"Who has access to Okta? Show me the first 20 users."
"How many provisioned users does Zoom have?"

Workflows

"What workflows are assigned to me?"
"Show me all open workflows in the tenant"

Troubleshooting

CloudEagle tools don't appear in my AI assistant
  • Make sure you fully quit and restarted the application after editing the config
  • Check the config file for typos — JSON must have no trailing commas
  • Confirm the URL is exactly https://mcp.cloudeagle.ai/mcp
  • For Claude Code: run /mcp to reconnect; re-run claude mcp add --transport http cloudeagle https://mcp.cloudeagle.ai/mcp if needed
The browser authorisation form doesn't open
  • Try using a CloudEagle tool (e.g. ask your assistant to list applications) — this triggers the OAuth flow
  • Ensure your browser is not blocking pop-ups from mcp.cloudeagle.ai
  • For Claude Code: re-run claude mcp add --transport http cloudeagle https://mcp.cloudeagle.ai/mcp to reset the connection
"401 Unauthorized" or session expired errors
  • Your OAuth session has expired (30-day TTL) — remove and re-add the CloudEagle server in your AI assistant settings to trigger the browser sign-in page again
  • For Claude Code: re-run claude mcp add --transport http cloudeagle https://mcp.cloudeagle.ai/mcp
  • If you are using API key auth (AI Agents tab): check that the key has not expired and that MCP_API_KEY_AUTH=true is set on the server
API key auth returns 401 even with a valid key
  • Confirm the server was started with MCP_API_KEY_AUTH=true — this feature is off by default
  • Make sure the header is exactly Authorization: Bearer YOUR_API_KEY (not X-API-Key or another format)
  • Check that the key was generated in CloudEagle and has not expired (90-day TTL)
  • Verify the tenant slug in the URL is correct — API key auth still requires the correct /{tenant} path
Tools return errors or no data
  • Confirm you are connected to the internet and can reach CloudEagle
  • Contact your CloudEagle administrator to verify the MCP server is running

Security