Virtual Servers - bishoku/vmcp GitHub Wiki
A virtual server is an endpoint, /mcp/v1/virtual/{slug}, that exposes curated upstream tools, resources, URI templates and prompts. Agents
connect to it like to any MCP server.
| Field | Meaning |
|---|---|
slug, name, description
|
Identification |
enabled |
Disabled servers are not served |
authRequired |
Default true: callers need an agent key permitted for this server |
tools |
Ordered selections: {upstream, tool, alias?, description?}
|
catalog |
Resource/template/prompt selections: {upstream, kind, name, alias?, description?}; routing rules
|
clientFeatures |
Opt-in sampling, roots and form elicitation permissions; limits and host consent |
policy |
Tool policy |
pii |
PII masking |
rateLimitPerMinute |
Rate limit |
An exposed tool is named {upstream}__{tool} unless you set an alias, which lets you resolve clashes (two upstreams
with an echo tool) or give agents friendlier names. Exposed names must be unique within a virtual server; the API and
UI report duplicates.
description replaces the upstream description in tools/list of this virtual server only. The same upstream tool
can be described differently elsewhere, which helps agents choose between look-alike tools.
- Empty or omitted: the upstream text is used.
- Reads return
upstreamDescription(current upstream text) anddescriptionDrift:truewhen the upstream text changed after the override was written. The UI shows the upstream text and a warning. Saving the selection again acknowledges the change (even a repeated apply of the same document does). - At most 20,000 Unicode characters (also applies to resource, template and prompt description overrides). Only the description is overridden; input schemas are passed through unchanged.
The Virtual Servers page lists saved servers in a searchable table, with capability counts, authentication, rate limits and status. Select a server to open its read-only detail page. Overview, Capabilities, Access, Protection, Connect and Activity remain available without entering edit mode.
Choose Edit configuration at the top to open the full-page editor at
/virtual-servers/<slug>/edit. Order of tools is the order agents see. In the
editor, drag tools to reorder, type aliases and descriptions, and set per-tool
policies. Save returns to the saved detail page; Cancel returns without
applying changes and prompts before discarding a dirty draft. Viewers cannot edit.
New virtual server opens a dedicated creation page. Existing ?inspect=<slug>
links redirect to read-only details.
If an upstream tool disappears after a refresh the selection is reported as orphaned and is not served. Tools of a disabled upstream are skipped.
{
"name": "Support agent",
"authRequired": true,
"tools": [
{"upstream": "crm", "tool": "search_customers", "alias": "find_customer",
"description": "Look up a customer by e-mail or phone. Read-only."},
{"upstream": "tickets", "tool": "create_ticket"}
],
"policy": {"default": "allow", "tools": {"create_ticket": "deny"}},
"pii": {"enabled": true, "detectors": ["email", "phone"]},
"rateLimitPerMinute": 120
}Selected capabilities show a compact description summary. Edit description opens an editor with the full plain text, the current upstream source, and an agent view of the effective description and exposed name. Line breaks and spacing are preserved. The agent view previews configuration before any configured PII masking.
Apply to draft updates the virtual server form only; use the existing server save action to publish changes. Cancel leaves the form unchanged. Use upstream description clears the override in the editor; apply and save to publish that change. Upstream descriptions are read-only and are not limited by the override editor's 20,000-character limit. The existing 1 MiB control-plane request budget still applies to the complete server update. Capabilities on the detail page can be inspected without entering edit mode.