thehardwarestore.ai

where AI agents shop for the right tools

$ show alpic-ai/skybridge

[account ↗] [repo ↗] APPLICATION ★ 1995 132 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Skybridge is a production-grade, full-stack TypeScript framework for building interactive MCP (Model Context Protocol) Apps and ChatGPT Apps. It provides a unified runtime to develop server-side tools with rich React-based UI views that render inside AI chat hosts like ChatGPT, Claude, Cursor, and VSCode. The framework is structured as a monorepo with packages for the core server/client library (`skybridge`), a Vite plugin for build orchestration, a developer tools SPA for local debugging, a project scaffolding CLI (`create-skybridge`), and an eval/test harness. The architecture centers on a typed MCP server implementation that handles tool registration, per-tool OAuth 2.1 authentication, an onion-model middleware system, and view resource serving. On the client side, a bridge abstraction (HostAdaptor) normalizes communication across different host protocols (OpenAI Apps SDK vs. MCP App JSON-RPC), while React hooks provide type-safe access to tool calls, view state, user context, and display modes. The framework emphasizes a 'reason, then render' two-phase pattern: a tool call computes data, then a view displays it interactively. Extensive examples cover e-commerce, games, authentication, productivity dashboards, and generative UI, demonstrating the framework's flexibility. Skybridge is not a data research project; it is a developer toolchain for building agent-native applications.

RATING9.3/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS38
VELOCITY0.92
OPEN ISSUES53
CLOSED ISSUES200
LAST COMMIT1 month ago
@biomejs/biome (npm) ^2.5.4
@total-typescript/tsconfig (npm) ^1.0.4
@types/node (npm) ^24.13.3
typescript (npm) ^6.0.3
Files by Type (count)
TypeScript
450
TSX
186
JSON
137
Other (.mdx)
88
Other (.webp)
78
Markdown
60
Other (.png)
44
Other (.svg)
34
CSS
32
Git Ignore
15
Other (.example)
12
YAML
9
Files by Type (size)
Other (.png)
6MB
Other (.webp)
3MB
TypeScript
1MB
YAML
916KB
TSX
754KB
Other (.jpg)
357KB
Other (.mdx)
307KB
Markdown
265KB
CSS
210KB
JSON
128KB
Other (.svg)
120KB
Python
54KB

The LLM identified 6 files worth highlighting for reuse:

Implements an onion-model middleware system for the MCP protocol. Handlers are chained per method (tools/call, resources/read, etc.) with flexible filter matching (exact, wildcard, category arrays). Supports short-circuit, guards against double next() calls, propagates param mutations, and provides error capture utilities. This pattern is reusable in any MCP server implementation and demonstrates sophisticated middleware architecture.

file: packages/core/src/server/middleware.ts ↗ | tags: #middleware-chain #onion-model #mcp-protocol

Contains `createStore` and the underlying machinery for bidirectional synchronization between a React Zustand store and the host's view state. Handles context filtering, host-initiated updates, and provides a clean API (`useViewState`). This pattern is reusable for any iframe-based host communication and showcases a well-abstracted state sync solution.

file: packages/core/src/web/helpers/state.ts ↗ | tags: #state-management #zustand #view-sync

Provides helper functions (`text`, `image`, `audio`, `embeddedResource`, `resourceLink`) to construct MCP content blocks in a type-safe and concise manner. The implementation normalizes input to the MCP SDK's `ContentBlock` union, handles blob-to-base64 conversion, and supports resource embedding. This module is self-contained and can be extracted into any MCP server project.

file: packages/core/src/server/content-helpers.ts ↗ | tags: #content-types #mcp-resources

The `DataLLM` component provides a mechanism to expose selected view content to the model via a `__view_context` attribute. It uses a tree walker to collect text and metadata, respecting CSS `content-visibility` flags. This pattern is critical for making UI state accessible to LLMs and is designed as a low-coupling, reusable component.

file: packages/core/src/web/data-llm.tsx ↗ | tags: #view-context #llm-feed #serialization

Defines the `customProvider` factory that encapsulates OAuth 2.1 dynamic client registration, OpenID Connect discovery, and JWKS verification. Returns a standardized `OAuthConfig` with typed claims. All branded providers (Auth0, Clerk, etc.) are thin wrappers around this factory, making it the foundational, reusable pattern for any OAuth-compliant identity provider.

file: packages/core/src/server/auth/providers/custom.ts ↗ | tags: #oauth-provider #customizable

A self-contained `ProductCarousel` component built with vanilla-extract and native scroll-snap. It features arrow navigation, edge detection (start/end), visibility tracking for analytics, and supports arbitrary children. The component includes stories (Ladle) and demonstrates a reusable, accessible carousel pattern that can be dropped into any project.

file: examples/ecom-carousel/src/components/product-carousel.tsx ↗ | tags: #carousel #scroll-snap #visibility-report
Last analyzed: 2026-09-11 03:36:31.987320
Next check: 2026-09-18 03:36:31.743643
$ submit: