mcp-remote

GitHub
1.4k 223 简单 1 次阅读 今天MIT插件
AI 解读 由 AI 自动生成,仅供参考

mcp-remote 是一款旨在打通本地与远程连接的桥梁工具,专门用于让仅支持本地(stdio)通信的 MCP 客户端也能安全访问远程 MCP 服务器。目前,许多流行的 AI 开发工具(如 Claude Desktop、Cursor)出于安全和便捷考虑,默认只运行本地服务,这虽然保护了隐私,却阻碍了开发者享受云端部署带来的快速迭代和集中维护优势。

mcp-remote 巧妙地解决了这一矛盾:它在本地充当代理,将客户端的本地请求转发至远程服务器,并完整支持最新的 MCP 授权规范(包括 OAuth 流程)。这意味着开发者无需等待客户端原生支持远程连接,即可立即使用托管在云端的强大服务,同时确保 API 密钥等敏感信息不泄露。

该工具特别适合正在构建或试用 MCP 生态的开发者和技术研究人员。其技术亮点在于灵活的配置能力,不仅支持通过命令行参数注入自定义请求头以绕过特定认证限制,还能利用 --resource 标志隔离不同租户的 OAuth 会话,轻松实现多实例并行管理。作为一个实验性的概念验证项目,mcp-remote 为当前过渡期的 MCP 生态提供了极具价值的临时解决方案,让用户能提前体验分布式架构的便利。

使用场景

某 SaaS 团队希望让使用 Claude Desktop 和 Cursor 的开发者直接访问部署在云端的 Atlassian MCP 服务,以统一管理和迭代功能。

没有 mcp-remote 时

  • 主流客户端仅支持本地 stdio 传输,无法直接连接远程 HTTP+SSE 服务器,导致云端服务无法被调用。
  • 若强行在用户本地运行服务代码,不仅增加了环境配置负担,还迫使敏感 API 密钥暴露在用户机器上,存在安全隐患。
  • 每次修复漏洞或更新功能时,必须通知所有用户手动升级本地包,无法实现“一次部署,全员生效”的敏捷迭代。
  • 面对多个租户(如不同 Atlassian 实例)时,缺乏隔离机制,难以在同一客户端内管理独立的 OAuth 会话和令牌。

使用 mcp-remote 后

  • 通过简单的 npx 命令配置,mcp-remote 充当桥梁,让仅支持本地的客户端也能无缝连接经过身份验证的远程 MCP 服务器。
  • 核心业务逻辑保留在云端,用户无需在本地安装复杂依赖,API 密钥等机密信息也无需离开服务器,大幅提升了安全性。
  • 团队可随时推送后端更新,所有开发者下次启动客户端时即自动获取最新功能,彻底消除了分发更新的摩擦。
  • 利用 --resource 标志,mcp-remote 能为不同租户隔离 OAuth 会话,轻松在同一编辑器中切换和管理多个企业环境。

mcp-remote 的核心价值在于它打破了本地客户端的限制,让开发者能在享受本地工具便利的同时,安全、高效地利用云端服务的强大能力与敏捷性。

运行环境要求

操作系统
  • macOS
  • Windows
  • Linux
GPU

未说明

内存

未说明

依赖
notes该工具是一个基于 Node.js 的命令行实用程序,用于将仅支持本地 stdio 传输的 MCP 客户端连接到远程 MCP 服务器。主要依赖 Node.js 环境(版本需 18 或更高),通过 npx 直接运行无需显式安装。配置时需修改各客户端(如 Claude Desktop, Cursor, Windsurf)的 JSON 配置文件。凭证信息默认存储在 ~/.mcp-auth 目录中。支持 OAuth 认证流程,需在本地开放端口(默认 3334)用于回调。
python未说明
Node.js >= 18
npx (npm package runner)
mcp-remote hero image

快速开始

mcp-remote

将仅支持本地(stdio)服务器的 MCP 客户端连接到具有身份验证支持的远程 MCP 服务器:

注意:这只是一个可行的概念验证,但应被视为 实验性功能

为什么需要这个工具?

迄今为止,市面上大多数 MCP 服务器都部署在本地,使用 stdio 传输方式。这种方式有一些优势:由于用户已授予客户端和服务器运行权限,两者可以彼此隐式信任。诸如 API 密钥之类的敏感信息可以通过环境变量进行配置,且始终不会离开用户的机器。此外,借助 npxuvx,用户无需执行显式的安装步骤即可快速上手。

然而,许多原本可以迁移到云端的软件最终确实被迁移到了云端,原因在于:当你可以通过一次部署就为所有用户推送更新时,查找和修复 bug、迭代新功能会变得容易得多。

借助最新的 MCP 授权规范,我们现在拥有了一种安全的方式,可以在不将代码运行在用户笔记本电脑上的情况下,与全世界共享我们的 MCP 服务器。当然,前提是目前流行的 MCP 客户端 都已支持这一功能。然而,大多数客户端仍然只支持 stdio 方式,而那些支持 HTTP+SSE 的客户端也尚未实现所需的 OAuth 流程。

这就引出了 mcp-remote 的用武之地。一旦你选择的 MCP 客户端支持远程授权服务器,就可以将其移除。在此之前,只需添加这一行配置,即可适配你所需的 MCP 客户端!

使用方法

目前最流行的几款 MCP 客户端(Claude Desktop、Cursor 和 Windsurf)均采用以下配置格式:

{
  "mcpServers": {
    "remote-example": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse"
      ]
    }
  }
}

自定义请求头

若需绕过身份验证,或在向远程服务器发送的所有请求中附加自定义请求头,可传递 --header CLI 参数:

{
  "mcpServers": {
    "remote-example": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--header",
        "Authorization: Bearer ${AUTH_TOKEN}"
      ],
      "env": {
        "AUTH_TOKEN": "..."
      }
    },
  }
}

注意: Cursor 和 Claude Desktop(Windows)存在一个 bug,即在调用 npx 时,args 中的空格不会被转义,从而导致这些值被错误解析。对此,可以采用如下 workaround:

{
  // 其余配置...
  "args": [
    "mcp-remote",
    "https://remote.mcp.server/sse",
    "--header",
    "Authorization:${AUTH_HEADER}" // 注意冒号前后无空格
  ],
  "env": {
    "AUTH_HEADER": "Bearer <auth-token>" // 环境变量中的空格是允许的
  }
},

多实例运行

若需以不同配置(例如针对不同的 Atlassian 租户)同时运行同一远程服务器的多个实例,可使用 --resource 标志来隔离 OAuth 会话:

{
  "mcpServers": {
    "atlassian_tenant1": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.atlassian.com/v1/sse",
        "--resource",
        "https://tenant1.atlassian.net/"
      ]
    },
    "atlassian_tenant2": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.atlassian.com/v1/sse",
        "--resource",
        "https://tenant2.atlassian.net/"
      ]
    }
  }
}

对于每组唯一的服务器 URL、资源标识符和自定义请求头组合,都会维护独立的 OAuth 会话及令牌存储。

标志

  • 如果 npx 产生错误,可以考虑在命令中添加 -y 作为第一个参数,以自动接受安装 mcp-remote 包。
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://remote.mcp.server/sse"
      ]
  • 若要强制 npx 始终检查 mcp-remote 的更新版本,可添加 @latest 标志:
      "args": [
        "mcp-remote@latest",
        "https://remote.mcp.server/sse"
      ]
  • 若要更改 mcp-remote 监听 OAuth 重定向的端口(默认为 3334),可在服务器 URL 后添加一个额外的参数。请注意,无论您指定哪个端口,如果该端口不可用,系统将随机选择一个可用端口。
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "9696"
      ]
  • 若要更改 mcp-remote 注册为 OAuth 回调 URL 的主机(默认为 localhost),可添加 --host 标志。
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--host",
        "127.0.0.1"
      ]
  • 若要允许在受信任的私有网络中使用 HTTP 连接,可添加 --allow-http 标志。注意:此选项仅应在安全的私有网络中使用,确保流量不会被拦截。
      "args": [
        "mcp-remote",
        "http://internal-service.vpc/sse",
        "--allow-http"
      ]
  • 若要启用详细的调试日志,可添加 --debug 标志。这将在 ~/.mcp-auth/{server_hash}_debug.log 中写入带有时间戳和关于认证过程、连接及令牌刷新等详细信息的日志。
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--debug"
      ]
  • 若要抑制默认日志输出,可添加 --silent 标志。这将阻止日志输出,除非同时传递了 --debug 标志。
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--silent"
      ]
  • 若要为 mcp-remote 启用出站 HTTP(S) 代理,可添加 --enable-proxy 标志。启用后,mcp-remote 将使用常见的环境变量中的代理设置(例如 HTTP_PROXYHTTPS_PROXYNO_PROXY)。
    "args": [
      "mcp-remote",
      "https://remote.mcp.server/sse",
      "--enable-proxy"
    ],
    "env": {
      "HTTPS_PROXY": "http://127.0.0.1:3128",
      "NO_PROXY": "localhost,127.0.0.1"
    }
  • 若要忽略远程服务器上的特定工具,可添加 --ignore-tool 标志。这会从 tools/list 响应中过滤掉与指定模式匹配的工具,并阻止 tools/call 请求。支持使用 * 通配符模式。
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--ignore-tool",
        "delete*",
        "--ignore-tool",
        "remove*"
      ]

您可以指定多个 --ignore-tool 标志来忽略不同的模式。示例:

  • delete*:忽略所有以“delete”开头的工具(如 deleteTaskdeleteUser
  • *account:忽略所有以“account”结尾的工具(如 getAccountupdateAccount
  • exactTool:仅忽略名为“exactTool”的工具
  • 若要更改 OAuth 回调的超时时间(默认为 30 秒),可添加 --auth-timeout 标志,并指定以秒为单位的值。这在服务器端认证过程耗时较长时非常有用。
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--auth-timeout",
        "60"
      ]

传输策略

MCP Remote 在连接到 MCP 服务器时支持不同的传输策略。这使您可以控制是使用 Server-Sent Events (SSE) 还是 HTTP 传输,以及尝试它们的顺序。

通过 --transport 标志指定传输策略:

npx mcp-remote https://example.remote/server --transport sse-only

可用策略:

  • http-first(默认):首先尝试 HTTP 传输,若 HTTP 返回 404 错误,则回退到 SSE。
  • sse-first:首先尝试 SSE 传输,若 SSE 返回 405 错误,则回退到 HTTP。
  • http-only:仅使用 HTTP 传输,若服务器不支持则失败。
  • sse-only:仅使用 SSE 传输,若服务器不支持则失败。

静态 OAuth 客户端元数据

MCP Remote 支持提供静态 OAuth 客户端元数据,而不是使用 mcp-remote 的默认值。这在连接到期望特定客户端/软件 ID 或范围的 OAuth 服务器时非常有用。

可通过 JSON 字符串或以 @ 为前缀的文件路径形式,使用 --static-oauth-client-metadata 标志提供客户端元数据:

npx mcp-remote https://example.remote/server --static-oauth-client-metadata '{ "scope": "space separated scopes" }'
# 使用 node readfile,因此如果您不确定当前工作目录,最好使用绝对路径
npx mcp-remote https://example.remote/server --static-oauth-client-metadata '@/Users/username/Library/Application Support/Claude/oauth_client_metadata.json'

静态 OAuth 客户端信息

根据 规范,服务器被鼓励但并非强制要求支持 OAuth 动态客户端注册

对于这些服务器,MCP Remote 支持提供静态 OAuth 客户端信息。这在连接到需要预先注册客户端的 OAuth 服务器时非常有用。

可通过 JSON 字符串或以 @ 为前缀的文件路径形式,使用 --static-oauth-client-info 标志提供客户端信息:

export MCP_REMOTE_CLIENT_ID=xxx
export MCP_REMOTE_CLIENT_SECRET=yyy
npx mcp-remote https://example.remote/server --static-oauth-client-info "{ \"client_id\": \"$MCP_REMOTE_CLIENT_ID\", \"client_secret\": \"$MCP_REMOTE_CLIENT_SECRET\" }"
# 使用 node readfile,因此如果您不确定当前工作目录,最好使用绝对路径
npx mcp-remote https://example.remote/server --static-oauth-client-info '@/Users/username/Library/Application Support/Claude/oauth_client_info.json'

Claude Desktop

官方文档

要将 MCP 服务器添加到 Claude Desktop,您需要编辑位于以下位置的配置文件:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

如果该文件尚未存在,您可能需要在“设置 > 开发者”中启用它,以添加文件系统 MCP 服务器。

重启 Claude Desktop 以使配置文件中的更改生效。重启后,您应该会在输入框的右下角看到一个锤子图标。

Cursor

官方文档。配置文件位于 ~/.cursor/mcp.json

自版本 0.48.0 起,Cursor 直接支持未认证的 SSE 服务器。如果你的 MCP 服务器使用的是官方的 MCP OAuth 授权协议,则仍需添加一个 "command" 服务器并调用 mcp-remote

Windsurf

官方文档。配置文件位于 ~/.codeium/windsurf/mcp_config.json

构建远程 MCP 服务器

有关构建和部署远程 MCP 服务器(包括作为有效的 OAuth 客户端)的说明,请参阅以下资源:

特别是:

有关测试这些服务器的更多信息,请参阅:

你知道更多想分享的资源吗?请将其添加到此 README 并提交 PR!

故障排除

清除 ~/.mcp-auth 目录

mcp-remote 会将所有凭据信息存储在 ~/.mcp-auth 目录中(或你设置的 MCP_REMOTE_CONFIG_DIR 所指向的目录)。如果问题持续存在,可以尝试运行以下命令:

rm -rf ~/.mcp-auth

然后重新启动你的 MCP 客户端。

检查 Node.js 版本

确保你安装的 Node.js 版本为 18 或更高。Claude Desktop 将使用系统自带的 Node.js 版本,即使你在其他地方安装了更新的版本。

重启 Claude

修改 claude_desktop_config.json 后,完全重启 Claude 可能会有帮助。

VPN 证书

如果你通过 VPN 使用网络,可能会遇到问题。你可以尝试设置 NODE_EXTRA_CA_CERTS 环境变量,使其指向 CA 证书文件。如果使用 claude_desktop_config.json,配置可能如下所示:

{
 "mcpServers": {
    "remote-example": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse"
      ],
      "env": {
        "NODE_EXTRA_CA_CERTS": "{your CA certificate file path}.pem"
      }
    }
  }
}

检查日志

  • 实时跟踪 Claude Desktop 日志
  • macOS / Linux:
    tail -n 20 -F ~/Library/Logs/Claude/mcp*.log
  • 在 WSL 上使用 bash 时:
    tail -n 20 -f "C:\Users\YourUsername\AppData\Local\Claude\Logs\mcp.log"
  • PowerShell:
    Get-Content "C:\Users\YourUsername\AppData\Local\Claude\Logs\mcp.log" -Wait -Tail 20

调试

调试日志

对于复杂的故障排除,尤其是与令牌刷新或身份验证相关的问题,可以使用 --debug 标志:

"args": [
  "mcp-remote",
  "https://remote.mcp.server/sse",
  "--debug"
]

这将在 ~/.mcp-auth/{server_hash}_debug.log 中生成详细的日志文件,包含时间戳以及连接和身份验证过程每一步的完整信息。当遇到令牌刷新、笔记本电脑休眠/唤醒或身份验证问题时,请在寻求支持时提供这些日志。

身份验证错误

如果从 /callback URL 返回以下错误:

Authentication Error
Token exchange failed: HTTP 400

可以运行 rm -rf ~/.mcp-auth 来清除本地存储的状态和令牌。

“客户端”模式

在命令行中运行以下命令(而非从 MCP 服务器运行):

npx -p mcp-remote@latest mcp-remote-client https://remote.mcp.server/sse

这将完成整个授权流程,并尝试列出远程 URL 上的工具和资源。建议在运行 rm -rf ~/.mcp-auth 后执行此操作,以确认问题是否由过期的凭据引起;否则,这些日志应该比 MCP 客户端中的日志更清晰地显示问题所在。

常见问题

相似工具推荐

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|昨天
插件开发框架

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|2天前
图像数据工具视频

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.8k|★★★☆☆|今天
语言模型Agent开发框架

gstack

gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置,旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战,gstack 提供了一套标准化解决方案,帮助开发者实现堪比二十人团队的高效产出。 这套配置特别适合希望提升交付效率的创始人、技术负责人,以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具,涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令(如 `/review` 进行代码审查、`/qa` 执行测试、`/plan-ceo-review` 规划功能),即可自动化处理从需求分析到部署上线的全链路任务。 所有操作基于 Markdown 和斜杠命令,无需复杂配置,完全免费且遵循 MIT 协议。gstack 不仅是一套工具集,更是一种现代化的软件工厂实践,让单人开发者也能拥有严谨的工程流程。

66.4k|★★☆☆☆|今天
Agent插件

gpt4free

gpt4free 是一个由社区驱动的开源项目,旨在聚合多种可访问的大型语言模型(LLM)和媒体生成接口,让用户能更灵活、便捷地使用前沿 AI 能力。它解决了直接调用各类模型时面临的接口分散、门槛高或成本昂贵等痛点,通过统一的标准将不同提供商的资源整合在一起。 无论是希望快速集成 AI 功能的开发者、需要多模型对比测试的研究人员,还是想免费体验最新技术的普通用户,都能从中受益。gpt4free 提供了丰富的使用方式:既包含易于上手的 Python 和 JavaScript 客户端库,也支持部署本地图形界面(GUI),更提供了兼容 OpenAI 标准的 REST API,方便无缝替换现有应用后端。 其技术亮点在于强大的多提供商支持架构,能够动态调度包括 Opus、Gemini、DeepSeek 等多种主流模型资源,并支持 Docker 一键部署及本地推理。项目秉持社区优先原则,在降低使用门槛的同时,也为贡献者提供了扩展新接口的便利框架,是探索和利用多样化 AI 资源的实用工具。

66k|★★☆☆☆|4天前
插件语言模型Agent

meilisearch

Meilisearch 是一个开源的极速搜索服务,专为现代应用和网站打造,开箱即用。它能帮助开发者快速集成高质量的搜索功能,无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果,而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性,并支持 AI 驱动的混合搜索(结合关键词与语义理解),显著提升用户查找信息的体验。 Meilisearch 特别适合 Web 开发者、产品团队或初创公司使用,尤其适用于需要快速上线搜索功能的场景,如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK,部署简单,资源占用低,本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下,为用户提供流畅、智能搜索体验的团队来说,Meilisearch 是一个高效且友好的选择。

57k|★★☆☆☆|今天
图像Agent数据工具