/ Verzeichnis / Playground / jetski
● Community hyprmcp ⚡ Sofort

jetski

von hyprmcp · hyprmcp/jetski

Add OAuth, real-time logs, and prompt analytics to any MCP server without touching its code — auto-generated client onboarding included.

Jetski (hyprmcp) is an MCP gateway that sits in front of your MCP servers, adding OAuth 2.1 + DCR authentication, prompt/tool analytics, and real-time logs. Auto-generates setup instructions for Claude, Cursor, VS Code. Built in Go with a Postgres-backed Angular dashboard and Kubernetes orchestration.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

jetski.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "jetski": {
      "command": "npx",
      "args": [
        "-y",
        "jetski"
      ],
      "_inferred": true
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "jetski": {
      "command": "npx",
      "args": [
        "-y",
        "jetski"
      ],
      "_inferred": true
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "jetski": {
      "command": "npx",
      "args": [
        "-y",
        "jetski"
      ],
      "_inferred": true
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "jetski": {
      "command": "npx",
      "args": [
        "-y",
        "jetski"
      ],
      "_inferred": true
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "jetski",
      "command": "npx",
      "args": [
        "-y",
        "jetski"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "jetski": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "jetski"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add jetski -- npx -y jetski

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: jetski

Add OAuth to an MCP server that doesn't speak it

👤 Platform teams deploying MCPs to users beyond themselves ⏱ ~60 min advanced

Wann einsetzen: Your MCP works great locally but the upstream has no auth; you need identity before exposing it.

Voraussetzungen
  • Kubernetes cluster (or k3s/minikube for dev) — Jetski uses Metacontroller + CRDs
  • PostgreSQL — Any reachable PG; Jetski creates its schema
Ablauf
  1. Deploy Jetski
    Apply Jetski's Helm chart to my cluster; confirm all pods ready.✓ Kopiert
    → Gateway + dashboard live
  2. Register your MCP upstream
    Add my internal MCP at svc.internal:9000 behind Jetski with OAuth required.✓ Kopiert
    → Jetski URL returned
  3. Share onboarding link
    Give me the copy/paste Claude Desktop config for this gateway URL.✓ Kopiert
    → Working config snippet

Ergebnis: An authenticated, per-user MCP without touching upstream code.

Fallstricke
  • Dex OIDC misconfig leaves users in a redirect loop — Verify issuer URL matches what clients see externally (not internal cluster DNS)
  • DCR creates tons of orphan clients over time — Prune stale clients periodically; Dex supports TTL
Kombinieren mit: agent · proxy-2

See exactly which prompts trigger which tools

👤 MCP authors and prompt engineers ⏱ ~30 min intermediate

Wann einsetzen: Users report 'it's not working' and you have no visibility into what they're saying.

Ablauf
  1. Open analytics
    Show me today's top 10 prompts and the tool calls each triggered.✓ Kopiert
    → Prompt-to-tool breakdown
  2. Find the failure pattern
    Filter to tool calls that returned errors. What's the common prompt shape?✓ Kopiert
    → Error clusters
  3. Improve tool description
    Propose a tool-description tweak that would route ambiguous prompts to the right tool.✓ Kopiert
    → Concrete change

Ergebnis: Data-driven improvements to your tool surface.

Onboard a teammate in one click

👤 Team leads adding people to MCP tooling ⏱ ~10 min beginner

Wann einsetzen: You've set up a gateway and don't want to write setup docs.

Ablauf
  1. Generate onboarding
    Give teammate Alice a one-click onboarding URL for the gateway.✓ Kopiert
    → Shareable URL with per-client instructions
  2. Verify
    Confirm Alice shows up in today's analytics and her tokens are provisioned.✓ Kopiert
    → Alice visible, tools callable

Ergebnis: Zero-doc onboarding.

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

jetski + agent

1mcp/agent aggregates; Jetski adds analytics on top

Put 1mcp/agent behind Jetski so we get aggregation + OAuth + analytics in one stack.✓ Kopiert
jetski + vurb-ts

Build with Vurb, operate behind Jetski

Deploy my Vurb-built MCP behind Jetski for auth and observability without code changes.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
(gateway) All upstream MCP tools pass through with OAuth Any tool invocation through Jetski 1 upstream call
admin_register_upstream name, url, auth_required Adding a new upstream (admin-only) free

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
None — passes through
Tokens pro Aufruf
Minimal gateway overhead
Kosten in €
Free, open source
Tipp
Run Postgres on a small shared instance; logs and analytics are the main storage cost.

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: OAuth configuration at your IdP
Credential-Speicherung: Env-driven; Postgres holds sessions + client registrations
Datenabfluss: Upstream MCP calls; OIDC to your configured IdP
Niemals gewähren: Admin scope to end users

Fehlerbehebung

Häufige Fehler und Lösungen

OIDC issuer mismatch

Issuer URL in Dex must match what clients see externally, not internal cluster DNS.

Prüfen: curl /.well-known/openid-configuration from outside
Empty analytics dashboard

Ensure gateway is in front of at least one request; dashboard updates in near-real-time.

Prüfen: Make a test tool call and refresh
PG connection errors

Verify DATABASE_URL env and network policy allow gateway → PG.

Prüfen: kubectl exec into gateway pod and psql the URL

Alternativen

jetski vs. andere

AlternativeWann stattdessenKompromiss
1mcp/agentYou want OAuth + aggregation without K8sNo Postgres-backed analytics dashboard
tbxark/mcp-proxyMinimal; just aggregate, no authNo auth, no analytics
Build your own with Kong/EnvoyYou already have a service-mesh cultureSignificant custom work for MCP-specific routing

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen