A meta MCP server that reduces context bloat by exposing stable meta-tools and dynamically provisioning MCP servers on demand.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by MCP Gateway.
gateway.auth_connectStore credentials for a server and make them available to provisioning. Use this when gateway.provision reports missing authentication.
gateway.cancelCancel a pending tool invocation. By default, refuses to cancel healthy requests (recent heartbeat). Use force=true to cancel anyway. Use gateway.list_pending first to see request IDs and health status.
gateway.catalog_searchSearch for available tools across all connected MCP servers. Returns compact capability cards without full schemas. Use filters to narrow results by server, tags, or risk level. Set include_offline=True to also discover provisionable servers not yet running. This is the primary tool discovery entry point.
gateway.config_statusShow read-only effective configuration and startup policy status with source attribution and non-secret diagnostics.
gateway.connect_serverConnect or start a known downstream MCP server by name. Resolves configured, provisioned manifest, and registered discovered servers.
gateway.describeGet detailed information about a specific tool, including its arguments and constraints. Use this before invoking a tool to understand its requirements.
A gateway that lets your AI coding assistant use dozens of external tools without loading them all up front.
PMCP sits between your assistant (Claude Code, Codex, and others) and the services it can plug into โ GitHub, Jira, databases, 90+ more. Instead of loading every tool's full schema before you've asked a question, it offers a short menu first and fetches the detailed schema only when a tool is actually used.
Assistants reach external services through MCP (Model Context Protocol) โ a common interface for an AI to talk to other software. When an assistant connects to a dozen MCP servers directly, it loads all of their tool definitions into context at once.
Context is limited and metered: every tool definition costs tokens and crowds out room for the actual work. Loading 50+ tools you may never call is slow and expensive, and adding a new service usually means restarting the assistant. Anthropic has highlighted context bloat as a key challenge with MCP tooling.
PMCP is the single connection point that keeps this compact and on-demand.
Developers and teams running AI coding assistants with many connected tools โ especially anyone hitting "too many tools" or context-full limits.
autoStart.Capability matching is built-in โ no API key needed.
gateway.request_capabilityuses a pure-Python matcher that can return direct CLI guidance for installed native tools, MCP server candidates, or registry search guidance.
pmcp setupPMCP includes a wizard-style helper that can render ready-to-use MCP client config for Claude and OpenCode.
The generated config only connects your client to the PMCP gateway. Downstream MCP
servers stay lazy until first use unless you add them to autoStart in your
.mcp.json.
Use pmcp setup to print the generated config:
Named profiles cover the common modes:
Write directly into your client config with --write:
Without --write, pmcp setup prints the config so you can paste it into:
~/.mcp.json~/.config/opencode/opencode.jsonUse shared-service HTTP mode when running one PMCP service for multiple sessions or clients. Use single-process stdio mode for local testing.
If you prefer manual config, point each client to the shared HTTP endpoint:
Why this mode: PMCP uses a singleton lock (~/.pmcp/gateway.lock), so multiple local launches can conflict. One shared service avoids lock collisions and keeps tool state consistent.
Shared gateway state:
gateway.refresh(force=true), gateway.disconnect_server(force=true), and gateway.restart_server(force=true) can cancel or interrupt downstream work started by another client using the same gateway.gateway.health and live pmcp status --verbose show startup policy observations for downstream servers without exposing secret values.--rate-limit / PMCP_RATE_LIMIT applies per observed source IP on /mcp; localhost clients and reverse-proxied clients can share one bucket unless the proxy preserves distinct client IPs.Quick verification:
/mcp is POST-only as of 2.0.0 โ a bare curl against it returns
405 Method Not Allowed with Allow: POST, DELETE, so use /health for a
liveness check.
HTTP transport is unauthenticated by default. For any non-localhost exposure, choose an HTTP auth mode and terminate TLS in front of PMCP.
shared-secret mode is the backward-compatible single-tenant guard. It accepts
one static bearer value on /mcp:
Avoid passing production tokens with --auth-token; command-line arguments can
be visible in process listings on shared hosts.
Clients must then include Authorization: Bearer mysecrettoken on /mcp requests.
/health and /metrics remain unauthenticated by design; protect them with
firewall rules, IP allowlists, or reverse-proxy policy before any non-localhost
exposure.
resource-server mode makes PMCP validate Authorization Server issued access
tokens as an OAuth 2.1 Resource Server. Configure the HTTP app with a public
issuer, JWKS URL, resource audience, required scopes, and exact allowed origins:
PMCP validates token signature, issuer, expiry, not-before, and audience. The
audience is bound to the configured resource_server_audience (the server's
canonical resource URI, per RFC 8707); it is never derived from the request
Host header. resource-server mode fails closed at startup if the issuer,
JWKS URL, or audience is missing, and resource_server_jwks_url must be an
https URL and is rejected when its host is a non-public IP literal. Token
signatures are only accepted for the operator-configured
resource_server_allowed_algorithms allowlist (default RS256/ES256); the
token's own alg header is never trusted. JWKS is fetched
asynchronously and cached, so validation never blocks the event loop; an
unreachable JWKS endpoint returns 503 while an invalid token returns 401.
In public auth metadata URLs it rejects hosts written as non-public IP
literals โ private, CGNAT, link-local, loopback, multicast, site-local, and
unspecified โ including IPv4 addresses embedded in IPv6 literals and legacy
numeric forms such as 2852039166. This is a filter on literals only: a DNS
name is accepted without being resolved, so a name that points at an
internal address still passes. PMCP therefore no longer presents such a URL as
one it checked: a server-supplied URL is relayed unverified and presented as
such โ UrlElicitationInfo.url_verified, AuthMetadataInfo.verified_urls,
and AuthChallengeInfo.resource_metadata_url_verified all default to
unverified, and the caveat is carried in the next_step an agent follows and in
CLI output. Where PMCP fetches a URL itself it fails closed instead, requiring
a verified public literal
(#211). PMCP is still not an
Authorization Server and does not provide dynamic client registration, SSO,
RBAC, billing, or a complete multi-tenant identity service.
Auth mode and OAuth resource-server parameters are configurable from the CLI or environment (CLI flags take precedence; env values are read only when the flag is unset):
| Flag | Env var | Purpose |
|---|---|---|
--auth-mode {none,shared-secret,resource-server} | PMCP_AUTH_MODE | Select the HTTP auth mode. When unset, PMCP infers shared-secret if a token is present, otherwise none. |
--oauth-issuer | PMCP_OAUTH_ISSUER | Authorization Server issuer (resource-server mode). |
--oauth-jwks-url | PMCP_OAUTH_JWKS_URL | Public https JWKS URL (resource-server mode). |
--oauth-audience | PMCP_OAUTH_AUDIENCE | Canonical resource audience, RFC 8707 (resource-server mode). |
--required-scope (repeatable) | PMCP_REQUIRED_SCOPES (comma-separated) | Scopes every token must present. |
--allowed-origin (repeatable) | PMCP_ALLOWED_ORIGINS (comma-separated) | Browser Origins permitted on /mcp; also enables Host-header validation. |
Factual signals from GitHub, npm, and our automated checks โ not a rating.
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/viperjuice-mcp-gateway)<a href="https://allmcps.com/mcp/viperjuice-mcp-gateway"><img src="https://allmcps.com/api/badge/viperjuice-mcp-gateway?style=directory" alt="MCP Gateway on AllMCPs" /></a>