ConversoKit

mcp
Security Audit
Warn
Health Warn
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 6 GitHub stars
Code Warn
  • process.env — Environment variable access in apps/mcp-server/src/index.ts
  • process.env — Environment variable access in apps/mcp-server/src/routes/admin.ts
  • process.env — Environment variable access in apps/mcp-server/src/routes/auth.ts
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Build Apps for ChatGPT. ConversoKit is the open-source framework for production-ready ChatGPT Apps. Compose 19 themed widgets, 16 MCP tools, and 5 templates, and ship in under 30 minutes.

README.md

ConversoKit :: Build Apps for ChatGPT

ConversoKit is the open-source framework for production-ready ChatGPT Apps. Compose 19 themed widgets, 16 MCP tools, and 5 templates, and ship in under 30 minutes.

Latest: v0.1.1 — see CHANGELOG.md.

Build production applications using the OpenAI Apps SDK and MCP.

Includes:

  • Reusable widgets
  • Commerce flows
  • Booking flows
  • Lead generation
  • Templates
  • Integrations
  • MCP server starter
  • React widget system

Quick start

npx conversokit create my-app --template commerce
cd my-app
pnpm install
pnpm dev

Templates: commerce, booking, saas-onboarding, travel, dashboard.

Two services start in parallel:

Or fork the repo

git clone https://github.com/Xyborg/ConversoKit
cd ConversoKit
pnpm install
pnpm dev

The dev demo cycles through Commerce / Booking / Lead Gen / Travel / Dashboard tabs. Switch between 7 themes from the header.

Architecture

Data flow

ChatGPT and compatible MCP Apps hosts connect to /mcp using Streamable HTTP. The show_app tool opens a registered HTML widget; the widget initializes MCP Apps and calls business tools through the host. Standalone local previews retain REST support.

flowchart LR
    Host["ChatGPT / MCP Apps host"] <-->|"JSON-RPC /mcp"| MCP["@conversokit/mcp"]
    Widgets["React widget"] <-->|"MCP Apps bridge"| Host
    MCP --> Tools["defineTool + Zod + permission checks"]
    Tools --> Integrations["Stores and integrations"]

Package graph

The 9 publishable packages compose around @conversokit/shared (schemas/types). Templates pull widgets + integrations; widgets pull themes; auth and the CLI stand alone.

flowchart TD
    shared["@conversokit/shared"]
    themes["@conversokit/themes"]
    bridge["@conversokit/bridge"]
    auth["@conversokit/auth"]
    widgets["@conversokit/widgets"]
    integrations["@conversokit/integrations"]
    templates["@conversokit/templates"]
    cli["conversokit (CLI)"]

    mcp["@conversokit/mcp"] --> shared
    bridge --> shared
    widgets --> shared
    widgets --> themes
    integrations --> shared
    templates --> shared
    templates --> widgets
    templates --> integrations

Request lifecycle

The host initializes MCP, discovers tools, calls show_app, and reads its HTML resource. The iframe completes ui/initialize before calling tools. Data tools return structuredContent plus model-readable text. See MCP basics and Connect to ChatGPT / Claude.

Repo structure

ConversoKit/
├── apps/
│   ├── mcp-server/      # Streamable HTTP MCP server (16 business tools + show_app, /health, /auth/:provider/*)
│   └── widget-ui/       # Vite + React widget host
├── packages/
│   ├── widgets/         # 19 reusable React widgets (CSS-vars themed)
│   ├── bridge/          # window.openai + fetch fallback
│   ├── templates/       # commerce / booking / saas-onboarding / travel / dashboard
│   ├── integrations/    # Payments: Stripe (real) + Mock
│   │                    # CRM: HubSpot (real) + Mock
│   │                    # Email: Resend (real) + Cloudflare Email (real) + Mock
│   │                    # Stores: Supabase (real) + InMemory
│   ├── auth/            # API key, JWT (HS256/JWKS via jose), anonymous,
│   │                    # OAuth (Google, GitHub, Microsoft, Auth0),
│   │                    # JWT-verify (Clerk JWKS, Supabase Auth)
│   ├── themes/          # 7 themes + ThemeProvider
│   ├── shared/          # Zod schemas, tool/widget contracts, mocks, compliance types
│   └── cli/             # `npx conversokit create | add | deploy`
├── examples/            # Per-template runnable references + roadmap stubs
├── docs/                # Setup, deployment, MCP basics, widget authoring,
│                        # integrations, compliance, app-review checklist
└── scripts/

Packages

Each package ships standalone on npm — install only what you need.

Package npm Purpose
@conversokit/shared npm Zod schemas, tool/widget contracts, mocks
@conversokit/themes npm 7 themes + <ThemeProvider>
@conversokit/widgets npm 19 React widgets
@conversokit/bridge npm MCP Apps handshake + local REST fallback
@conversokit/mcp Next release Streamable HTTP tools + widget resources
@conversokit/auth npm API key, JWT, OAuth providers, Express middleware
@conversokit/integrations npm Stripe, HubSpot, Resend, Supabase
@conversokit/templates npm App scaffolds (commerce, booking, …)
conversokit npm npx conversokit create / add / deploy

Scripts

Command What it does
pnpm dev Run all apps in parallel (turbo)
pnpm build Build every package + app
pnpm typecheck Type-check every package
pnpm test Vitest smoke tests
pnpm lint ESLint over every package

Filter to a single workspace:

pnpm --filter mcp-server dev
pnpm --filter widget-ui dev
pnpm --filter @conversokit/widgets dev

Adding things

  • MCP tool → new file in apps/mcp-server/src/tools/, append to the tools array in tools/index.ts. Tool shape: defineTool({ name, description, inputSchema, outputSchema, permissions, handler }).
  • Widget → new component in packages/widgets/src/, export <Name>Meta + register in registry.ts.
  • Template → new factory in packages/templates/src/, exported from index.ts. Tools and widgets are referenced by name.
  • Integration → new file in packages/integrations/src/ exporting an interface + a real impl + a mock fallback.

Deploy

npx conversokit deploy vercel    # writes vercel.json + api/mcp.ts
npx conversokit deploy docker    # writes Dockerfile + docker-compose.yml
npx conversokit deploy railway   # writes railway.json + Procfile

Re-run with --force to overwrite. Each command prints the next-step CLI commands for that target. See docs/deployment.md.

Documentation

Learn more

Requirements

  • Node.js ≥ 18
  • pnpm ≥ 8

License

Apache 2.0.

Reviews (0)

No results found