/ Annuaire / Playground / jetski
● Communauté hyprmcp ⚡ Instantané

jetski

par 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.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

jetski.replay ▶ prêt
0/0

Installer

Choisissez votre 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
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

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

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

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

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

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

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

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

Continue utilise un tableau d'objets serveur plutôt qu'une map.

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

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add jetski -- npx -y jetski

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : jetski

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

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

Quand l'utiliser : Your MCP works great locally but the upstream has no auth; you need identity before exposing it.

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

Résultat : An authenticated, per-user MCP without touching upstream code.

Pièges
  • 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
Combiner avec : agent · proxy-2

See exactly which prompts trigger which tools

👤 MCP authors and prompt engineers ⏱ ~30 min intermediate

Quand l'utiliser : Users report 'it's not working' and you have no visibility into what they're saying.

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

Résultat : Data-driven improvements to your tool surface.

Onboard a teammate in one click

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

Quand l'utiliser : You've set up a gateway and don't want to write setup docs.

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

Résultat : Zero-doc onboarding.

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

jetski + agent

1mcp/agent aggregates; Jetski adds analytics on top

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

Build with Vurb, operate behind Jetski

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

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
(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

Coût et limites

Coût d'exécution

Quota d'API
None — passes through
Tokens par appel
Minimal gateway overhead
Monétaire
Free, open source
Astuce
Run Postgres on a small shared instance; logs and analytics are the main storage cost.

Sécurité

Permissions, secrets, portée

Portées minimales : OAuth configuration at your IdP
Stockage des identifiants : Env-driven; Postgres holds sessions + client registrations
Sortie de données : Upstream MCP calls; OIDC to your configured IdP
Ne jamais accorder : Admin scope to end users

Dépannage

Erreurs courantes et correctifs

OIDC issuer mismatch

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

Vérifier : 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.

Vérifier : Make a test tool call and refresh
PG connection errors

Verify DATABASE_URL env and network policy allow gateway → PG.

Vérifier : kubectl exec into gateway pod and psql the URL

Alternatives

jetski vs autres

AlternativeQuand l'utiliserCompromis
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

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills