Plugin catalogue
Every plugin that ships with MCPG — backends, identity providers, policy engines, tool-gates, transforms, observability sinks, payment rails, and infrastructure adapters — with its id, class, and what it does.
Almost everything the gateway does at the edges is a plugin: every backend that a tool dispatches to, every identity provider, every policy engine, every transform, and every telemetry sink loads as a signed plugin. The gateway core owns sessions, governance orchestration, and dispatch; the plugins own the integrations.
This page is the catalogue of the plugins that ship with MCPG — first-party,
built and signed by the project, published as OCI artifacts under
ghcr.io/mcpg-dev/source-code/plugins/. You load one by listing it under
plugins[] with a source, and reference it from a binding's backend.kind
(for backends) or by its governance role.
How plugins are identified
Every plugin declares a reverse-DNS id and a class. The id convention is
dev.mcpg.<category>.<name>; a handful of older plugins use a bare
dev.mcpg.<name> (noted in the tables). The class is a fixed taxonomy the
gateway uses to decide where in the request lifecycle the plugin runs:
| Class | Role in the request lifecycle |
|---|---|
Backend | Fulfils a tool/prompt/resource call (the backend.kind target). |
IdentityProvider | Resolves caller identity from a credential (JWT, mTLS, API key…). |
PolicyEngine | Authorizes a resolved caller against a tool (Cedar / OPA / Casbin). |
ToolGate | Runs in the pre-dispatch gate chain — rate limit, approval, payment, IP allow-list, audit emit. |
Transform | Rewrites tool arguments or results in the pipeline. |
CredentialIssuer | Mints upstream credentials for cred:// references. |
SecretProvider | Resolves secrets from an external store (Vault). |
AuditSink / TelemetrySink / MetricsSink / LogSink | Durable audit + observability fan-out targets. |
Cluster / WatchStrategy | Cross-instance coordination + config/resource change watching. |
ContentStore / Store / Cache | Persistence for generated content, state, and response caches. |
CatalogProvider | Enriches/filters the advertised tool catalogue. |
A plugin's signature.policy (disabled / warn / enforce) controls trust
on load — use enforce in production. See
Plugin security for the signing and trust model.
plugins:
- id: dev.mcpg.policy.cedar
source:
oci: "ghcr.io/mcpg-dev/source-code/plugins/policy-cedar:1.0.0"
signature:
policy: enforce
Backends
A binding selects a backend with backend.kind. The non-LLM backends:
backend.kind | Plugin id | Purpose |
|---|---|---|
http | dev.mcpg.backend.http | Outbound HTTP/1.1+2 requests (reqwest), per-call CEL resolution, per-credential client caching. |
grpc | dev.mcpg.backend.grpc | gRPC calls as JSON, sharing the HTTP backend machinery. |
graphql | dev.mcpg.backend.graphql | GraphQL queries/mutations against a configured endpoint. |
sql | dev.mcpg.backend.sql | Parameterised SQL against Postgres, MySQL/MariaDB, or SQLite. |
kafka | dev.mcpg.backend.kafka | Request/reply over Kafka topics with per-caller credential resolution. |
nats | dev.mcpg.backend.nats | Correlated request/reply over NATS subjects. |
command | dev.mcpg.backend.command | Runs a subprocess with JSON over stdin/stdout. |
openapi | dev.mcpg.backend.openapi | Maps one OpenAPI operation per tool from a named spec source. |
mock | dev.mcpg.backend.mock | Returns a fixed response — for dev and tests. |
pipeline | (built-in) | Composes multiple backend calls into one tool result (not a separate cdylib). |
The kafka and nats backend crates also register a watch plugin
(dev.mcpg.watch.kafka_topic, dev.mcpg.watch.nats_topic, class
WatchStrategy) so resource bindings can stream topic updates.
LLM backends
The LLM backends expose one backend.kind per modality. All kinds use
underscores (openai_chat, never openai.chat):
backend.kind | Plugin id | Modality |
|---|---|---|
openai_chat | dev.mcpg.backend.openai.chat | Chat completions (OpenAI), tool use + vision. |
openai_embedding | dev.mcpg.backend.openai.embedding | Text embeddings. |
openai_image | dev.mcpg.backend.openai.image | Image generation. |
openai_tts | dev.mcpg.backend.openai.tts | Text-to-speech. |
openai_stt | dev.mcpg.backend.openai.stt | Speech-to-text (Whisper). |
azure_openai_chat | dev.mcpg.backend.azure_openai.chat | Chat via Azure OpenAI deployments. |
azure_openai_embedding | dev.mcpg.backend.azure_openai.embedding | Embeddings via Azure OpenAI. |
azure_openai_image | dev.mcpg.backend.azure_openai.image | Image generation via Azure OpenAI. |
azure_openai_tts | dev.mcpg.backend.azure_openai.tts | Text-to-speech via Azure OpenAI. |
azure_openai_stt | dev.mcpg.backend.azure_openai.stt | Speech-to-text via Azure OpenAI. |
anthropic_chat | dev.mcpg.backend.anthropic.chat | Chat completions via Anthropic Messages API. |
gemini_chat | dev.mcpg.backend.gemini.chat | Chat completions via Google Gemini. |
gemini_embedding | dev.mcpg.backend.gemini.embedding | Embeddings via Google Gemini. |
gemini_image | dev.mcpg.backend.gemini.image | Image generation via Google Imagen. |
compat_chat | dev.mcpg.backend.compat.chat | Chat via any OpenAI-compatible endpoint (vLLM, LocalAI, Groq, Together…). |
compat_embedding | dev.mcpg.backend.compat.embedding | Embeddings via OpenAI-compatible endpoints. |
stability_image | dev.mcpg.backend.stability.image | Image generation via Stability AI. |
That's 27 backend kinds total (10 non-LLM incl. the built-in pipeline, plus
17 LLM kinds). Every kind and its config keys are in the
configuration reference.
Identity providers
Resolve the caller. Built-in OIDC JWT verification lives in governance.access;
these plugins add the other credential types under plugins[] (class
IdentityProvider).
| Plugin id | Purpose |
|---|---|
dev.mcpg.identity.oidc | OIDC / OAuth2 JWT validation and claim extraction. |
dev.mcpg.identity.mtls | Identity from a mutual-TLS client-certificate subject DN. |
dev.mcpg.identity.workload | Workload identity — Kubernetes ServiceAccount / SPIFFE. |
dev.mcpg.identity.api-key | Identity from API keys (static or issuer-sourced). |
dev.mcpg.identity.basic | Identity from HTTP Basic credentials. |
Policy engines
Authorize a resolved caller against a tool (class PolicyEngine). Declare one
under governance.policy.engine[] and load it under plugins[].
| Plugin id | Purpose |
|---|---|
dev.mcpg.policy.cedar | AWS Cedar policy language. |
dev.mcpg.policy.opa | Open Policy Agent (Rego). |
dev.mcpg.policy.casbin | Casbin models (RBAC/ABAC). |
Tool-gates
Run in the pre-dispatch gate chain (class ToolGate) — each can allow, deny, or
challenge a call before it reaches a backend.
| Plugin id | Purpose |
|---|---|
dev.mcpg.rate-limit | Per-caller/per-tool sliding-window rate limiting. |
dev.mcpg.circuit-breaker | Fail fast when an upstream crosses an error threshold. |
dev.mcpg.response-cache | Cache tool results keyed on caller + tool + arguments. |
dev.mcpg.ip-allowlist | Restrict callers to allow-listed CIDR blocks. |
dev.mcpg.guardrails | Prompt-injection / jailbreak screening on LLM inputs. |
dev.mcpg.tool-gate-slack-approval | Hold a sensitive call for manual Slack approval. |
dev.mcpg.audit | Emit an audit event for the call (pairs with an audit sink). |
dev.mcpg.call-logger | Log every call with arguments, result, and latency. |
dev.mcpg.webhook | Notify an external webhook on call events. |
Payment
Meter and charge tool usage (class ToolGate). One per billing protocol:
| Plugin id | Protocol |
|---|---|
dev.mcpg.payment.x402 | HTTP 402 Payment Required. |
dev.mcpg.payment.acp | Access Control Protocol. |
dev.mcpg.payment.mpp | Metered Payment Protocol. |
dev.mcpg.payment.ucp | Unified Charging Protocol. |
Transforms
Rewrite arguments or results in the pipeline (class Transform).
| Plugin id | Purpose |
|---|---|
dev.mcpg.transform.jsonata | Apply a JSONata expression to arguments and/or results. |
dev.mcpg.transform.masking | Mask sensitive fields (SSN, password, card numbers) in arguments/results. |
Credentials & secrets
Mint upstream credentials for cred:// references (CredentialIssuer) and
resolve secrets from external stores (SecretProvider).
| Plugin id | Class | Purpose |
|---|---|---|
dev.mcpg.credential.static | CredentialIssuer | Static credential values. |
dev.mcpg.credential.oauth-client-credentials | CredentialIssuer | OAuth2 client-credentials token grant. |
dev.mcpg.credential.oauth-token-exchange | CredentialIssuer | OAuth2 token exchange (RFC 8693), on-behalf-of. |
dev.mcpg.credential.vault-dynamic-db | CredentialIssuer | Short-lived DB creds from Vault's dynamic DB engine. |
dev.mcpg.secret.vault | SecretProvider | Resolve secrets from HashiCorp Vault, with rotation. |
Observability
Audit, metrics, traces, and logs fan out to sinks. stderr / stdout / file
log sinks and the local-file audit sink are built into the gateway; these
plugins add the external destinations.
| Plugin id | Class | Purpose |
|---|---|---|
dev.mcpg.observability.prometheus | MetricsSink | Expose call latencies + counts as Prometheus metrics. |
dev.mcpg.observability.otlp | TelemetrySink | Export traces + logs to an OTEL collector over OTLP. |
Audit is a governance concern, not an observability sink — see Audit trail. The built-in
dev.mcpg.builtin.audit.local-filesink writes the hash-chained ledger; off-node audit sinks load as their own plugins.
Infrastructure
Cross-instance coordination, response caching, and content stores.
| Plugin id | Class | Purpose |
|---|---|---|
dev.mcpg.cluster.redis | Cluster | Coordinate instances + watch config via Redis. |
dev.mcpg.cluster.nats | Cluster | Coordinate instances via NATS JetStream. |
dev.mcpg.cluster.consul | Cluster | Coordinate instances via HashiCorp Consul. |
dev.mcpg.cluster.etcd | Cluster | Coordinate instances via etcd. |
dev.mcpg.cache.redis | Cache | Shared response cache across Redis (TTL + invalidation). |
dev.mcpg.storage.in_process | ContentStore | In-memory LRU for generated content (single-node). |
dev.mcpg.storage.file_system | ContentStore | Filesystem persistence for generated content. |
dev.mcpg.storage.s3 | ContentStore | S3-compatible storage (AWS S3, MinIO, R2, B2). |
dev.mcpg.catalog.builtin | CatalogProvider | Config-driven tool-catalogue enrichment + trust-level filtering. |
Single-node clustering is built in; set cluster.kind to one of the above for HA
— see Clustering.
A note on id conventions
Most ids follow dev.mcpg.<category>.<name>, but several predate the convention
and use a bare dev.mcpg.<name>: dev.mcpg.rate-limit,
dev.mcpg.circuit-breaker, dev.mcpg.response-cache, dev.mcpg.audit,
dev.mcpg.call-logger, dev.mcpg.guardrails, dev.mcpg.ip-allowlist,
dev.mcpg.webhook, and dev.mcpg.tool-gate-slack-approval. Use the exact id
shown above — the gateway matches on it verbatim.