Skip to content

strad

Point any MCP client at one URL, present a token, ask for the servers you want with ?servers=, and get a single merged toolset — proxied, namespaced, and access-controlled server-side.

strad is a self-hosted MCP platform. It is one endpoint in front of many MCP servers: a client asks for the servers it wants, presents a token, and strad returns exactly the tools that token is entitled to — merged, namespaced, and brokered server-side. The core ships with zero servers baked in. You attach them through a single config interface, and that config is the whole product surface.

One endpoint, many servers

A client hits https://your-strad/mcp?servers=granola,deepwiki, and strad merges those upstreams into one toolset. Every tool is namespaced server__tool, so granola__list_meetings never collides with anyone else.

The query proposes, the token disposes

?servers= can only ever narrow what a token is entitled to. It is a selection hint, never an authorization boundary — entitlement is computed server-side from the caller’s roles.

It fails closed

Ask for a server you can’t have and you get a 424 Failed Dependency naming exactly what’s missing and where to authorize — not a 401 that marches your client into a pointless OAuth loop against the gateway.

Stateless and spec-conformant

A fresh MCP server and transport is built per request and torn down when it closes. The toolset is a pure function of (token, URL), which is what keeps ?servers= conformant with the 2026-07-28 MCP spec revision.