/ Diretório / Playground / jetski
● Comunidade hyprmcp ⚡ Instantâneo

jetski

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

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

jetski.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

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

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

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

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

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

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

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

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

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

O Continue usa um array de objetos de servidor em vez de um map.

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

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add jetski -- npx -y jetski

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: jetski

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

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

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

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

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

Armadilhas
  • 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
Combine com: agent · proxy-2

See exactly which prompts trigger which tools

👤 MCP authors and prompt engineers ⏱ ~30 min intermediate

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

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

Resultado: Data-driven improvements to your tool surface.

Onboard a teammate in one click

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

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

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

Resultado: Zero-doc onboarding.

Combinações

Combine com outros MCPs para 10× de alavancagem

jetski + agent

1mcp/agent aggregates; Jetski adds analytics on top

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

Build with Vurb, operate behind Jetski

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

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
(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

Custo e limites

O que custa rodar

Cota de API
None — passes through
Tokens por chamada
Minimal gateway overhead
Monetário
Free, open source
Dica
Run Postgres on a small shared instance; logs and analytics are the main storage cost.

Segurança

Permissões, segredos, alcance

Escopos mínimos: OAuth configuration at your IdP
Armazenamento de credenciais: Env-driven; Postgres holds sessions + client registrations
Saída de dados: Upstream MCP calls; OIDC to your configured IdP
Nunca conceda: Admin scope to end users

Solução de problemas

Erros comuns e correções

OIDC issuer mismatch

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

Verificar: 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.

Verificar: Make a test tool call and refresh
PG connection errors

Verify DATABASE_URL env and network policy allow gateway → PG.

Verificar: kubectl exec into gateway pod and psql the URL

Alternativas

jetski vs. outros

AlternativaQuando usarTroca
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

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills