Supergateway教程

Supergateway 是一款专为 MCP(Model Context Protocol)服务器设计的远程调试与集成工具,通过
SSE(Server-Sent Events)或 WebSocket(WS)协议实现基于 stdio 的服务器与客户端的高效通信。

Supergateway 只需一个命令即可通过 SSE(服务器发送事件)WebSockets(WS) 运行基于 MCP stdio 的服务器 。当您的 MCP 服务器仅支持 stdio 时,此功能对于远程访问、调试或连接客户端非常有用。

由 Supermachine (托管 MCP)、 Superinterface 和 Supercorp 支持。

前置条件

  1. 本次使用的是CentOS Stream 9
  2. 安装node 24
## 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
## 更新环境变量
source ~/.bashrc
## nvm安装node24
nvm install 24
## nvm使用node24
nvm use 24

Supergateway安装与使用

通过 npx 运行 Supergateway:

npx -y supergateway --stdio "uvx mcp-server-git"
  • --stdio "command" :通过 stdio 运行 MCP 服务器的命令
  • --sse "https://mcp-server-ab71a6b2-cd55-49d0-adba-562bc85956e3.supermachine.app" :要连接的 SSE URL(SSE→stdio 模式)
  • --streamableHttp "https://mcp-server.example.com/mcp" :要连接的可流式 HTTP URL(StreamableHttp→stdio 模式)
  • --outputTransport stdio | sse | ws | streamableHttp :输出 MCP 传输(默认值: sse 带有 --stdiostdio 带有 --sse--streamableHttp
  • --port 8000 :监听端口(stdio→SSE 或 stdio→WS 模式,默认值: 8000
  • --baseUrl "http://localhost:8000" :SSE 或 WS 客户端的基本 URL(stdio→SSE 模式;可选)
  • --ssePath "/sse" :SSE 订阅的路径(stdio→SSE 模式,默认值: /sse
  • --messagePath "/message" :消息路径(stdio→SSE 或 stdio→WS 模式,默认值: /message
  • --streamableHttpPath "/mcp" :Streamable HTTP 的路径(stdio→Streamable HTTP 模式,默认值: /mcp
  • --stateful :以状态模式运行 stdio→Streamable HTTP
  • --sessionTimeout 60000 :会话超时(以毫秒为单位)(仅限有状态 stdio→Streamable HTTP 模式)
  • --header "x-user-id: 123" :添加一个或多个标头(stdio→SSE、SSE→stdio 或 Streamable HTTP→stdio 模式;可多次使用)
  • --oauth2Bearer "some-access-token" :使用提供的 Bearer 令牌添加 Authorization 标头
  • --logLevel debug | info | none :控制日志记录级别(默认值: info )。使用 debug 可显示更详细的日志,使用 none 可隐藏所有日志。
  • --cors :启用 CORS(stdio→SSE 或 stdio→WS 模式)。使用不带任何值的 --cors 参数表示允许所有来源,或提供一个或多个允许的来源(例如, --cors "http://example.com"--cors "/example\\.com$/" 进行正则匹配)。
  • --healthEndpoint /healthz :注册一个或多个以 "ok" 响应的端点(stdio→SSE 或 stdio→WS 模式;可多次使用)

标准输入输出 → SSE

将 MCP stdio 服务器公开为 SSE 服务器:

npx -y supergateway \--stdio "npx -y @modelcontextprotocol/server-filesystem ./my-folder" \--port 8000 --baseUrl http://localhost:8000 \--ssePath /sse --messagePath /message
  • 订阅事件GET http://localhost:8000/sse
  • 发送消息POST http://localhost:8000/message

出现如下,说明启动成功

[root@VM-12-16-centos my-folder]# npx -y supergateway --stdio "npx -y @modelcontextprotocol/server-filesystem /root/my-folder" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message
[supergateway] Starting...
[supergateway] Supergateway is supported by Supermachine (hosted MCPs) - https://supermachine.ai
[supergateway]   - outputTransport: sse
[supergateway]   - Headers: (none)
[supergateway]   - port: 8000
[supergateway]   - stdio: npx -y @modelcontextprotocol/server-filesystem /root/my-folder
[supergateway]   - baseUrl: http://localhost:8000
[supergateway]   - ssePath: /sse
[supergateway]   - messagePath: /message
[supergateway]   - CORS: disabled
[supergateway]   - Health endpoints: (none)
[supergateway] Listening on port 8000
[supergateway] SSE endpoint: http://localhost:8000/sse
[supergateway] POST messages: http://localhost:8000/message
[supergateway] Child stderr: Secure MCP Filesystem Server running on stdio

如果是远程腾讯云服务器,需要先开放防火墙,

sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload

外层也要添加
在这里插入图片描述

后启动(需要添加host 0.0.0.0):

npx -y supergateway \--stdio "npx -y @modelcontextprotocol/server-filesystem /root/my-folder" \--port 8000 \--host 0.0.0.0 \--baseUrl http://腾讯云服务器公网ip:8000 \--ssePath /sse \--messagePath /message

返回如下:

[root@VM-12-16-centos my-folder]# npx -y supergateway \--stdio "npx -y @modelcontextprotocol/server-filesystem /root/my-folder" \--port 8000 \--host 0.0.0.0 \--baseUrl http://腾讯云服务器公网ip:8000 \--ssePath /sse \--messagePath /message
[supergateway] Starting...
[supergateway] Supergateway is supported by Supermachine (hosted MCPs) - https://supermachine.ai
[supergateway]   - outputTransport: sse
[supergateway]   - Headers: (none)
[supergateway]   - port: 8000
[supergateway]   - stdio: npx -y @modelcontextprotocol/server-filesystem /root/my-folder
[supergateway]   - baseUrl: http://腾讯云服务器公网ip:8000
[supergateway]   - ssePath: /sse
[supergateway]   - messagePath: /message
[supergateway]   - CORS: disabled
[supergateway]   - Health endpoints: (none)
[supergateway] Listening on port 8000
[supergateway] SSE endpoint: http://localhost:8000/sse
[supergateway] POST messages: http://localhost:8000/message
[supergateway] Child stderr: Secure MCP Filesystem Server running on stdio

使用本地windows远程连接测试,如下,服务没问题

C:\Users\longz>curl http://腾讯云服务器公网ip:8000/sse
event: endpoint
data: /message?sessionId=e3819502-97bc-4c8b-a15c-f31179c2fe00

我们使用mcp客户端trae连接
在这里插入图片描述

{"mcpServers": {"remote-filesystem": {"url": "http://腾讯云公网ip:8000/sse","headers": {}}}
}

如下显示成功
在这里插入图片描述

补充备注: 上述方法是比较通用,不限腾讯云服务器。其余均可。 腾讯云服务器本身也提供了封装mcp服务的模板,提供支持一键云端部署 MCP
Server

在这里插入图片描述

SSE → stdio

连接到远程 SSE 服务器并通过 stdio 在本地公开:

npx -y supergateway --sse "https://mcp-server-ab71a6b2-cd55-49d0-adba-562bc85956e3.supermachine.app"

适用于将远程 SSE MCP 服务器集成到本地命令行环境中。

发送请求时,你还可以传递 headers。这对于身份验证很有用:

npx -y supergateway \--sse "https://mcp-server-ab71a6b2-cd55-49d0-adba-562bc85956e3.supermachine.app" \--oauth2Bearer "some-access-token" \--header "X-My-Header: another-header-value"

可流式传输的 HTTP → stdio

连接到远程 Streamable HTTP 服务器并通过 stdio 在本地公开:

npx -y supergateway --streamableHttp "https://mcp-server.example.com/mcp"

此模式适用于连接到使用较新的 Streamable HTTP 传输协议的 MCP 服务器。与 SSE 模式类似,您也可以传递以下标头进行身份验证:

npx -y supergateway \--streamableHttp "https://mcp-server.example.com/mcp" \--oauth2Bearer "some-access-token" \--header "X-My-Header: another-header-value"

stdio → 可流式传输的 HTTP

将 MCP stdio 服务器公开为可流式传输的 HTTP 服务器。

无状态模式

npx -y supergateway \--stdio "npx -y @modelcontextprotocol/server-filesystem ./my-folder" \--outputTransport streamableHttp \--port 8000

状态模式

npx -y supergateway \--stdio "npx -y @modelcontextprotocol/server-filesystem ./my-folder" \--outputTransport streamableHttp --stateful \--sessionTimeout 60000 --port 8000

Streamable HTTP 端点默认为 http://localhost:8000/mcp (可通过 --streamableHttpPath 配置)。

标准输入输出 → WS

将 MCP stdio 服务器公开为 WebSocket 服务器:

npx -y supergateway \--stdio "npx -y @modelcontextprotocol/server-filesystem ./my-folder" \--port 8000 --outputTransport ws --messagePath /message
  • WebSocket 端点ws://localhost:8000/message

MCP Inspector 示例(stdio → SSE 模式)

  1. 运行超级网关
npx -y supergateway --port 8000 \--stdio "npx -y @modelcontextprotocol/server-filesystem /Users/MyName/Desktop"
  1. 使用 MCP 检查器
npx @modelcontextprotocol/inspector

您现在可以通过 Supergateway 列出工具、资源或执行 MCP 操作。

与 ngrok 一起使用

使用 ngrok 公开分享您的本地 MCP 服务器:

npx -y supergateway --port 8000 --stdio "npx -y @modelcontextprotocol/server-filesystem ."# In another terminal:
ngrok http 8000

ngrok 提供了一个用于远程访问的公共 URL。

MCP 服务器的 URL 类似于: https://1234-567-890-12-456.ngrok-free.app/sse

使用 Docker 运行

基于 Docker 的工作流程避免了本地 Node.js 的设置。可在此处获取随时可用的 Docker 镜像: supercorp/supergateway。GHCR 上也有: ghcr.io/supercorp-ai/supergateway

使用官方镜像

docker run -it --rm -p 8000:8000 supercorp/supergateway \--stdio "npx -y @modelcontextprotocol/server-filesystem /" \--port 8000

Docker 会自动拉取镜像。MCP 服务器在容器的根目录 ( / ) 中运行。您可以根据需要挂载主机目录。

具有依赖关系的图像

提取这些预先构建的 Supergateway 图像以满足您可能需要的各种依赖项。

  • 紫外线 超级网关+uv/uvx,这样你就可以直接调用 uvx

    docker run -it --rm -p 8000:8000 supercorp/supergateway:uvx \--stdio "uvx mcp-server-fetch"
    
  • 德诺 Supergateway + Deno,准备运行基于 Deno 的 MCP 服务器:

    docker run -it --rm -p 8000:8000 supercorp/supergateway:deno \--stdio "deno run -A jsr:@omedia/mcp-server-drupal --drupal-url https://your-drupal-server.com"
    

自己构建图像

使用提供的 Dockerfile:

docker build -f docker/base.Dockerfile -t supergateway .docker run -it --rm -p 8000:8000 supergateway --stdio "npx -y @modelcontextprotocol/server-filesystem ."

与 Claude Desktop 一起使用(SSE → stdio 模式)

Claude Desktop 可以使用 Supergateway 的 SSE→stdio 模式。

基于 NPX 的 MCP 服务器示例

{"mcpServers": {"supermachineExampleNpx": {"command": "npx","args": ["-y","supergateway","--sse","https://mcp-server-ab71a6b2-cd55-49d0-adba-562bc85956e3.supermachine.app"]}}
}

基于 Docker 的 MCP 服务器示例

{"mcpServers": {"supermachineExampleDocker": {"command": "docker","args": ["run","-i","--rm","supercorp/supergateway","--sse","https://mcp-server-ab71a6b2-cd55-49d0-adba-562bc85956e3.supermachine.app"]}}
}

与 Cursor 一起使用(SSE → stdio 模式)

Cursor 还可以通过 SSE→stdio 模式与 Supergateway 集成。配置方式与 Claude Desktop 类似。

基于 NPX 的 MCP 服务器游标示例

{"mcpServers": {"cursorExampleNpx": {"command": "npx","args": ["-y","supergateway","--sse","https://mcp-server-ab71a6b2-cd55-49d0-adba-562bc85956e3.supermachine.app"]}}
}

基于 Docker 的 Cursor MCP 服务器示例

{"mcpServers": {"cursorExampleDocker": {"command": "docker","args": ["run","-i","--rm","supercorp/supergateway","--sse","https://mcp-server-ab71a6b2-cd55-49d0-adba-562bc85956e3.supermachine.app"]}}
}

注意: 尽管设置支持通过 --header 标志发送标头,但如果您需要传递授权标头(通常包含空格,例如 "Bearer 123" ),则必须使用 --oauth2Bearer 标志,因为已知的 Cursor 错误导致命令行参数中有空格。

为什么选择 MCP?

模型上下文协议 (MCP) 标准化了 AI 工具的交互。Supergateway 将 MCP 标准输入输出 (stdio) 服务器转换为 SSE 或 WS 服务,从而简化了与基于 Web 或远程客户端的集成和调试。

高级配置

超级网关强调模块化:

  • 自动管理 JSON-RPC 版本。
  • 尽可能重新传输包元数据。
  • stdio→SSE 或 stdio→WS 模式通过标准输出记录;SSE→stdio 模式通过 stderr 记录。

测试

Supergateway 使用 Node Test Runner 进行测试。

tests/helpers/mock-mcp-server.js 脚本提供了本地 MCP 服务器,因此所有测试都无需网络访问即可运行。

SE)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91937.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

203.移除链表元素 707.设计链表 206.反转链表

203.移除链表元素 Python链表节点定义: class ListNode:def __init__(self, val, nextNone):self.val valself.next next 性能分析 链表的特性和数组的特性进行一个对比,如图所示: 203. 移除链表元素 这道题就是给大家一个链表&#x…

人工智能之数学基础:利用全概率公式如何将复杂事件转为简单事件

本文重点 全概率公式是概率论中的核心工具,用于计算复杂事件的概率。其核心思想是将复杂事件分解为若干互斥且穷尽的简单事件,通过计算各简单事件的概率及其条件概率,最终求得目标事件的概率。 全概率公式 全概率公式就是将复杂事件简单化,定义如下: 如果随机事件A1,…

飞算JavaAI深度解析:从入门到对比

目录 一、飞算JavaAI是什么 二、如何注册和开始使用 三、使用体验:它能带来什么 四、与其他大模型的对比分析 五、总结与展望 随着人工智能技术的飞速发展,大模型在软件开发领域的应用越来越广泛。其中,代码生成工具作为提升开发效率的利…

Flutter各大主流状态管理框架技术选型分析及具体使用步骤

技术选型决策树 #mermaid-svg-m5gUL7Cpx4rYV2BQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-m5gUL7Cpx4rYV2BQ .error-icon{fill:#552222;}#mermaid-svg-m5gUL7Cpx4rYV2BQ .error-text{fill:#552222;stroke:#552…

Redis类型之String

1.Redis中的string注意本文以及之后讲的redis的类型但是指的value的类型,所有的key都是stringRedis中的字符串,直接就是按照二进制数据的方式存储的,不会做任何的编码转换,这里相对于mysql就比较好(个人感觉&#xff0…

[激光原理与应用-156]:光学器件 - 激光器为什么会出现多余的能量,哪些地方会出现多余能量?

在激光器运行过程中,多余能量的出现是不可避免的物理现象,其根源在于能量转换与传输过程中的非理想特性。以下从能量来源、产生位置及具体机制三方面进行详细说明:一、多余能量的主要来源泵浦源效率限制泵浦源(如激光二极管、闪光…

Arxiv-Daily

Daily Paper Report - 2025-07-24 12:53 Today’s Recommended Papers 1. Multi-modal Multi-task Pre-training for Improved Point Cloud Understanding Authors: Liwen Liu, Weidong Yang, Lipeng Ma, Ben Fei Deep-Dive Summary: 多模态多任务预训练以改善点云理解 预…

如何对云环境或者超融合系统进行性能测试?

最近几个月,公司开启了新的产品计划,准备来做一个国产超融合一体机(其实个人觉得现在入行已经晚了太多了,市场基本没有多少了) POC功能测试过完,但是感觉不到什么优势,由于芯片架构采用的是arm架…

【web自动化测试】实战

web自动化测试就是对界面的测试1、编写测试用例2、参考测试用例,创建自动化测试项目,编写自动化测试脚本论坛登录页:ForumLoginTest.py论坛首页:ForumListTest.py论坛详情页:ForumDetailTest.py论坛编辑页:…

在Maxscript中随机化对象变换、颜色和材质

只需几行Maxscript,即可为3ds Max场景带来更多活力和变化! 在本文中,您将学习如何快速随机化选定对象的位置、旋转、线颜色和材质。 非常适合在ArchViz、动态图形和产品可视化项目中创建更自然、更少机械的布局。 为什么要使用随机化脚本? 1.快速为场景添加自然随机性 2.…

分类数据集 - 交通事故场景分类数据集下载

数据集介绍:交通事故场景分类数据集,真实交通场景高质量图片数据;适用实际项目应用:公共场所监控场景下是否发生交通事故检测项目,以及作为监控场景通用交通检测数据集场景数据的补充;数据集类别&#xff1…

内网公网详解,及无公网IP内网穿透给外网直接远程连接访问的具体实现方法步骤

一、什么是内网、外网1、内网IP(局域网IP)是指在私有网络或局域网内部使用的IP地址,无法直接从互联网访问,需通过NAT(网络地址转换)技术实现对外通信。内网IP(Intranet IP)是专为局域…

Redis协议数据迁移方式

主从复制(REPLICAOF/SLAVEOF):目标实例挂为从节点,通过复制协议全量增量同步后切换为主。模拟从节点工具:模拟复制协议同步数据,常见两种实现:(1) 拉取全量和增量命令流,在本地生成 …

英语中日期与时间缩写

日常使用中,时间缩写无处不在。掌握这些缩写不仅能提高沟通效率,还能让您的英语表达更加地道和专业。本文将系统性地介绍英语中各类时间相关缩写,包括月份、星期、时刻表达等,并提供实用记忆技巧和应用场景。 一、时间缩写基础概…

【Spring Cloud】-- RestTeplate实现远程调用

实现远程调用有很多种方式,这里我们使用RestTemplate来进行实现。 REST :表现层资源状态转移(资源在网络中以某种表现形式进行状态转移),是一种软件架构风格,状态转移:数据状态的变化。 表现层&…

2025年信创政策解读:如何应对国产化替代挑战?(附禅道/飞书多维表格/华为云DevCloud实战指南)

本文核心产品:​​禅道(国产项目管理工具)、飞书多维表格(协同办公工具)、华为云DevCloud(云端研发平台)​​ ——在“自主可控”成为国家战略关键词的2025年,国产化替代已从“可选动…

如何让 RAG 检索更高效?——大模型召回策略全解

如何让 RAG 检索更高效?——大模型召回策略全解 一、引子:RAG 的“强”靠得住吗? RAG(Retrieval-Augmented Generation)作为一种将文档检索与大语言模型结合的框架,已成为企业落地知识问答、搜索增强、智能…

Bilateral Reference for High-Resolution Dichotomous Image Segmentation

代码来源 https://github.com/ZhengPeng7/BiRefNet 模块作用 DIS 是一种旨在对高分辨率图像中的目标物体进行精确分割的技术,尤其适用于具有复杂细微结构的物体,例如细长的边缘或微小细节。传统方法在处理这类任务时往往难以捕捉细微特征或恢复高分辨…

RAGFlow 0.20.0 : Multi-Agent Deep Research

Deep Research:Agent 时代的核心能力2025 年被称为 Agent 落地元年,在解锁的各类场景中,最有代表性之一,就是 Deep Research 或者以它为基座的各类应用。为什么这么讲? 因为通过 Agentic RAG 及其配套的反思机制&#…

CMakeLists.txt学习

一:#是行注释 ,[[ 块注释 ]]0.cmake_minimum_required: 指定使用的cmake的最低版本1.project() 定义工程名称并可以指定工程的版本,工程描述,web主页地址,支持的语言(默认情况支持所有语言)2.…