Architecture

A single service, layered for extension

Skillberry Store is a Python service with a FastAPI backend, a React + PatternFly web UI, a CLI and Python SDK, and a plugin system — backed by pluggable vector search and Docker-sandboxed execution.

The stack

Backend

FastAPI service

A FastAPI + Uvicorn application (Python ≥ 3.11) exposing REST endpoints, an OpenAPI/Swagger UI, and an MCP control surface. Uses fastapi-mcp and fastapi-versioning.

Frontend

React + PatternFly UI

React 18 + TypeScript, built with Vite, using PatternFly (IBM's design system), TanStack Query for data fetching, and React Router for navigation.

Interfaces

CLI & Python SDK

The sbs CLI wraps restish to auto-generate commands from the OpenAPI spec; the Python SDK lets you consume the service programmatically.

Search

Pluggable vector DBs

Semantic search over embeddings (384-dim by default) with faiss as the default backend, plus Chroma and LanceDB options.

Execution

Docker sandbox

Tools run with parameters inside a Docker or Podman container, isolating agent-generated code from the host. A local execution mode is available for development.

Extensibility

Plugin system

Plugins subclass PluginBase and contribute event handlers and REST routes — discovered and loaded automatically. See Plugins.

MCP frontend vs. backend

Skillberry Store sits on both sides of the Model Context Protocol:

MCP FrontendMCP Backend
DirectionSBS serves tools to agentsSBS consumes tools from other servers
HowVirtual MCP servers (VMCP) per skill, plus the control API at /control_sseRegister a backend with packaging_format="mcp" and route calls to it
Use it toConnect Claude, Cursor, LangGraph, or any MCP client to your libraryImport and route tools from multiple external MCP servers

Storage & persistence

All resources persist under a single base directory (SBS_BASE_DIR, defaulting to the system temp directory), with separate folders for tools, skills, snippets, metadata, VMCP definitions, and their embeddings. Persistence backends include the local filesystem and GitHub repositories via version-controlled shell hooks.

Every directory is individually overridable through environment variables — see the repository's configuration guide for the full list.

Observability

The service emits Prometheus metrics (prefixed SBS_, on port 8090 by default) and OpenTelemetry traces (via the OTLP exporter, with FastAPI and requests instrumentation). Point Prometheus and a Jaeger all-in-one instance at the service to watch usage in real time. Observability can be disabled entirely by setting OBSERVABILITY=False.

Source layout

The backend lives under src/skillberry_store/:

ModuleResponsibility
fast_api/REST API layer
services/Service / logic layer
modules/Core domain logic
schemas/Pydantic models
plugins/Plugin base classes (PluginBase, PluginMetadata, PluginType)
vdbs/Vector database backends
tools/Tool handling, including the Anthropic skill format
ui/The React web UI

Ready to run it? Head to Getting Started, or drive the service from your shell with the sbs CLI.