rgarcia_mcp-server-server

MCP.Pizza Chef: MCP-Mirror

rgarcia_mcp-server-server is an innovative MCP server designed to address the challenges of traditional MCP server usage, which relies on stdio and process spawning. This server acts as a host for other MCP servers, enabling communication over the network rather than through cumbersome process management. This approach reduces infrastructure complexity, especially in multi-user scenarios where different MCP server configurations and credentials are required. By transforming MCP servers into networked services, rgarcia_mcp-server-server streamlines deployment, scaling, and routing of client requests, making it easier to integrate and manage MCP servers in diverse environments.

Use This MCP server To

Host multiple MCP servers as network services Simplify MCP server process management Enable scalable MCP server deployment for many users Route client requests to appropriate MCP server instances Centralize MCP server configuration and credential management

README

mcp-server-server

This repo is a proof of concept MCP server that lets you spin up ... other MCP servers.

But...why?

MCP servers are hard to use.

The primary transport mechanism for MCP servers is stdio, i.e. in your MCP client program you need to spawn a new process for the MCP server you want to use. This has downsides:

  1. It's cumbersome--every MCP client needs to be a process manager now. The way you configure Claude Desktop to use MCP servers is a good demonstration of this--it needs a list of processes to run.
  2. It creates an infra problem: if you have many users, all of which require different MCP server configurations (e.g. they all have different credentials for underlying MCP servers like Github, Google Drive, etc.), then you now have tons of processes to operate and route client requests to.

A better way

What if MCP servers were actually... servers? I.e. communication with them happened over the network instead of stdio? Then you could have an easier time using them programatically.

Step 1: Convert a stdio MCP server to a websocket MCP server

This repo contains a wrapper program that will take an existing MCP server (here is a list of the official ones, but they're all over now) and expose it via websocket:

bun run mcp-server -p 3001 -- npx -y @modelcontextprotocol/server-puppeteer@latest

Step 2: Interact with the MCP server programatically without managing processes

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { WebSocketClientTransport } from "@modelcontextprotocol/sdk/client/websocket.js";

const transport = new WebSocketClientTransport(new URL("ws://localhost:3001"));

const client = new Client(
  {
    name: "example-client",
    version: "1.0.0",
  },
  {
    capabilities: {},
  }
);
await client.connect(transport);
const tools = await client.listTools();
console.log(
  "Tools:",
  tools.tools.map((t) => t.name)
);
await client.close();
bun run mcp-server-wrapper-client
$ bun run src/mcp-server-wrapper/example-client/example-client.ts
Tools: [ "puppeteer_navigate", "puppeteer_screenshot", "puppeteer_click", "puppeteer_fill",
  "puppeteer_evaluate"
]

Step 3: Make the MCP server server

TODO: We haven't solved problem 2, i.e. as an MCP client developer we still (in step 1) had to spawn a program for a specific MCP server + user configuration. What if there was a single MCP server that exposed tools to spin up

rgarcia_mcp-server-server FAQ

How does rgarcia_mcp-server-server improve MCP server usage?
It replaces stdio-based process spawning with network communication, simplifying management and scaling.
Can rgarcia_mcp-server-server handle multiple users with different MCP server configurations?
Yes, it supports multi-user environments by routing requests to the correct MCP server instances with distinct credentials.
Does this server require spawning new processes for each MCP server?
No, it hosts MCP servers as network services, eliminating the need for process management in clients.
How does this server affect infrastructure complexity?
It reduces complexity by centralizing MCP server hosting and routing, making it easier to operate at scale.
Is rgarcia_mcp-server-server compatible with various LLM providers?
Yes, it works with MCP clients that can connect to servers hosting models like OpenAI, Claude, and Gemini.
What transport mechanism does rgarcia_mcp-server-server use?
It uses network communication instead of stdio for MCP server interactions.
Can I integrate rgarcia_mcp-server-server with existing MCP clients?
Yes, clients just need to connect over the network instead of spawning processes.
Is this server production-ready or a proof of concept?
It is currently a proof of concept demonstrating a new approach to MCP server hosting.