Cloudflare adopte le MCP à distance : étendre les capacités des agents d'intelligence artificielle à l'ensemble de l'Internet

Cloudflare 拥抱远程 MCP:将 AI Agent 能力推向更广阔的互联网

en cours de construction AI Applications et Agent Le cercle des protocoles de contexte de modèle (Model Context ProtocolMCP) est en train de devenir un sujet brûlant. La plupart des discussions portent sur l'installation et l'exécution sur un ordinateur local de l'application MCP Déploiement du serveur. Récemment.Cloudflare a annoncé une aide à la construction et au déploiement sur sa plateformeà distance MCP qui marque l'entrée en vigueur de la MCP Un tournant important dans l'application.

Cloudflare Pour simplifier l'accès à distance MCP Le serveur est conçu pour présenter quatre capacités clés :

  1. workers-oauth-provider: a OAuth qui simplifie considérablement le processus d'autorisation nécessaire pour les services à distance.
  2. McpAgent: intégré dans le système d'information de l'UE Cloudflare Agents SDK Une classe dans le MCP Les détails de la téléportation de la
  3. mcp-remote: un outil d'adaptation qui permet aux utilisateurs ayant une connexion locale seulement de se connecter à l'Internet. MCP Le client peut également communiquer avec le serveur distant MCP Interaction avec le serveur.
  4. AI playground à distance MCP client (informatique): une interface de chat en ligne permet de se connecter directement et de tester des systèmes à distance. MCP avec des contrôles d'authentification intégrés.

Les développeurs peuvent utiliser l'outil Cloudflare L'exemple de code et le bouton de déploiement fournis permettent, en un rien de temps, de placer un MCP Le serveur est déployé dans l'environnement de production.

https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-server

 

Contrairement à ce qui se passait auparavant avec les MCP Le serveur est différent, et le serveur distant MCP Le serveur est accessible au public. Les utilisateurs se connectent simplement et accordent des permissions par le biais d'un processus d'autorisation familier.MCP Les clients (par exemple AI Agent) pourront accéder aux outils nécessaires. Il s'agit là d'un grand pas en avant. Au cours des derniers mois, il a été difficile de mettre en place les outils de codage et de gestion de l'information. Agent Connexion au réseau local MCP ont donné aux développeurs un premier aperçu de leur potentiel, et les serveurs à distance de la MCP À son tour, il devrait permettre d'étendre un modèle de travail similaire à un groupe plus large d'utilisateurs, y compris à des scénarios d'application plus quotidiens pour le grand public. Il ne s'agit pas seulement d'une différence de mise en œuvre technique, mais d'un signe avant-coureur de l'évolution des technologies de l'information et de la communication. AI Agent Un changement fondamental dans le paradigme de l'application.

 

Du local au distant : une étape cruciale pour que MCP atteigne le plus grand nombre

MCP devient rapidement un protocole universel qui permet d'utiliser de grands modèles linguistiques (LLMLa capacité à aller au-delà du simple raisonnement (inference) et la génération d'amélioration de la recherche (RAG) qui peut effectuer des opérations nécessitant un accès à des ressources externes (par exemple, envoyer des courriels, déployer du code, publier des blogs, etc.) ). AI Agent (MCP ) est accessible par l'intermédiaire d'un service externe (MCP ) pour interagir avec les outils et les ressources fournis par le serveur.

Toutefois, à ce jour, laMCP sont principalement limitées à un fonctionnement local. Si vous souhaitez que l'application AI Agent faire passer (un projet de loi, une inspection, etc.) MCP Pour accéder à un outil sur le web, les développeurs doivent généralement installer un serveur local sur leur propre machine. Cela signifie qu'il n'est pas possible d'utiliser une interface web ou une application mobile à partir de l'ordinateur de l'utilisateur. MCPIl manque également des mécanismes permettant aux utilisateurs ordinaires de s'authentifier et de s'autoriser.MCP Le serveur n'est pas réellement "en ligne".

Cloudflare 拥抱远程 MCP:将 AI Agent 能力推向更广阔的互联网

hors site MCP Le support connecté change la donne. Il permet d'atteindre un plus grand nombre d'utilisateurs d'Internet qui sont moins susceptibles de se rendre sur une installation locale et d'exécuter des applications de bureau uniquement pour utiliser le site Web de l'Union européenne. MCP Serveur. A distance MCP comme s'il s'agissait de passer d'un logiciel de bureau à un logiciel de bureau. Web Transition des logiciels. Les utilisateurs s'attendent à travailler en continu sur tous les appareils et à ce que tout fonctionne lorsqu'ils se connectent. Local MCP C'est pratique pour les développeurs, mais c'est la connexion à distance qui fait la différence. MCP Le chaînon manquant essentiel pour que les services atteignent tous les utilisateurs de l'internet. Bien entendu, les connexions à distance doivent également tenir compte de l'impact possible de la latence du réseau, qui diffère de la latence locale. stdio La communication est différente.

Cloudflare 拥抱远程 MCP:将 AI Agent 能力推向更广阔的互联网

 

Faire en sorte que l'authentification et l'autorisation fonctionnent "out of the box" dans MCP

commandant en chef (militaire) MCP Le passage du local au distant ne se résume pas à un simple changement de couche de transport (de la couche stdio à l'écoulement HTTP). Lors de la création d'une application à distance nécessitant l'accès à des informations de compte d'utilisateur MCP le serveur d'authentification (authentication) et les autorisations (par exempleauthorization) est devenu essentiel. Il faut que les utilisateurs puissent se connecter et prouver leur identité, et qu'ils aient la possibilité de contrôler l'accès à l'information. AI Agent Ce à quoi on peut accéder en utilisant le service.

MCP La spécification utilise le OAuth 2.0 pour résoudre ce problème.OAuth est un protocole standard qui permet aux utilisateurs d'autoriser des applications à accéder à leurs informations ou services sans partager leurs mots de passe. Dans le cadre de la MCP Scénario.MCP Le serveur lui-même joue OAuth Provider rôle. Toutefois, la réalisation complète en elle-même est conforme à l'objectif de l'UE en matière d'environnement. MCP formel OAuth Le processus est assez complexe et sujet aux erreurs.Cloudflare Les programmes proposés sont conçus pour répondre à ce problème.

workers-oauth-providerBibliothèque de fournisseur OAuth 2.1 personnalisée pour les travailleurs de Cloudflare

Lorsque le développeur se trouve dans le Cloudflare se déploie au-dessus de MCP lorsque son Worker Il est possible d'utiliser workers-oauth-provider Cette nouvelle TypeScript Bibliothèque pour agir en tant que OAuth Provider. La bibliothèque encapsule les Worker Code pour API Critères d'évaluation (y compris, mais sans s'y limiter) MCP ) a ajouté une couche d'autorisation.

MCP Le serveur reçoit les informations de l'utilisateur authentifié directement en tant que paramètre et n'a pas besoin d'effectuer lui-même la validation ou la gestion des jetons. Dans le même temps, le développeur conserve un contrôle total sur la manière dont l'utilisateur est authentifié : à partir de l'écran de connexion (UI), le fournisseur d'identité à choisir (par ex. GoogleGitHub (ou créez votre propre système).

complet MCP OAuth La procédure est la suivante :

Cloudflare 拥抱远程 MCP:将 AI Agent 能力推向更广阔的互联网

Dans ce processus, leMCP Le serveur est à la fois un service en amont (par ex. GitHubGoogle(souligné par l'auteur) OAuth Les clients, quant à eux, sont orientés vers MCP Les clients (par exemple AI Agent(souligné par l'auteur) OAuth Serveur (Provider). Les développeurs peuvent utiliser n'importe quel processus d'authentification en amont, et l'option workers-oauth-provider sécurisé MCP Conformité des serveurs MCP Spécification des exigences en matière d'autorisation pour travailler avec un large éventail d'applications clients et de sites web. Cela inclut la prise en charge de l'enregistrement dynamique des clients (RFC 7591) et les métadonnées du serveur d'autorisation (RFC 8414). L'utilisation de cette bibliothèque réduit considérablement la complexité du développement et améliore la sécurité et la conformité par rapport à l'auto-implémentation.

Interface OAuth simple et enfichable

utiliser Cloudflare Workers construire (qqch abstrait) MCP le développeur n'a qu'à fournir le OAuth Provider Exemples de chemins connexes (autorisation, jetons, points finaux d'enregistrement du client), et MCP Processeur pour le serveur et la logique d'authentification (handler) :

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 服务器实现
defaultHandler: MyAuthHandler, // 认证实现
authorizeEndpoint: "/authorize",
tokenEndpoint: "/token",
clientRegistrationEndpoint: "/register",
});

Cette abstraction facilite l'insertion d'une logique d'authentification personnalisée. Par exemple, une application qui utilise la fonction GitHub en tant que fournisseur d'identité MCP qui peut être utilisé en mettant en œuvre la méthode /callback répondre en chantant /authorize l'intégration en moins de 100 lignes de code.

Pourquoi les serveurs MCP émettent-ils leur propre jeton ?

Dans le schéma d'autorisation ci-dessus et MCP La partie de la norme relative à l'autorisation mérite d'être soulignée MCP Le serveur enverra un message au MCP Le client émet ses propres Tokenau lieu de transmettre directement le service en amont à partir duquel le Token.

En particulier.Worker Le jeton d'accès obtenu en amont (access token) Stockage crypté (par exemple, à l'aide de Workers KV), puis de générer et d'émettre un nouveau document autonome, le Token au profit de MCP Client.workers-oauth-provider La bibliothèque gère ce processus automatiquement, et le code du développeur n'a pas besoin de toucher directement le jeton en amont en texte clair ni de gérer le stockage lui-même, ce qui permet d'éviter les risques de sécurité potentiels.

// 调用 completeAuthorization 时传入的 accessToken 会被加密存储,绝不会暴露给 MCP 客户端
// 一个新的、独立的 token 会在 /token 端点生成并提供给客户端
const { redirectTo } = await c.env.OAUTH_PROVIDER.completeAuthorization({
request: oauthReqInfo,
userId: login,
metadata: { label: name },
scope: oauthReqInfo.scope,
props: {
accessToken,  // 加密存储,不发送给 MCP 客户端
},
})
return Response.redirect(redirectTo)

À première vue, cette approche indirecte semble plus complexe. Pourquoi est-elle ainsi conçue ?

En émettant ses propres Token(math.) genreMCP Les serveurs peuvent appliquer un contrôle d'accès plus fin que les fournisseurs en amont. Même lorsqu'ils sont délivrés à des MCP côté client Token compromis, et l'attaquant obtient l'accès à cette seule MCP Autorisations limitées explicitement accordées par le serveur (par l'intermédiaire de la fonction tools), plutôt qu'un accès complet au service en amont.

Par exemple, supposons qu'un MCP Le serveur demande à l'utilisateur l'autorisation de lire Gmail Autorisations pour le courrier (en utilisant gmail.readonly scope). Cependant, le serveur expose le tool La fonctionnalité est plus restreinte, puisqu'elle permet de lire uniquement la notification de réservation de voyage d'un expéditeur spécifique afin de répondre à des questions telles que "Quelle est l'heure de départ de mon hôtel demain ? etc. Les développeurs peuvent ajouter la fonction MCP Cette contrainte est appliquée par le serveur. Si elle est émise à l'intention du MCP côté client Token Volé, comme le Token Correspond à MCP plutôt que le fournisseur initial en amont (Google), l'attaquant ne peut pas l'utiliser pour lire des courriels arbitraires et ne peut qu'appeler la fonction MCP les outils spécifiques fournis par le serveur.OWASP Pour remplacer le terme "sur-agent" (Excessive Agency) est répertorié comme construit AI l'un des principaux risques de l'application. En émettant ses propres Token et l'application de mesures de restriction.MCP Le serveur peut restreindre l'accès à l'outil pour ne fournir que les fonctionnalités requises par le client, selon le principe du moindre privilège.

Un autre exemple, basé sur le GitHub vous pouvez forcer certains utilisateurs à accéder à un outil. Dans l'exemple suivant, seuls les utilisateurs figurant sur la liste blanche (geelen) afin de voir et d'appeler le generateImage qui utilise l'outil Workers AI Suivez les instructions pour générer une image :

import { McpAgent } from "agents/mcp";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
const USER_ALLOWLIST = new Set(["geelen"]); // 使用 Set 提高查找效率
export class MyMCP extends McpAgent<Props, Env> {
server = new McpServer({
name: "Github OAuth Proxy Demo",
version: "1.0.0",
});
async init() {
// 根据用户身份动态添加工具
if (USER_ALLOWLIST.has(this.props.login)) {
this.server.tool(
'generateImage',
'使用 flux-1-schnell 模型生成图像。',
{
prompt: z.string().describe('你想要生成的图像的文本描述。')
},
async ({ prompt }) => {
const response = await this.env.AI.run('@cf/black-forest-labs/flux-1-schnell', {
prompt,
steps: 8
});
// 检查 response.image 是否存在
if (!response.image) {
throw new Error("图像生成失败,未返回图像数据。");
}
return {
content: [{ type: 'image', data: response.image, mimeType: 'image/jpeg' }],
}
}
)
}
}
}

 

Introduction de McpAgent : compatible avec la téléportation actuelle et future

commandant en chef (militaire) MCP L'étape suivante pour faire sortir la machine locale consiste à ouvrir la couche de transport à distance. La couche de transport MCP Les serveurs sont généralement configurés avec des entrées et sorties standard (stdio) pour communiquer, mais laisser le MCP peuvent être invoqués sur l'internet, il est nécessaire de mettre en œuvre un protocole de téléportation, qui est actuellement basé sur le projet de spécification HTTP (utilisé comme expression nominale) Server-Sent Events (SSE).

Cloudflare dans son Agents SDK vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide vide McpAgent gère la complexité de la téléportation. Elle le fait en arrière-plan en utilisant la fonction Durable Objects pour maintenir une connexion persistante, ce qui rend le MCP Le client peut transmettre le SSE vers MCP Le serveur envoie le message. Le développeur ne doit pas écrire le code sous-jacent qui gère la transmission ou la sérialisation. Un système minimaliste MCP Le serveur peut être mis en œuvre avec seulement une douzaine de lignes de code :

import { McpAgent } from "agents/mcp";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
export class MyMCP extends McpAgent {
server = new McpServer({
name: "Demo",
version: "1.0.0",
});
async init() {
this.server.tool("add", "计算两个数字的和", { a: z.number(), b: z.number() }, async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}));
}
}

Il convient de noter qu'à la suite de discussions au sein de la communautéMCP Le téléport dans le cahier des charges est en cours de révision et il est prévu d'utiliser le système "streamable". HTTP (Streamable HTTP) remplace l'actuel HTTP+SSE Le programme. Cela permettra d'établir un partenariat avec l MCP Le serveur établit des connexions sans état, pures HTTP et, éventuellement, de passer à la version SSELe client peut envoyer des messages à différents points d'extrémité, tout en éliminant la complexité liée à l'envoi de messages à différents points d'extrémité.Cloudflare indiquer McpAgent Les classes évolueront en fonction des mises à jour des spécifications afin de prendre en charge les nouvelles Streamable HTTP ce qui évite aux développeurs d'avoir à réécrire le code pour s'adapter aux changements des méthodes de transmission.

La prise en compte de l'évolution future des protocoles de transmission est tout aussi importante. Actuellement, la grande majorité des MCP Exposition principale du serveur toolsIl s'agit essentiellement de simples appels de procédure à distance (RPC), qui peut être assurée par une transmission sans état. Mais le système plus complexe de "l'homme dans la boucle" (human-in-the-loop) et Agent Scénarios d'interaction qui nécessiteront prompts répondre en chantant sampling et al. (et autres auteurs) MCP Soutien conceptuel. Ces scénarios nécessitant une communication bidirectionnelle en temps réel sont difficiles à mettre en œuvre efficacement sans une couche de transport bidirectionnelle. D'ici là, la couche de transportCloudflare Plate-forme,Agents SDK répondre en chantant Durable Objects Tous les produits sont pris en charge en mode natif WebSocketsLa capacité de fournir une communication en temps réel, bidirectionnelle et en duplex intégral offre la possibilité de mettre en place des systèmes de communication plus avancés dans l'avenir. MCP Préparer le terrain pour les applications.

 

Serveur MCP avec état et fonctions d'agent

existent Cloudflare liaison montante MCP Lorsque le serveur, chaque MCP Les sessions des clients sont toutes contrôlées par un Durable Object Soutien (via Agents SDK). Cela signifie que chaque session peut gérer et maintenir son propre état, et peut même avoir son propre SQL Base de données.

Cela ouvre la voie à l'élaboration d'un système d'information à base d'états (stateful). MCP Le serveur ouvre la porte.MCP Les serveurs ne sont plus seulement le lieu où sont installées les applications clients et les applications externes. API des couches de transition sans état entre elles, qui peuvent elles-mêmes être des applications avec état - par exemple, des jeux, des processus d'encaissement avec des paniers d'achat, des graphes de connaissances persistants, etc. Dans le Cloudflare En haut.MCP Le potentiel des serveurs va bien au-delà de leur rôle de REST API de l'extrémité avant.

Un exemple simple de compteur est utilisé pour comprendre les principes de base de son fonctionnement :

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', '增加存储在 MCP 服务器中的计数器的值', { a: z.number() }, async ({ a }) => {
// 更新状态
this.setState({ ...this.state, counter: this.state.counter + a });
return {
content: [{ type: 'text', text: `增加了 ${a}, 当前总数是 ${this.state.counter}` }],
}
})
}
// 状态更新时的回调(可选)
onStateUpdate(state: State) {
console.log({ stateUpdate: state });
}
}

Pour une session donnée, les MCP Le serveur prendra un certain nombre de tool Se souvenir de l'état du compteur entre les appels.

existent MCP À l'intérieur du serveur, les développeurs peuvent utiliser la fonction Cloudflare Les capacités complètes de la plate-forme de développement, telles que MCP Le serveur démarre le navigateur pour la navigation sur le web, ce qui déclenche l'opération suivante WorkflowAppeler AI Modèles, etc. C'est de bon augure pour la MCP L'écosystème évoluera vers des cas d'utilisation plus avancés et plus intelligents.

 

Connexion d'un client MCP existant à un serveur distant

Cloudflare Soutien précoce à la télémédecine MCPMême dans le courant dominant MCP Les applications clientes prennent généralement en charge les MCP Avant. Cela permet aux développeurs d'avoir une longueur d'avance.

Mais cela pose également un véritable défi : s'il n'y a pas encore de support pour l'utilisation à distance de l'Internet, il est possible d'utiliser l'Internet à distance. MCP comment les développeurs peuvent tester et faire utiliser les télécommandes qu'ils construisent MCP Les serveurs ?

Cloudflare Deux nouveaux outils sont proposés pour y remédier :

  1. Workers AI Playground mise à jourL'interface de chat en ligne est désormais une interface à distance entièrement fonctionnelle. MCP Client qui permet de se connecter à n'importe quel MCP avec un processus d'authentification intégré. Le développeur saisit simplement l'adresse URL(par exemple https://remote-server.example.com/sse) et cliquez sur Connecter pour le tester immédiatement sans avoir à installer de logiciel localement.Cloudflare 拥抱远程 MCP:将 AI Agent 能力推向更广阔的互联网

    Après avoir cliqué sur Connect, l'utilisateur passera par le processus d'authentification (s'il a été mis en place) et pourra ensuite discuter directement avec le MCP Interaction avec l'outil serveur.

  2. mcp-remote adaptateur (dispositif)Pour ceux qui soutiennent déjà MCP Les clients qui ne gèrent pas encore les connexions à distance et l'authentification (tels que le programme Claude Desktop peut-être Cursor), vous pouvez utiliser la fonction mcp-remote. Il s'agit d'un npm qui sert de pont entre les clients locaux et les serveurs distants. Il permet aux développeurs et aux utilisateurs de prévisualiser l'interface avec les serveurs distants. MCP sans avoir à attendre que le client lui-même mette à jour son support.

    Cloudflare Fournit des informations sur la manière de constituer une société mcp-remote avec Claude DesktopCursorWindsurf épidémie MCP Lignes directrices pour l'utilisation du client en conjonction avec le client. Par exemple Claude Desktop dans le fichier de configuration, il suffit d'ajouter une configuration similaire à la suivante :

    {
    "mcpServers": {
    "remote-example": {
    "command": "npx",
    "args": [
    "mcp-remote",
    "https://remote-server.example.com/sse" // 替换为你的远程服务器 URL
    ]
    }
    }
    }
    

 

L'ère du MCP à distance est en marche

Protocole de contexte de modèle à distance (Remote MCP) est sans aucun doute AI Agent est un axe de développement important. Lorsque les applications clientes prendront largement en charge les MCP lorsque sa base d'utilisateurs s'étendra des développeurs à un groupe beaucoup plus large de personnes - qui n'auront peut-être même jamais entendu parler de l'application MCP Le terme.

Pour les prestataires de services, la mise en place de MCP Un serveur est un serveur qui intègre ses propres services dans un système utilisé par des millions d'utilisateurs. AI Le chemin critique des assistants et des outils. De nombreuses grandes entreprises du secteur de l'Internet seraient en train de construire activement des assistants et des outils. MCP et en même temps, cela vous fait attendre avec impatience ceux qui sont connus pour leurs Agent-first,MCP-native La création d'une entreprise émergente en est le résultat.

sur la base de Cloudflare fournit des outils et des plates-formes que les développeurs peuvent utiliser dès maintenant pour commencer à construire des systèmes de télétravail pérennes. MCP Les applications. Il ne s'agit pas seulement d'une mise à niveau de la pile technologique, mais aussi d'une mise à niveau de l'architecture de l'entreprise. AI Agent Une exploration importante de la manière d'intégrer les services Internet. Au fur et à mesure que l'écosystème se développe, les MCP Il promet de créer des expériences utilisateur plus intelligentes et plus personnalisées. Les développeurs peuvent consulter la Documentation pour les développeurs de Cloudflare Obtenez plus d'informations et commencez à vous entraîner.

© déclaration de droits d'auteur
AiPPT

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...