Stateless MCP gateway and OTel span-streaming bridge for hosted MCP servers.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Stateless MCP gateway. Sits between an AI client and an MCP server, relays
JSON-RPC verbatim, and turns every call into an OpenTelemetry span β shipped
over OTLP to any endpoint you choose. No database, no accounts, no
provisioning. See docs/PRISM.md for the full spec.
Fastest path to a live dashboard: get a free key at telinea.terradev.cloud, set one destination, and every span appears in Telinea within seconds.
One pipeline, one egress primitive: PrismSpan β Serializer β Dispatcher.
Prism knows four destination schemes and nothing about backends:
https:// / http:// β POST serialized spans to any OTLP endpoint.
Grafana, Honeycomb, a collector, Telinea β read the backend's own docs for
its endpoint and auth header, fill in two fields, done.file:// β append JSONL to a local path. No account, no network.stdout:// β human-readable lines for development.multi://a,b β fan-out to named destinations; failures are isolated.Configure in ~/.prism/config.toml (or ./prism.toml, or PRISM_CONFIG):
Formats: otlp_json (default β the industry wire standard), otlp_proto
(needs pip install opentelemetry-proto), jsonl, telinea (native
envelope for Telinea ingest).
Every field has an env override β secrets never need to touch disk:
Hosted mode: "Authorization" = "Bearer {token}" resolves {token} to the
caller's bearer per span β each user's spans land in their own account.
Delivery: buffered, flushed every 5 s or 512 spans; Retry-After honored on
429 for every backend; failed batches go to a dead-letter ring buffer
(10k spans) retried on backoff; on shutdown, in-flight spans drain and the
dead-letter buffer is written to ~/.prism/deadletter.jsonl and replayed on
next start. Fire-and-forget β Prism never blocks a chat session on a flush.
The entire integration is a URL swap plus headers:
X-Prism-Upstream β the real MCP server. Must match PRISM_UPSTREAM_ALLOW.X-Prism-Upstream-Authorization β forwarded upstream as Authorization.X-Prism-Capture β none (default) | args | args,results. Redacted.X-Prism-Sample β 0.0β1.0, sampled once per session.Header-less clients can encode the upstream in the path:
POST /mcp/u/{base64url(upstream)}.
Registry installs can't set custom headers β config arrives as query params.
Every X-Prism-* option has a query-param twin:
upstream β X-Prism-Upstream (or set PRISM_DEFAULT_UPSTREAM for
single-upstream deployments)api_key / token β Authorization / X-Api-Keyupstream_authorization β X-Prism-Upstream-Authorizationproject, env, role, capture, sample β their X-Prism-* twinssmithery.yaml in this directory is the registry manifest for the
self-hosted container path; the hosted listing just points at
https://prism-mcp.terradev.cloud/mcp.
One MCP session = one trace. One JSON-RPC request = one span. Tool failures
surface correctly (result.isError β ERROR, not a green 200). With a Telinea
destination, every Prism-fronted server also appears on the Telinea Gateway
board via the endpoint attribute β p50/p95/p99, req/min, sparkline β with
no backend changes.
/sse + /messages, 2024-11-05 spec).guard.py).No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/prism-5)<a href="https://allmcps.com/mcp/prism-5"><img src="https://allmcps.com/api/badge/prism-5?style=directory" alt="Prism on AllMCPs" /></a>