远程MCP服务器模板

一个经过实地测试的模板,用于通过HTTPS公开模型上下文协议(MCP)服务器,使托管AI客户端(如Claude web)能够将其作为远程自定义连接器访问,并包含调试笔记。

  • by ecpunk
  • 本地部署
  • 更新于
在 GitHub 查看 ecpunk/remote-mcp-server

使用说明

远程MCP服务器——模板和字段注释(无身份验证)

一个经过现场测试的模板,用于公开 模型上下文协议(MCP) 通过HTTPS连接服务器,以便托管的AI客户端(例如Claude web)可以作为 远程自定义连接器 --再加上实际连接时的调试说明,这是大部分时间都在使用的地方。

这不是一个框架。它是参考架构、使远程连接器工作的确切握手/代理/CORS细节,以及一个故障模式目录,这些故障模式表现为一个问题,但实际上是另一个问题。

这里有什么

  • MCP_REMOTE_CONNECTOR_TEMPLATE.md --参考架构:TLS终止反向代理后面的MCP进程(流式HTTP),所需 initialize 握手形状,一个可工作的Nginx配置(两者 / 和 /mcp 映射)和逐步验证流程。
  • MCP_LESSONS_LEARNED.md --直播时会遇到11个具体问题,包括人工智能聊天端点注释(实时数据上下文注入、有界服务器端会话内存)。

给谁的

任何站在远程MCP端点上的人,托管的AI客户端都必须跨越网络边界到达该端点——其中最困难的部分是握手有效载荷形状、传输头、CORS、TLS和DNS,而不是工具代码本身。

节省时间最多的课程

  • 握手失败通常是有效载荷形状,而不是协议版本。 完整的 initialize (包括 clientInfo)跨版本成功;缺少的字段显示为“无效的请求参数”
  • 运输集管是承重的。 Accept: application/json, text/event-stream 是必需的--错误 Accept 是直接406。
  • 浏览器CORS是一个真正的连接器门。 当直接curl/服务器检查通过时,UI中的连接器可能会出现故障;允许克劳德网络源(https://claude.ai, https://app.claude.ai)明确。
  • 绘制两者 / 和 /mcp 在代理 --不同的客户端探测不同的路径。
  • 流媒体误导了CLI测试 — curl --max-time 可以报告超时 成功的 初始化;第一次验证 event: message / data: payload,而不是curl退出代码。
  • DNS可以公开正确,也可以在本地错误 --在假设服务器发生故障之前,请检查公共解析器和本地存根。

安全态势

  • 保持运输 仅在适当的时候授权;当连接器或公开的工具允许时,需要OAuth。
  • 永远不要泄露秘密 --在服务器端处理密钥,将凭证文件和特定于部署的详细信息保存在仓库之外。
  • 将MCP端点视为一个暴露的工具表面:有意地作用于工具,并保持运行时更改较小且可逆。

使用它

  1. 在本地端口上运行MCP服务器(流式HTTP)。
  2. 将其置于TLS终止反向代理之后;地图 / 和 /mcp (参见Nginx模板)。
  3. 将Claude网络源代码添加到CORS。
  4. 验证完整 initialize 在本地,然后通过公共URL,确认响应携带 serverInfo + capabilities (见验证流程)。

山宁泰可重用模板——故意省略了特定于部署的细节。