/ Directory / Playground / Klavis
● Community Klavis-AI 🔑 Needs your key

Klavis

by Klavis-AI · Klavis-AI/klavis

Managed MCP integration platform — one auth, one gateway, 50+ MCP servers for apps like Slack, Salesforce, GCal.

Klavis hosts production-ready MCP servers with OAuth and multi-tenant auth handled for you. Instead of installing 20 MCPs locally and juggling 20 tokens, you get one gateway URL. Useful when deploying agents to end users — they click "Connect Slack" and Klavis owns the OAuth dance.

Why use it

Key features

Live Demo

What it looks like in practice

klavis.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "klavis": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.klavis.ai/mcp/{server}?auth_token=YOUR_TOKEN"
      ]
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "klavis": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.klavis.ai/mcp/{server}?auth_token=YOUR_TOKEN"
      ]
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "klavis": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.klavis.ai/mcp/{server}?auth_token=YOUR_TOKEN"
      ]
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "klavis": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.klavis.ai/mcp/{server}?auth_token=YOUR_TOKEN"
      ]
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "klavis",
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.klavis.ai/mcp/{server}?auth_token=YOUR_TOKEN"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "klavis": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "mcp-remote",
          "https://api.klavis.ai/mcp/{server}?auth_token=YOUR_TOKEN"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add klavis -- npx -y mcp-remote https://api.klavis.ai/mcp/{server}?auth_token=YOUR_TOKEN

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use Klavis

Ship an agent that touches 5 SaaS tools without 5 auth flows

👤 Product builders embedding Claude into their app ⏱ ~45 min intermediate

When to use: Your users want Claude to read Gmail, update HubSpot, comment on Jira — and you don't want to write OAuth glue for each.

Prerequisites
  • Klavis account + API key — Sign up at klavis.ai and grab the key from dashboard
  • Selected servers enabled — Toggle Gmail, HubSpot, Jira on in the Klavis UI
Flow
  1. Wire the gateway
    Add Klavis as an MCP server with my token. List which tools are now available.✓ Copied
    → Tool list mentions Gmail, HubSpot, Jira endpoints
  2. End-user connect
    Generate the Connect-Gmail URL for user_id=xyz. When they return, confirm auth succeeded.✓ Copied
    → OAuth URL returned; post-callback shows connected:true
  3. Cross-app action
    For the latest Gmail from acme.com, create a HubSpot contact and a Jira ticket summarizing the thread.✓ Copied
    → All three APIs hit in one flow with audit trail

Outcome: A working multi-SaaS agent with user-scoped auth and one config URL.

Pitfalls
  • User tokens expire silently — Subscribe to the auth_expired webhook and prompt the user to reconnect
Combine with: gmail · slack

Internal ops bot — file tickets, update CRM, post to Slack from one chat

👤 Internal tools teams ⏱ ~30 min intermediate

When to use: You want one Claude chat that can "do the paperwork" across your SaaS stack.

Prerequisites
  • Admin OAuths all apps once — Connect each app from the team account, not per-user
Flow
  1. Connect stack
    Add Klavis. Confirm Salesforce, Jira, Slack are all connected.✓ Copied
    → All three show connected status
  2. Triage email
    For the customer complaint in the last Slack #support message: create a Salesforce case, a Jira bug, and reply-in-thread with the ticket links.✓ Copied
    → Case + bug created; Slack reply links them

Outcome: Cross-tool action completed in one chat with receipts in each system.

Pitfalls
  • Rate limits on Slack — Klavis dashboard shows per-app quota; batch operations when possible
Combine with: slack · linear

Combinations

Pair with other MCPs for X10 leverage

klavis + gmail

Local Gmail MCP for personal, Klavis for multi-user

Use my local Gmail MCP for me, Klavis for customer data.✓ Copied
klavis + slack

Post status updates from ops flows

After creating the Salesforce case, post a summary in #customers via Klavis.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
list_connected_apps user_id?: str Check which apps a given user has connected free
get_auth_url app: str, user_id: str Kick off user OAuth flow free
proxy_tool_call app, tool, args, user_id Any downstream tool call — Klavis routes it varies by app

Cost & Limits

What this costs to run

API quota
Free tier: 1k calls/mo. Pro: 100k/mo.
Tokens per call
100–2000 depending on app
Monetary
Freemium + usage-based
Tip
Audit which apps drive the bulk of calls and set per-app quotas in the dashboard

Security

Permissions, secrets, blast radius

Minimum scopes: read (per app) write-scoped (per app)
Credential storage: Klavis holds OAuth tokens; encrypted at rest
Data egress: api.klavis.ai + each downstream SaaS
Never grant: admin scopes unless truly needed

Troubleshooting

Common errors and fixes

401 from proxy_tool_call

User's OAuth expired — call get_auth_url again and have them reconnect

Verify: Call list_connected_apps, check status==connected
Server "notion" not in gateway

Enable it in the Klavis dashboard first, then restart the MCP client to pick up new tools

Rate limit on a single app

Klavis returns 429 with retry_after; back off or batch

Alternatives

Klavis vs others

AlternativeWhen to use it insteadTradeoff
Composio MCPYou want a similar hosted-integration platform with different pricingDifferent app coverage; similar auth model
Self-hosted individual MCPsSingle user, few apps, compliance-sensitiveYou own the OAuth glue for every app

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills