Skip to main content

What is Virtual MCP Server?

The Virtual MCP Server enables you to combine tools from multiple MCP servers into a single, curated MCP server that your application can connect to. Screenshot2025 10 28at10 16 18 Pn Suppose you have integrated MCP servers for GitHub and Slack on TrueFoundry. A team in your company is working on an Agent that requires access to these two MCP servers. But you do not want to expose tools like delete_project, delete_pr, etc. As the name suggests, Virtual MCP Server allows you to create a new MCP server by taking a subset of safe tools from GitHub and Slack MCP servers. This new Virtual MCP server can be accessed like any other remote MCP server and does not require a deployment.

How to create a Virtual MCP Server?

Frequently Asked Questions

You can use x-tfy-mcp-headers to pass custom headers, which will be passed to the remote MCP servers backing the virtual server.For MCP Gateway (direct MCP server access):
import json
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport

tfy_token = "Bearer ****"
# Use the remote server identifier as the key (MCP Gateway format)
extra_headers = json.dumps(
    {
        # backend-group/sentry is the remote MCP server backing the 
        # backend-group/restricted-sentry virtual server.
        "backend-group/sentry": {"Authorization": "Bearer ****"},
    }
)
url = "https://llm-gateway.truefoundry.com/mcp-server/backend-group/restricted-sentry/server"


async def main():
    transport = StreamableHttpTransport(
        url,
        headers={"x-tfy-mcp-headers": extra_headers},
        auth=f"Bearer {tfy_token}",
    )
    async with Client(transport=transport) as client:
        tools = await client.list_tools()
Format note: The header format shown above is for MCP Gateway. If using the Agent API instead, use the full FQN-based format (e.g., truefoundry:mcp-server-group:remote-mcp-servers:mcp-server:server-name) documented in the Agent API authentication section.
The Virtual MCP server is managed by the MCP Gateway and does not require a new deployment.
For now, only listing and calling tools are allowed.