在MCP(Model Context Protocol)Streamable HTTP情境中,需要確保同一MCP會話的請求路由到同一個函數執行個體以保持上下文一致性。MCP Streamable HTTP親和功能基於MCP 2025-03-26和2025-06-18版本協議,系統解析HTTP回應標頭中的Mcp-Session-Id欄位建立會話綁定,將攜帶相同Mcp-Session-Id的請求路由到初始化會話的執行個體,適用於使用MCP Streamable HTTP傳輸的情境。
核心配置
在函數配置頁面的進階配置 > 隔離性、親和性中,開啟會話親和開關,選擇MCP Streamable HTTP 親和,配置單一實例並發 Session 數,確保HTTP觸發器支援GET、POST和DELETE方法,點擊部署即可啟用。
用戶端通過POST請求初始化Session,從回應標頭擷取Mcp-Session-Id,後續請求攜帶此ID即可路由到同一執行個體。
適用範圍
通用限制:請先閱讀會話親和通用限制及原理說明
協議版本要求:支援 MCP 協議版本
2025-03-26和2025-06-18。用戶端與函數必須遵循對應版本的 Transport 層規範。相容性說明:若函數啟用了 MCP Streamable HTTP 親和,則 禁止使用 MCP HTTP with SSE 調用,因會話管理機制不相容,導致調用失敗。
訪問方式限制:僅支援通過 HTTP 觸發器 或 自訂網域名 訪問。
HTTP 觸發器配置要求:必須至少支援
GET、POST和DELETE方法。DELETE 方法必要性:
用戶端可通過DELETE請求主動結束會話。Function Compute將回收該 Session 的資源(包括執行個體並發配額)。若未啟用 DELETE 方法,系統將拒絕請求,導致 Session 無法正常釋放。要求節流:
單一實例可同時處理多個Session(預設20個,最大200個),當單一實例下綁定的Session數達到上限時,系統自動建立新執行個體
多個Session共用執行個體的200並發度配額(SSE長串連和POST請求共用)
不支援 SessionAPI 管理。
配置MCP Streamable HTTP親和
流程概述
配置MCP Streamable HTTP親和包括四個步驟:開啟會話親和、選擇MCP Streamable HTTP類型、配置HTTP觸發器、配置參數並部署。需要確保函數代碼實現MCP協議規範。
開啟會話親和
進入函數列表,選擇目標函數或建立函數
建立函數時,可以直接在進階配置地區,找到隔離性、親和性配置項,進行後續配置後建立
在函數詳情頁面,點擊配置標籤頁
在進階配置地區,找到隔離性、親和性配置項
點擊隔離性、親和性,展開配置面板
開啟會話親和開關
選擇MCP Streamable HTTP親和類型
在會話親和配置地區,選擇MCP Streamable HTTP 親和選項按鈕
系統自動顯示MCP Streamable HTTP親和的配置選項
配置HTTP觸發器
目的:確保HTTP觸發器支援MCP Streamable HTTP協議所需的要求方法。
操作步驟:
在函數詳情頁面,點擊觸發器標籤頁
檢查或建立HTTP觸發器
確保觸發器支援以下要求方法:
GET:用於SSE長串連(可選)
POST:用於MCP請求和Session初始化(必需)
DELETE:用於終止Session(必需)
配置會話參數
目的:設定Session數量、生命週期和空閑時間長度,控制會話綁定和資源使用。
操作步驟:
單一實例並發 Session 數:設定單一實例可同時處理的最大Session數
預設值:20
取值範圍:1-200
建議:測試情境可設定為較小值(如10),生產環境根據業務需求調整;
單個 Session 生命週期:設定Session從建立到銷毀的最長時間長度
預設值:21600秒(6小時)
說明:超過此時間後,系統自動銷毀Session,不再保證親和性
Session Idle時間長度:設定Session空閑多長時間後自動銷毀
預設值:1800秒(30分鐘)
說明:執行個體無請求超過此時間長度,Session進入空閑狀態並自動銷毀
點擊部署按鈕儲存配置
重要提示:
開啟會話親和後,系統會自動將單一實例並發度調整為200(系統預設值,不可手動調整)
確保HTTP觸發器支援GET、POST和DELETE方法,DELETE方法用於終止Session
驗證MCP Streamable HTTP親和配置
請參考 MCP官方文檔Build an MCP client,可使用Function Compute提供的預設 http 觸發器網域名稱或自訂網域名,通過標準的 MCP Client向函數發起請求,驗證親和配置。
常見問題
為什麼MCP Streamable HTTP親和不生效?
可能原因:
HTTP觸發器未支援GET、POST和DELETE方法
未通過MCP標準協議發送請求
排查步驟:
檢查HTTP觸發器是否支援GET、POST和DELETE方法
請使用標準 MCP Streamable協議請求
如何終止Session?
方法:
用戶端通過DELETE請求終止Session
要求標頭中需要攜帶
Mcp-Session-Id欄位系統清除平台側會話並釋放資源