systemprompt-mcp 0.32.2

Native Model Context Protocol (MCP) implementation for systemprompt.io. Orchestration, per-server OAuth2, RBAC middleware, and tool-call governance — the core of the AI governance pipeline.
Documentation
.card {
    border: 1px solid var(--mcpui-glass-border);
    border-radius: var(--mcpui-radius-card);
    overflow: hidden;
    background: var(--mcpui-glass-bg);
    background-image: var(--mcpui-glass-specular);
    box-shadow: var(--mcpui-shadow-raised), var(--mcpui-shadow-inset);
    -webkit-backdrop-filter: blur(var(--mcpui-glass-blur)) saturate(140%);
    backdrop-filter: blur(var(--mcpui-glass-blur)) saturate(140%);
}

.card-header {
    position: relative;
    padding: var(--mcpui-space-5) var(--mcpui-space-5) var(--mcpui-space-4);
    border-bottom: 1px solid var(--mcpui-border);
}

.card-header .mcp-app-description {
    margin-top: var(--mcpui-space-3);
}

.card-theme-gradient .card-header {
    background:
        radial-gradient(60% 140% at 12% 0%, var(--mcpui-accent-wash) 0%, transparent 70%);
}

/* The 1px gap is the grid background showing through, so section fills read as
 * hairline rules without a border on each cell. */
.card-sections {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: 1px;
    background: var(--mcpui-border);
}

.card-section {
    padding: var(--mcpui-space-4) var(--mcpui-space-5);
    background: var(--mcpui-surface);
}

.card-section-heading {
    display: flex;
    align-items: center;
    gap: var(--mcpui-space-2);
    margin-bottom: var(--mcpui-space-2);
    color: var(--mcpui-ink-faint);
    font-size: var(--mcpui-text-xs);
    font-weight: 600;
    letter-spacing: var(--mcpui-tracking-wide);
    text-transform: uppercase;
}

.card-section-content {
    max-width: 60ch;
    color: var(--mcpui-ink);
    font-size: var(--mcpui-text-md);
}

.card-section-content p + p {
    margin-top: var(--mcpui-space-2);
}

.card-empty {
    padding: var(--mcpui-space-5);
    color: var(--mcpui-ink-dim);
}

.card-ctas {
    display: flex;
    flex-wrap: wrap;
    gap: var(--mcpui-space-2);
    padding: var(--mcpui-space-4) var(--mcpui-space-5);
    border-top: 1px solid var(--mcpui-border);
}

.card-cta {
    display: inline-flex;
    align-items: center;
    gap: var(--mcpui-space-2);
    padding: var(--mcpui-space-2) var(--mcpui-space-4);
    border: 1px solid var(--mcpui-border-strong);
    border-radius: var(--mcpui-radius-inner);
    background: var(--mcpui-surface);
    color: var(--mcpui-ink);
    font: inherit;
    font-weight: 500;
    cursor: pointer;
    transition: border-color var(--mcpui-duration) var(--mcpui-ease),
                background var(--mcpui-duration) var(--mcpui-ease);
}

.card-cta:hover {
    border-color: var(--mcpui-accent-rim);
    background: var(--mcpui-accent-wash);
}

.card-cta-primary {
    border-color: var(--mcpui-accent);
    background: var(--mcpui-accent);
    color: var(--mcpui-accent-ink);
}

.card-cta-primary:hover {
    border-color: var(--mcpui-accent);
    background: color-mix(in oklab, var(--mcpui-accent) 86%, var(--mcpui-ink));
    color: var(--mcpui-accent-ink);
}