MCP Streamable HTTP 的 Origin 头校验:为什么浏览器页面能跨站调用本地 MCP 服务
本地 MCP Server 监听 localhost 时,若服务端不校验 Origin 头,任意网页都可能借 DNS rebinding 发起工具调用。本文以本地代码执行工具为场景,拆解 Origin 校验的作用点、校验过宽与缺失时的攻击路径,并对比回环绑定与令牌鉴权的边界。
聊技术,也聊那些值得认真琢磨的生活小事。
本地 MCP Server 监听 localhost 时,若服务端不校验 Origin 头,任意网页都可能借 DNS rebinding 发起工具调用。本文以本地代码执行工具为场景,拆解 Origin 校验的作用点、校验过宽与缺失时的攻击路径,并对比回环绑定与令牌鉴权的边界。
新运动鞋在光滑地面上走路会发出吱吱声,有人以为是鞋底太干净或抓地力好。这篇文章从鞋底与地面的微观接触讲起,解释橡胶摩擦中的粘滑振动如何让鞋体发声,并说明地面材质、花纹、湿度怎样改变声音,以及怎样把正常响声和鞋底老化、贴合不良区分开。
远程 MCP Server 同时支持 SSE 流与 JSON 单次响应时,客户端 POST 请求的 Accept 头必须同时列出两种媒体类型。本文解释服务端据此选择响应形态的机制,分析 Accept 缺失或不匹配导致 406 拒绝与响应降级的失败模式,并给出校验点与可观测指标。
冬天用厚玻璃杯倒开水,杯子有时会从内壁裂开。文章从这一现象出发,说明玻璃内外表面受热不均如何产生温差、热膨胀差怎样变成拉应力,解释厚壁杯为何反而更易裂、硼硅玻璃为何更耐热冲击,并给出温杯等安全做法。
批量发送 MCP 请求时,服务端可以并发处理并按任意顺序返回响应。本文从一次并行读取多个资源的客户端场景出发,解释 JSON-RPC 2.0 的 id 配对规则、服务端并发导致乱序的机制、id 重复或缺失时错配的具体表现,并给出校验点、可观测指标与逐条请求方案的取舍。
炒菜时锅底滴水,蓝色火苗常会突然发黄。这篇文章从一次空气预混、火孔出气到碳烟热辐射,说明空燃比如何决定火焰颜色,并解释风门、火盖堵塞与溢水的影响,以及黄焰积碳和一氧化碳风险。
远程 MCP Server 执行查询工具时,把参数校验失败、业务空结果和传输异常都塞进 isError 或 content 文本,会让客户端与模型无法区分可重试与不可重试。本文拆解 CallToolResult 中 isError 的定位、错误分类混用的失效机制,对比结构化错误码方案,并给出校验点与可观测指标。
自动伞按一次弹开、再按一次收拢,看起来像同一个按钮在做两件事。本文从伞杆里的压缩弹簧和卡扣出发,拆解开伞与收伞的机械时序,说明弹簧疲劳、卡扣磨损为何导致弹不开或收不回,并给出强风使用与儿童操作的边界。
本地 MCP Server 通过 stdio 返回多行工具结果时,客户端常出现 JSON 解析失败或消息粘连。文章从规范对换行分隔帧的约束出发,分析服务端拼接原始文本、客户端按行切分的错位机制,并给出校验点、可观测指标与替代帧格式的取舍。
烤箱门半开时能悬停,轻推才继续下落,靠的是铰链里的拉簧与摩擦片共同作用。本文从这一日常现象出发,解释弹簧如何平衡门体重量、摩擦阻尼如何补偿误差,以及弹簧疲劳或铰链积油后门为何会突然下坠,并说明为什么不应自行拆解带弹簧的铰链。