MCP在网络协议上和http是什么关系? 为什么MCP服务器的服务可以使用Nginx代理?
MCP 与 HTTP 的关系及 Nginx 代理原理
MCP 与 HTTP 的关系
MCP(Model Context Protocol)在网络协议上与 HTTP 既有区别又有联系:
1. 协议层级关系
MCP 不是替代 HTTP 的协议,而是在其之上构建的专门协议:
text
应用层: MCP协议 ← 这是专门为AI交互设计的协议 传输层: WebSocket/SSE/HTTP ← 这些是MCP可以使用的传输机制 网络层: TCP/IP
2. MCP 可以使用多种传输机制
MCP 设计为协议无关,可以通过多种方式传输:
-
WebSocket (最常用)
-
Server-Sent Events (SSE)
-
标准输入/输出 (本地开发)
-
自定义传输层
3. 与 HTTP 的关系
-
MCP 消息通常通过 HTTP 升级的 WebSocket 连接传输
-
MCP 可以使用 HTTP 进行初始握手和认证
-
MCP 定义了自己的消息格式和语义,独立于传输层
为什么 MCP 服务器可以使用 Nginx 代理
Nginx 可以代理 MCP 服务的原因在于:
1. WebSocket 代理支持
Nginx 从 1.3.13 版本开始支持 WebSocket 代理,这正是 MCP 常用的传输方式:
nginx
# Nginx WebSocket 代理配置
server {
listen 443 ssl;
server_name mcp.example.com;
location /mcp/ {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
# 保持连接活跃
proxy_read_timeout 1d;
proxy_send_timeout 1d;


959

被折叠的 条评论
为什么被折叠?



