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.
import json
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport

tfy_token = "Bearer ****"
extra_headers = json.dumps(
    {
        # backend-group/sentry is the remote MCP server name backing the 
        # backend-group/restricted-sentry 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()
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.