从写代码到过 DNS 认证进官方注册中心,全程踩坑记录。
在线服务:
https://savantcat.cn/mcp| 注册名:cn.savantcat/answers
起因
2026 年 9 月 1 日,GB/T 47746—2026《顾客联络服务 人工与智能客户服务协同要求》正式实施。
我把它的合规要点整理成了一份结构化的问答库:哪些场景必须自动转人工、上线要走备案还是登记、知识库怎么切分……每条答案带条款依据。
整理完发现一个问题:它是文档,只有人能读。 而企业里越来越多的活是 Agent 在干。
所以决定把它暴露成 MCP,让任何 Agent 直接调用。
一、技术选型
MCP 官方 Python SDK,用 streamable-http 传输、无状态模式。
mcp >= 1.9 transport: streamable-http (stateless)
选无状态的原因:远程部署时不需要维护 session,任何客户端一次 POST 就能拿到结果,横向扩展也简单。
启动态形:
server.run(
transport="http",
host="127.0.0.1",
port=8765,
stateless=True,
)
Nginx 侧只需要一条精确匹配,把 /mcp 转发进去:
location = /mcp {
proxy_pass http://127.0.0.1:8765;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_buffering off; # SSE 必须关,否则响应被缓冲住
}
proxy_buffering off 是关键。streamable-http 返回的是 text/event-stream,开着缓冲会导致客户端一直等不到数据。
二、踩坑一:421 Invalid Host header
服务本地跑得好好的,域名访问直接:
421 Invalid Host header
原因:MCP SDK 内置了 DNS rebinding 防护。默认只信任 localhost,请求头里的 Host 不是它认识的,一律拒绝。
这是好事,说明 SDK 默认是安全的。修法是显式声明信任的域名:
from mcp.server.transport_security import Transp
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_44530853/article/details/165239777




