Give an agent one set of tools from several MCP servers
An agent often needs a few tools from several MCP servers, and nothing else. A virtual MCP server gives it exactly that. It is a name in a workspace, the servers it draws from (its members) and the tools you pick from them. An agent that selects it sees only those tools. Every call still goes through the member server's own rules: policy, PII, approvals, loop detection and audit.
Create one in Flightdeck
- Open MCP → Virtual Servers (platform roles) or MCP Virtual Servers (workspace roles), and choose New Virtual Server.
- A platform role first picks the workspace. A workspace role always works in its own workspace.
- Give it a name. Use letters, digits, dots, dashes or underscores, up to 64 characters. The name must be unique in the workspace.
- Tick the tools to serve. Each server in the workspace is listed with the tools from its last sync. Ticking a tool makes its server a member.
- Choose Create.
The gateway picks up the change with the next configuration update. Who may do what is the same as for MCP servers: platform roles in any workspace; in a workspace, an admin or developer creates and edits, only an admin deletes, and a viewer can read the list.
Set the status to DISABLED to stop serving it without deleting it.
Select it from a client
Send the name in a header on DVARA's /mcp endpoint:
X-DVARA-Virtual-Server: research
With this header, tools/list returns only the tools you ticked, named
<server id>__<tool>. A call to any other tool is refused before an upstream
receives it. A virtual server serves tools only: no resources, prompts or MCP
App pages. It cannot contain another virtual server.
When a member server is removed
If a member server is deleted later, the virtual server stays, and its other members keep working. Flightdeck marks it Incomplete and names the missing server, on the list and on its edit page. The missing server's tools are not served. To save the virtual server again, untick that server, or register it again with the same server id.
What is checked when you save
- At least one tool, and every tool belongs to a member.
- Every member is an MCP server of the same workspace. A server of another workspace can never be a member.
- The name is not taken by another virtual server of the workspace.
A refused save shows the form again with the reason; nothing changes.
Audit and GitOps
Each change writes an audit record: MCP_VIRTUAL_SERVER_CREATED,
MCP_VIRTUAL_SERVER_UPDATED or MCP_VIRTUAL_SERVER_DELETED, with the name,
workspace, member servers and number of tools.
Virtual servers are part of a configuration export
(virtual_mcp_servers). A workspace export holds only that workspace's. An
import applies the same checks as Flightdeck. A member the install does not
have is reported as a warning, and the virtual server is imported as incomplete.
The discovery endpoints do not list virtual servers yet. Their members are listed, with their tools.
:::note Earlier releases
From 1.7.0 to 1.8.6 the gateway kept serving existing virtual servers, but nothing could create, change or export one. Flightdeck manages them again from 1.9.0.
:::