偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MCP Streamable HTTP Transport 與 SSE:專用通道與通用協(xié)議的辨析,內(nèi)附MCP的示例代碼

人工智能
一個(gè)應(yīng)用層傳輸機(jī)制這是 Model Context Protocol 規(guī)范中定義的一種傳輸方式,用于在 MCP 客戶端與服務(wù)器之間交換結(jié)構(gòu)化的消息(如工具調(diào)用、結(jié)果、資源列表等)。它不是一個(gè)像 SSE 那樣的獨(dú)立協(xié)議,而是 MCP 這個(gè)特定應(yīng)用協(xié)議之上的一個(gè)實(shí)現(xiàn)約定。

一、MCP Streamable HTTP Transport 與 SSE:技術(shù)選型辨析

在構(gòu)建需要實(shí)時(shí)數(shù)據(jù)流的AI應(yīng)用時(shí),MCP 的 Streamable HTTP Transport 和傳統(tǒng)的 Server-Sent Events 是兩種常見(jiàn)的備選方案。雖然它們都旨在實(shí)現(xiàn)服務(wù)器到客戶端的單向數(shù)據(jù)推送,但其設(shè)計(jì)目標(biāo)、協(xié)議層級(jí)和應(yīng)用場(chǎng)景有著本質(zhì)區(qū)別。

核心定義

  • SSE:一種 Web 標(biāo)準(zhǔn)協(xié)議SSE 是一個(gè)基于 HTTP 的輕量級(jí)標(biāo)準(zhǔn)。它允許服務(wù)器通過(guò)一個(gè)持久的 HTTP 連接,主動(dòng)向客戶端(通常是瀏覽器)推送格式化的文本數(shù)據(jù)流。其核心特點(diǎn)是簡(jiǎn)單、易用,是 Web 生態(tài)的原生組成部分。
  • MCP Streamable HTTP Transport:一個(gè)應(yīng)用層傳輸機(jī)制這是 Model Context Protocol 規(guī)范中定義的一種傳輸方式,用于在 MCP 客戶端與服務(wù)器之間交換結(jié)構(gòu)化的消息(如工具調(diào)用、結(jié)果、資源列表等)。它不是一個(gè)像 SSE 那樣的獨(dú)立協(xié)議,而是 MCP 這個(gè)特定應(yīng)用協(xié)議之上的一個(gè)實(shí)現(xiàn)約定。

主要區(qū)別總結(jié)

特性

MCP Streamable HTTP Transport

Server-Sent Events

協(xié)議層級(jí)

應(yīng)用層協(xié)議(MCP)的傳輸實(shí)現(xiàn)

網(wǎng)絡(luò)通信標(biāo)準(zhǔn)協(xié)議

數(shù)據(jù)格式

承載的是結(jié)構(gòu)化的 MCP 消息(JSON-RPC-like)。

傳輸?shù)氖羌兾谋玖?,格式遵?nbsp;data:event: 等字段的規(guī)范。

設(shè)計(jì)目標(biāo)

專門(mén)為 MCP 客戶端-服務(wù)器間雙向通信的“單向流”部分 而設(shè)計(jì)。例如,流式傳輸一個(gè)工具調(diào)用的執(zhí)行日志或進(jìn)度更新。

為 通用的服務(wù)器到客戶端(尤其是瀏覽器)事件推送 而設(shè)計(jì)。

連接方向

在 MCP 中,它通常用于服務(wù)器向客戶端推送流數(shù)據(jù),但其底層連接本身可能由客戶端發(fā)起的一個(gè)請(qǐng)求(如帶 Accept: text/plain 的 GET 請(qǐng)求)來(lái)建立。

嚴(yán)格的單向通信

:服務(wù)器 -> 客戶端??蛻舳送ㄟ^(guò)一個(gè)普通的 HTTP GET 請(qǐng)求發(fā)起連接,然后服務(wù)器持續(xù)推送。

生態(tài)與兼容性

與 MCP 生態(tài)系統(tǒng)強(qiáng)綁定,主要用于 AI 應(yīng)用與外部服務(wù)(如數(shù)據(jù)庫(kù)、文件系統(tǒng))的橋接。

廣泛支持

,是所有現(xiàn)代瀏覽器的內(nèi)置功能,也可用于任何 HTTP 客戶端。通用性極強(qiáng)。

結(jié)論與選型建議

簡(jiǎn)單來(lái)說(shuō),可以將兩者的關(guān)系理解為 “專用車(chē)”與“通用零部件”。

  • SSE 是一個(gè)“通用零部件”:它是一種解決“如何從服務(wù)器向客戶端持續(xù)發(fā)送數(shù)據(jù)”這個(gè)通用問(wèn)題的標(biāo)準(zhǔn)化方案。你可以在任何需要此功能的 Web 應(yīng)用或服務(wù)中使用它。
  • MCP Streamable HTTP Transport 是一輛“專用車(chē)”:它是在 MCP 這個(gè)特定框架下,為了解決“如何將服務(wù)器端的結(jié)構(gòu)化數(shù)據(jù)(如日志、進(jìn)度)流式傳輸給 MCP 客戶端”這個(gè)具體問(wèn)題而設(shè)計(jì)的。它很可能在內(nèi)部使用了類似 SSE 的機(jī)制(例如,通過(guò)一個(gè)持久的 HTTP 響應(yīng)流),但其之上承載的數(shù)據(jù)是 MCP 協(xié)議專屬的。

因此,你的選擇取決于你的目標(biāo):

  • 如果你正在 開(kāi)發(fā)或使用 MCP 服務(wù)器,并需要實(shí)現(xiàn)流式輸出(如實(shí)時(shí)日志),那么你需要遵循 MCP Streamable HTTP Transport 的規(guī)范。
  • 如果你需要在 一個(gè)普通的 Web 應(yīng)用或后端服務(wù) 中實(shí)現(xiàn)簡(jiǎn)單的服務(wù)器推送功能(如新聞推送、狀態(tài)更新),那么 SSE 是一個(gè)成熟、簡(jiǎn)單且標(biāo)準(zhǔn)的選擇。

二、MCP Streamable HTTP Transport 示例代碼

創(chuàng)建虛擬環(huán)境及安裝mcp依賴包

conda create -n mcp_demo  python=3.12


conda activate mcp_demo
pip install uv




uv pip install "mcp[cli]"

運(yùn)行服務(wù)端代碼

server_demo.py

https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/streamable_config.py

"""
Run from the repository root:
    uv run examples/snippets/servers/streamable_config.py
"""


from mcp.server.fastmcp import FastMCP


# Stateful server (maintains session state)
mcp = FastMCP("StatefulServer")


# Other configuration options:
# Stateless server (no session persistence)
# mcp = FastMCP("StatelessServer", stateless_http=True)


# Stateless server (no session persistence, no sse stream with supported client)
# mcp = FastMCP("StatelessServer", stateless_http=True, json_response=True)




# Add a simple tool to demonstrate the server
@mcp.tool()
def greet(name: str = "World") -> str:
    """Greet someone by name."""
    return f"Hello, {name}!"




# Run server with streamable_http transport
if __name__ == "__main__":
    mcp.run(transport="streamable-http")

啟動(dòng)成功!

運(yùn)行客戶端獲取工具列表:

client_demo.py

https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/clients/streamable_basic.py

"""
Run from the repository root:
    uv run examples/snippets/clients/streamable_basic.py
"""


import asyncio


from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client




async def main():
    # Connect to a streamable HTTP server
    async with streamablehttp_client("http://127.0.0.1:8000/mcp") as (
        read_stream,
        write_stream,
        _,
    ):
        # Create a session using the client streams
        async with ClientSession(read_stream, write_stream) as session:
            # Initialize the connection
            await session.initialize()
            # List available tools
            tools = await session.list_tools()
            print(f"Available tools: {[tool.name for tool in tools.tools]}")




if __name__ == "__main__":
    asyncio.run(main())

獲取到了服務(wù)端的工具列表:

圖片圖片

參考文檔:https://github.com/modelcontextprotocol/python-sdk.git

責(zé)任編輯:武曉燕 來(lái)源: AI小新
相關(guān)推薦

2025-10-28 04:11:00

MCPHTTP 協(xié)議Bearer 認(rèn)證

2025-10-10 09:21:16

MCPHTTP協(xié)議Streamable

2025-08-21 07:07:49

2025-04-02 03:55:00

MCPAI智能體

2025-06-26 08:19:16

2025-04-17 08:42:38

2025-04-18 00:00:00

MCPSSEHTTP

2025-05-21 08:27:54

MCP模型上下文協(xié)議MCP服務(wù)器

2025-03-26 03:00:00

MCPAI應(yīng)用

2025-07-08 08:29:46

MCP協(xié)議AI

2025-08-11 02:00:00

2025-08-27 01:33:00

2025-07-22 09:23:56

DifySpringAI

2025-09-24 10:21:11

2025-04-29 01:30:00

MCPAIWiFi

2022-11-27 23:37:33

Agent對(duì)象存儲(chǔ)

2025-07-31 09:02:21

2025-10-27 01:22:00

MCPAPI網(wǎng)關(guān)

2025-05-20 02:11:00

2014-10-22 09:36:41

TCPIP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)