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 主要還是在用戶自己的電腦上本地運行。這意味着:

Cloudflare 最近宣佈支持遠程 MCP Server。就像從桌面軟件到網絡應用的轉變一樣,遠程 MCP 讓普通互聯網用戶無需安裝複雜軟件就能享受 AI 助手的強大功能。用戶只需登錄,就能在不同設備間無縫切換任務。

Cloudflare 的遠程 MCP Server 解決方案

Cloudflare 提供了四個核心組件,大大簡化了遠程 MCP Server 的構建過程:

  1. workers-oauth-provider - 一個 OAuth 提供者庫,簡化授權流程

  2. McpAgent - Cloudflare Agents SDK 中的類,處理遠程傳輸

  3. mcp-remote - 允許現有 MCP 客戶端連接到遠程服務器的適配器

  4. AI playground 作爲遠程 MCP 客戶端 - 一個帶身份驗證的聊天界面,可直接連接遠程 MCP Server

簡化的身份驗證與授權

當構建遠程 MCP Server 時,用戶身份驗證和授權是關鍵挑戰。畢竟,如果 AI 助手要代表用戶執行操作(如發送郵件),它需要得到用戶的許可。

傳統上,OAuth 是解決這個問題的標準協議,但在 MCP 環境中實現 OAuth 相當複雜。Cloudflare 的 workers-oauth-provider 庫負責處理這些複雜性,讓開發者只需關注業務邏輯。

在這個流程中:

  1. 用戶訪問 MCP 客戶端 (如 AI 助手)

  2. 客戶端請求連接到遠程 MCP Server

  3. 服務器引導用戶登錄並授權訪問

  4. 服務器頒發令牌給客戶端

  5. 客戶端使用令牌調用 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 提供了兩個工具:

  1. ** 更新的 Workers AI Playground** - 一個完全支持遠程 MCP 的在線聊天界面,你只需輸入遠程 MCP Server 的 URL 並點擊連接即可使用。

  2. **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 應用的下一代發展方向,使 AI 助手能夠安全地訪問互聯網上的各種服務和工具。通過 Cloudflare 的解決方案,開發者現在可以輕鬆構建、部署和管理遠程 MCP Server,爲終端用戶創造更加強大、實用的 AI 體驗。

無論你是開發者還是對 AI 技術感興趣的普通用戶,這一技術都將在未來幾年深刻改變我們與 AI 助手交互的方式。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/AGOwecnm7FUhQj4aLhzjmw