Cloudflare 推出了遠程 MCP Server 部署功能
什麼是 MCP 以及爲什麼它很重要
模型上下文協議 (Model Context Protocol, MCP) 是一種正在迅速普及的協議,它允許 AI 助手 (客戶端) 與外部服務和工具 (服務器) 進行交互。簡單來說,MCP 讓 AI 不再侷限於對話和信息檢索,而是能夠採取實際行動,比如發送電子郵件、部署代碼更改、或發佈博客文章等。
想象一下,你告訴 AI 助手:"幫我預訂下週五的飛機票",而 AI 助手不只是給你提供建議,而是能夠實際訪問航空公司的預訂系統並完成預訂—這就是 MCP 帶來的可能性。
從本地到遠程:MCP 的演變
最近 mcp 異常的火爆,各家也都積極的跟進支持 mcp, 也有很多創業者投身到 mcp 中,
比如一個超厲害的獨立開發者開發的 mcp.so ,不單單是一個 mcp 導航站,也可以在線試用 mcp server 功能
https://mcp.so/playground
還有很多平臺也出來了,比如:
https://mcp.composio.dev/
https://www.mcpt.com
https://zapier.com/mcp
這裏不再一一介紹,關注後面的文章在介紹,今天主要是給大家介紹一下 cloudflare 的方案。
到目前爲止,MCP 主要還是在用戶自己的電腦上本地運行。這意味着:
-
如果你想讓 AI 助手訪問某個網絡工具,你需要在自己電腦上設置 MCP Server
-
你無法從網頁界面或移動應用中使用 MCP
-
缺乏用戶身份驗證和授權的標準方式
Cloudflare 最近宣佈支持遠程 MCP Server。就像從桌面軟件到網絡應用的轉變一樣,遠程 MCP 讓普通互聯網用戶無需安裝複雜軟件就能享受 AI 助手的強大功能。用戶只需登錄,就能在不同設備間無縫切換任務。
Cloudflare 的遠程 MCP Server 解決方案
Cloudflare 提供了四個核心組件,大大簡化了遠程 MCP Server 的構建過程:
-
workers-oauth-provider - 一個 OAuth 提供者庫,簡化授權流程
-
McpAgent - Cloudflare Agents SDK 中的類,處理遠程傳輸
-
mcp-remote - 允許現有 MCP 客戶端連接到遠程服務器的適配器
-
AI playground 作爲遠程 MCP 客戶端 - 一個帶身份驗證的聊天界面,可直接連接遠程 MCP Server
簡化的身份驗證與授權
當構建遠程 MCP Server 時,用戶身份驗證和授權是關鍵挑戰。畢竟,如果 AI 助手要代表用戶執行操作(如發送郵件),它需要得到用戶的許可。
傳統上,OAuth 是解決這個問題的標準協議,但在 MCP 環境中實現 OAuth 相當複雜。Cloudflare 的 workers-oauth-provider 庫負責處理這些複雜性,讓開發者只需關注業務邏輯。
在這個流程中:
-
用戶訪問 MCP 客戶端 (如 AI 助手)
-
客戶端請求連接到遠程 MCP Server
-
服務器引導用戶登錄並授權訪問
-
服務器頒發令牌給客戶端
-
客戶端使用令牌調用 MCP Server 的工具
重要的是,MCP Server 發放的令牌與上游服務 (如 Gmail) 的令牌是分開的,這提高了安全性。如果 MCP 客戶端的令牌被盜,攻擊者只能獲得 MCP Server 明確授權的有限功能,而非完整的上游服務訪問權限。
構建遠程 MCP Server 的代碼示例
以下是使用 Cloudflare Workers 構建 MCP Server 的簡化代碼示例:
import OAuthProvider from "@cloudflare/workers-oauth-provider";import MyMCPServer from "./my-mcp-server";import MyAuthHandler from "./auth-handler";export default new OAuthProvider({ apiRoute: "/sse", // MCP客戶端連接點 apiHandler: MyMCPServer.mount('/sse'), // MCP Server實現 defaultHandler: MyAuthHandler, // 身份驗證實現 authorizeEndpoint: "/authorize", tokenEndpoint: "/token", clientRegistrationEndpoint: "/register",});
這段代碼定義了一個 OAuth 提供者,它會處理授權請求、令牌發放和客戶端註冊,同時集成你的 MCP Server 實現和身份驗證邏輯。
支持狀態持久化的 MCP Server
在 Cloudflare 上構建的 MCP Server 有一個強大特性:每個 MCP 客戶端會話都由 Durable Object 支持,通過 Agents SDK 實現。這意味着每個會話可以管理和持久化自己的狀態,由獨立的 SQL 數據庫支持。
這使得 MCP Server 不再是簡單的無狀態 API 層,而是可以成爲完整的有狀態應用:
import { McpAgent } from "agents/mcp";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
type State = { counter: number }
export class MyMCP extends McpAgent<Env, State, {}> {
server = new McpServer({
name: "Demo",
version: "1.0.0",
});
initialState: State = {
counter: 1,
}
async init() {
this.server.resource(`counter`, `mcp://resource/counter`, (uri) => {
return {
contents: [{ uri: uri.href, text: String(this.state.counter) }],
}
})
this.server.tool('add', '向計數器添加數值', { a: z.number() }, async ({ a }) => {
this.setState({ ...this.state, counter: this.state.counter + a })
return {
content: [{ type: 'text', text: String(`添加了 ${a},總數現在是 ${this.state.counter}`) }],
}
})
}
}
這個簡單的例子實現了一個計數器,它會在多次調用之間記住自己的狀態。你可以構建更復雜的應用,如遊戲、購物車、知識圖譜等。
連接到現有 MCP 客戶端
由於遠程 MCP 還是新興技術,目前許多流行的 MCP 客戶端 (如 Claude Desktop 或 Cursor) 僅支持本地 MCP 連接。爲了橋接這一差距,Cloudflare 提供了兩個工具:
-
** 更新的 Workers AI Playground** - 一個完全支持遠程 MCP 的在線聊天界面,你只需輸入遠程 MCP Server 的 URL 並點擊連接即可使用。
-
**mcp-remote 適配器 ** - 允許現有 MCP 客戶端連接到遠程 MCP Server 的工具。
以下是在 Claude Desktop 中配置 mcp-remote 的示例:
{
"mcpServers": {
"remote-example": {
"command": "npx",
"args": [
"mcp-remote",
"https://remote-server.example.com/sse"
]
}
}
}
**試用一下
**
https://playground.ai.cloudflare.com/
遠程 MCP 的未來展望
遠程 MCP Server 的出現將重塑 AI 應用的開發方式。當更多客戶端應用原生支持遠程 MCP 時,這項技術的受衆將從開發者擴展到普通互聯網用戶,他們甚至不需要知道 MCP 是什麼。
未來,我們可能會看到:
-
大型互聯網公司構建自己的 MCP Server
-
專爲 AI 助手優化的新型企業出現
-
MCP Server 從簡單 API 代理發展爲複雜的有狀態應用
-
消費者通過簡單授權就能讓 AI 助手訪問他們的各種服務
遠程模型上下文協議 (MCP) Server 代表了 AI 應用的下一代發展方向,使 AI 助手能夠安全地訪問互聯網上的各種服務和工具。通過 Cloudflare 的解決方案,開發者現在可以輕鬆構建、部署和管理遠程 MCP Server,爲終端用戶創造更加強大、實用的 AI 體驗。
無論你是開發者還是對 AI 技術感興趣的普通用戶,這一技術都將在未來幾年深刻改變我們與 AI 助手交互的方式。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/AGOwecnm7FUhQj4aLhzjmw