Skip to main content

What is Virtual MCP Server?

Virtual MCP Server allows you to slice and dice different MCP servers to create a new MCP server. Screenshot2025 10 24at16 28 20 Pn Suppose you have integrated two public 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?

WIP

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()
I