返回 MCP 目录
public公开dns本地运行

mcp-server-server

该项目是一个概念验证的MCP服务器,通过WebSocket暴露另一个标准输入输出的MCP服务器,旨在简化MCP服务器的使用和管理。

article

README

🚀 mcp-server-server

此仓库是一个 MCP 服务器的概念验证实现,它借助 WebSocket 来暴露另一个基于标准输入输出 (stdio) 的 MCP 服务器。通过这种方式,能有效解决传统 MCP 服务器使用过程中存在的诸多问题,提升使用的便捷性和效率。

🚀 快速开始

第一步:将现有的 stdio MCP 服务器转换为 WebSocket MCP 服务器

此仓库包含一个包装程序,可以将现有 MCP 服务器(此处 列出了官方的一些)通过 WebSocket 暴露出来:

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

为了更快的启动时间,直接使用 node 安装并运行:

pnpm install -g @modelcontextprotocol/server-puppeteer@latest
bun run mcp-server-wrapper -p 3001 -- node ~/Library/pnpm/global/5/node_modules/@modelcontextprotocol/server-puppeteer/dist/index.js

第二步:无需管理进程即可程序化地与 MCP 服务器交互

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"
]

第三步:将其打包到 Docker 镜像中

对于给定的 MCP 服务器配置,例如:

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    }
  }
}

我们希望为这种 MCP 服务器配置生成一个 Docker 镜像,以便在任何地方运行。此仓库包含了一个脚本,该脚本将根据 MCP 服务器配置输出一个 Dockerfile:

# 这里应该有一个示例命令,但当前文档中没有提供具体的命令。

✨ 主要特性

解决使用 MCP 服务器的痛点

使用 MCP 服务器存在诸多不便之处,而本项目能有效解决这些问题:

  1. 解决使用不便问题:传统方式下,每个 MCP 客户端都需要成为一个进程管理器。Claude Desktop 的配置方式就是一个很好的例证——它需要维护一个要运行的进程列表。而本项目通过 WebSocket 暴露服务器,无需客户端进行复杂的进程管理。
  2. 解决基础设施问题:如果你有多个用户,他们每个人可能有不同的 MCP 服务器配置(例如,他们可能使用不同的凭据来访问底层 MCP 服务器,如 Github、Google Drive 等),传统方式会面临大量的进程管理和请求路由的问题。本项目提供了更高效的管理和扩展方式,解决了这一难题。
  3. 解决启动速度慢问题:默认情况下启动一个 MCP 服务器的方式是 npx ...uvx ...,这带来了这些工具固有的延迟(通常需要 2 - 3 秒的启动时间)。本项目通过优化启动方式,提升了启动速度。

提供更优方案

如果 MCP 服务器实际上是网络服务器,即通过网络进行通信而不是 stdio,那么你可以更轻松地在程序中使用它们。本项目通过将 MCP 服务器转换为 WebSocket 服务器,实现了更高效的程序化交互方式,解决了现有 MCP 服务器管理复杂、启动缓慢的问题,同时提升了性能和用户体验。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端