em construção AI
Aplicativos e Agent
O círculo de protocolos de contexto de modelo (Model Context Protocol
, MCP
) está se tornando um assunto muito discutido. Grande parte da discussão gira em torno da instalação e execução em um computador local do MCP
Desdobramento do servidor. Recentemente.Cloudflare
anunciou suporte para criação e implementação em sua plataformaremotamente MCP
que marca o servidor MCP
Um ponto de virada importante no aplicativo.
Cloudflare
Para simplificar o controle remoto MCP
O servidor foi desenvolvido para apresentar quatro recursos principais:
workers-oauth-provider
: aOAuth
Provider library, que simplifica bastante o processo de autorização necessário para serviços remotos.McpAgent
: integrado emCloudflare Agents SDK
Uma classe noMCP
Os detalhes de teletransporte domcp-remote
Ferramenta de adaptador que permite que os aplicativos suportados somente por conexão localMCP
O cliente também pode se comunicar com o servidor remotoMCP
Interação com o servidor.AI playground
à distânciaMCP
cliente (computação)Interface de bate-papo on-line para se conectar e testar diretamente o controle remotoMCP
com verificações de autenticação incorporadas.
Os desenvolvedores podem usar o Cloudflare
O código de amostra e o botão de implementação fornecidos, em pouco tempo, colocam um MCP
O servidor é implantado no ambiente de produção.
https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-server
Em contraste com o uso anteriormente predominante de MCP
são diferentes, o servidor remoto MCP
O servidor é acessível publicamente. Os usuários simplesmente fazem login e concedem permissões por meio de um processo de autorização conhecido.MCP
Clientes (por exemplo AI Agent
) poderão acessar as ferramentas necessárias. Isso é considerado um grande avanço. Nos últimos meses, tem sido um desafio colocar a codificação Agent
Conectar-se ao local MCP
Os servidores deram aos desenvolvedores uma amostra inicial de seu potencial, e os servidores remotos MCP
Por sua vez, espera-se estender um modelo de trabalho semelhante a um grupo mais amplo de usuários, incluindo cenários de aplicativos mais cotidianos para o consumidor. Essa não é apenas uma diferença na implementação técnica, mas pode ser o prenúncio de AI Agent
Uma mudança fundamental no paradigma do aplicativo.
Do local ao remoto: uma etapa crítica para a MCP alcançar as massas
MCP
está se tornando rapidamente um protocolo universal que permite grandes modelos de linguagem (LLM
A capacidade de ir além do simples raciocínio (inference
) e geração de aprimoramento de recuperação (RAG
) que pode executar operações que exigem acesso a recursos externos (por exemplo, envio de e-mails, implantação de código, publicação de blogs etc.). Isso faz com que AI Agent
(MCP
Client) pode ser acessado por meio de um serviço externo (MCP
servidor) para interagir com as ferramentas e os recursos fornecidos pelo servidor.
No entanto, até o momento, oMCP
são, em sua maioria, limitados à execução local. Se você quiser o AI Agent
aprovar (um projeto de lei ou inspeção etc.) MCP
Para acessar uma ferramenta na Web, os desenvolvedores geralmente precisam configurar um servidor local em sua própria máquina. Isso significa que não é possível usar uma interface da Web ou um aplicativo móvel a partir do MCP
Também faltam mecanismos para permitir que usuários comuns se autentiquem e se autorizem.MCP
O servidor não está realmente "on-line".
fora do local MCP
O suporte conectado muda isso. Ele cria oportunidades para atingir uma gama mais ampla de usuários da Internet que têm menos probabilidade de ir a uma instalação local e executar aplicativos de desktop apenas para usar o MCP
Servidor. Remoto MCP
suporte, como se estivesse migrando de um software de desktop para o Web
Transição de software. Os usuários esperam trabalhar continuamente em todos os dispositivos e que tudo funcione quando eles fizerem login. Local MCP
É conveniente para os desenvolvedores, mas é a conexão remota que torna o MCP
O elo crítico que falta para que os serviços alcancem todos os usuários da Internet. Obviamente, as conexões remotas também precisam levar em conta o possível impacto da latência da rede, que não é o mesmo que a latência local stdio
A comunicação é diferente.
Fazendo com que a autenticação e a autorização funcionem "fora da caixa" na MCP
comandante-em-chefe (militar) MCP
Fazer push de local para remoto é mais do que apenas mudar a camada de transporte (do stdio
para fluido HTTP
). Ao criar um controle remoto que exija acesso às informações da conta do usuário MCP
o servidor, a autenticação (authentication
) e autorizações (por exemploauthorization
) tornou-se fundamental. É necessário que haja uma maneira de os usuários fazerem login e comprovarem sua identidade, e que haja uma maneira de os usuários controlarem AI Agent
O que pode ser acessado ao usar o serviço.
MCP
A especificação usa o OAuth 2.0
para resolver esse problema.OAuth
é um protocolo padrão que permite que os usuários autorizem os aplicativos a acessar suas informações ou serviços sem compartilhar senhas. No MCP
Cenário.MCP
O próprio servidor reproduz OAuth Provider
função. No entanto, a realização completa, por si só, está de acordo com a MCP
formal OAuth
O processo é bastante complexo e propenso a erros.Cloudflare
Os programas oferecidos são projetados para resolver esse problema.
workers-oauth-provider
Biblioteca do provedor OAuth 2.1 personalizado para Cloudflare Workers
Quando o desenvolvedor estiver no Cloudflare
implantado em cima de MCP
quando seu servidor Worker
É possível fazer uso de workers-oauth-provider
Esse novo TypeScript
A biblioteca para atuar como um OAuth Provider
. A biblioteca encapsula o Worker
Código para API
Pontos finais (incluindo, mas não se limitando a) MCP
endpoints de servidor) adicionou uma camada de autorização.
MCP
O servidor recebe as informações do usuário autenticado diretamente como um parâmetro e não precisa executar a validação ou o gerenciamento do token por conta própria. Ao mesmo tempo, o desenvolvedor ainda tem controle total sobre como o usuário é autenticado: na tela de login (UI
) até o provedor de identidade a ser escolhido (por exemplo Google
, GitHub
(ou crie seu próprio sistema).
completo MCP OAuth
O processo é o seguinte:
Nesse processo, oMCP
O servidor é um serviço upstream (por exemplo GitHub
, Google
(usado para ênfase) OAuth
Os clientes, por sua vez, são orientados a MCP
Clientes (por exemplo AI Agent
(usado para ênfase) OAuth
Servidor (Provider
). Os desenvolvedores podem usar qualquer processo de autenticação upstream, e o workers-oauth-provider
seguro MCP
Conformidade do servidor MCP
Especificação dos requisitos de autorização para trabalhar com uma ampla variedade de aplicativos e sites de clientes. Isso inclui suporte para registro dinâmico de clientes (RFC 7591
) e metadados do servidor de autorização (RFC 8414
). O uso dessa biblioteca reduz significativamente a complexidade do desenvolvimento e melhora a segurança e a conformidade em comparação com a autoimplementação.
Interface OAuth simples e com capacidade de conexão
fazer uso de Cloudflare Workers
construir (algo abstrato) MCP
o desenvolvedor só precisa fornecer o OAuth Provider
Exemplos de caminhos relacionados (autorização, tokens, pontos de extremidade de registro do cliente) e MCP
Processador para servidor e lógica de autenticação (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",
});
Essa abstração facilita a inserção de lógica de autenticação personalizada. Por exemplo, um aplicativo que usa o GitHub
como um provedor de identidade MCP
que pode ser usado implementando o /callback
responder cantando /authorize
roteamento, integrando-se em menos de 100 linhas de código.
Por que os servidores MCP emitem seu próprio token?
No diagrama de autorização acima e MCP
A parte de autorização da norma é digna de nota MCP
O servidor enviará uma mensagem para o MCP
O cliente emite seu próprio Token
em vez de passar diretamente o serviço upstream do qual o Token
.
Especificamente.Worker
O token de acesso obtido do upstream (access token
) Armazenamento criptografado (por exemplo, usando Workers KV
) e, em seguida, gerar e emitir um novo e autônomo Token
para o benefício de MCP
Cliente.workers-oauth-provider
A biblioteca lida com esse processo automaticamente, e o código do desenvolvedor não precisa tocar diretamente no token upstream de texto simples nem gerenciar o próprio armazenamento, evitando assim possíveis riscos de segurança.
// 调用 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)
À primeira vista, essa abordagem indireta parece mais complexa. Por que ela é tão projetada?
Ao emitir seu próprio Token
(matemática) gêneroMCP
Os servidores podem aplicar um controle de acesso mais refinado do que os provedores upstream. Mesmo quando emitidos para MCP
no lado do cliente Token
comprometido, e o invasor obtém acesso apenas a esse MCP
Permissões limitadas concedidas explicitamente pelo servidor (por meio de seu tools
), em vez de acesso total ao serviço upstream.
Por exemplo, suponha que um MCP
O servidor solicita autorização do usuário para ler Gmail
Permissões de correio eletrônico (usando gmail.readonly scope
). No entanto, o servidor expõe o tool
A funcionalidade é mais restrita, permitindo que apenas a notificação de reserva de viagem de um remetente específico seja lida para responder a perguntas como "Qual é o horário de check-out do meu hotel amanhã?" e assim por diante. Os desenvolvedores podem adicionar a função MCP
Essa restrição é imposta no servidor. Se for emitida para o MCP
no lado do cliente Token
Roubado, como o Token
Corresponde a MCP
em vez do provedor upstream original (Google
), o invasor não pode usá-lo para ler e-mails arbitrários e só pode chamar o MCP
ferramentas específicas fornecidas pelo servidor.OWASP
Para substituir o termo "over-agent" (Excessive Agency
) é listado como um AI
um dos principais riscos do aplicativo. Ao emitir seu próprio Token
e a imposição de restrições.MCP
O servidor pode restringir o acesso à ferramenta para fornecer apenas a funcionalidade exigida pelo cliente, seguindo o princípio do menor privilégio.
Outro exemplo, baseado no já mencionado GitHub
você pode forçar apenas determinados usuários a acessar uma ferramenta. No exemplo a seguir, somente os usuários da lista branca (geelen
) para ver e chamar o generateImage
que usa a ferramenta Workers AI
Siga as instruções para gerar uma imagem:
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' }],
}
}
)
}
}
}
Introdução do McpAgent: compatível com o teletransporte atual e futuro
comandante-em-chefe (militar) MCP
A próxima etapa para trazer a máquina local para fora é abrir a camada de transporte remoto. A camada de transporte MCP
Os servidores geralmente são configurados com entradas e saídas padrão (stdio
) para se comunicar, mas deixe o MCP
possam ser chamados pela Internet, é necessário implementar um protocolo de teletransporte, que atualmente se baseia na especificação preliminar HTTP
(usado em uma expressão nominal) Server-Sent Events (SSE)
.
Cloudflare
em seu Agents SDK
void void void void void void void void void void void void void void void void void void void void void void void void void void void void void void void void void McpAgent
lida com a complexidade do teletransporte. Ela faz isso em segundo plano usando a função Durable Objects
para manter uma conexão persistente, fazendo com que o MCP
O cliente pode passar o SSE
em direção a MCP
O servidor envia a mensagem. O desenvolvedor não precisa escrever o código subjacente que lida com a transmissão ou a serialização. Uma solução minimalista MCP
O servidor pode ser implementado com apenas uma dúzia de linhas de código:
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) }],
}));
}
}
Vale a pena observar que, após as discussões da comunidadeMCP
O teletransporte na especificação está sendo revisado com planos para usar o streamable HTTP
(Streamable HTTP
) substitui o atual HTTP+SSE
Programa. Isso permitirá a integração com o MCP
O servidor estabelece um sistema stateless, puro HTTP
e, opcionalmente, atualizar para SSE
O cliente pode enviar mensagens para diferentes pontos de extremidade, eliminando a complexidade de ter que enviar mensagens para diferentes pontos de extremidade.Cloudflare
indicar McpAgent
As classes evoluirão com as atualizações de especificações para dar suporte a novos Streamable HTTP
garantindo que os desenvolvedores não precisem reescrever o código para se adaptar às mudanças nos métodos de transmissão.
Essa consideração da evolução futura do protocolo de transmissão é igualmente importante. Atualmente, a grande maioria dos MCP
Exposição principal do servidor tools
Basicamente, são chamadas de procedimento remoto simples (RPC
), que pode ser fornecida pela transmissão sem estado. Mas o mais complexo "man-in-the-loop" (human-in-the-loop
) e Agent
Cenários de interação que exigirão prompts
responder cantando sampling
et al. (e outros autores) MCP
Suporte conceitual. Esses cenários que exigem comunicação bidirecional e em tempo real são difíceis de implementar de forma eficiente sem uma camada de transporte bidirecional. Nesse caso, aCloudflare
Plataforma,Agents SDK
responder cantando Durable Objects
Todos com suporte nativo WebSockets
A capacidade de fornecer um recurso de comunicação full-duplex, bidirecional e em tempo real oferece a oportunidade de uma futura comunicação mais avançada. MCP
Estabelecer as bases para os aplicativos.
Servidor MCP com estado e recursos de agente
existir Cloudflare
uplink MCP
Quando o servidor, cada MCP
As sessões de cliente são todas controladas por um Durable Object
Suporte (via Agents SDK
). Isso significa que cada sessão pode gerenciar e manter seu próprio estado, e pode até mesmo ter seu próprio SQL
Banco de dados.
Isso abre caminho para a criação de MCP
O servidor abre a porta.MCP
Os servidores não são mais apenas um local para aplicativos clientes e aplicativos externos API
entre camadas de transformação sem estado que podem ser aplicativos com estado, como jogos, processos de checkout com carrinhos de compras, gráficos de conhecimento persistentes etc. No Cloudflare
Para cima.MCP
O potencial dos servidores vai muito além de atuar como REST API
do front end.
Um exemplo simples de contador é usado para entender os princípios básicos de sua operação:
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 });
}
}
Para uma determinada sessão, os MCP
O servidor receberá um número de tool
Lembre-se do estado do contador entre as chamadas.
existir MCP
Dentro do servidor, os desenvolvedores podem usar o Cloudflare
Recursos completos da plataforma do desenvolvedor, como a habilitação de MCP
O servidor inicia o navegador para navegação na Web, acionando Workflow
Chamada AI
Modelos, etc. Isso é um bom presságio para a MCP
O ecossistema evoluirá para casos de uso mais avançados e inteligentes.
Conexão de um cliente MCP existente a um servidor remoto
Cloudflare
Suporte antecipado para o controle remoto MCP
Mesmo na mídia convencional MCP
Os aplicativos clientes geralmente oferecem suporte a aplicativos remotos e autenticados MCP
Antes. Isso oferece aos desenvolvedores a oportunidade de estar um passo à frente.
No entanto, isso também representa um verdadeiro desafio: se ainda não houver suporte para o controle remoto, o MCP
clientes, como os desenvolvedores podem testar e fazer com que os usuários usem os controles remotos que criaram MCP
Servidores?
Cloudflare
Duas novas ferramentas são fornecidas para combater isso:
Workers AI Playground
atualizaçãoInterface de bate-papo on-line: Essa interface de bate-papo on-line agora é um controle remoto totalmente funcionalMCP
Cliente que oferece suporte à conexão com qualquerMCP
com um processo de autenticação incorporado. O desenvolvedor simplesmente insere o endereçoURL
(por exemplohttps://remote-server.example.com/sse
) e clique em Connect para testá-lo imediatamente sem a necessidade de instalar nenhum software localmente.Após clicar em Connect, o usuário passará pelo processo de autenticação (se configurado) e poderá conversar diretamente com o
MCP
Interação com a ferramenta do servidor.mcp-remote
adaptador (dispositivo)Para aqueles que já apóiamMCP
Os clientes que ainda não lidam com conexões remotas e autenticação (como oClaude Desktop
talvezCursor
), você pode usar omcp-remote
. É umanpm
pacote que atua como uma ponte entre clientes locais e servidores remotos. Ele permite que os desenvolvedores e usuários visualizem a interface com servidores remotos em ferramentas com as quais estão familiarizados.MCP
experiência de interação com o servidor sem ter que esperar que o próprio cliente atualize seu suporte.Cloudflare
Fornece informações sobre como incorporarmcp-remote
junto comClaude Desktop
,Cursor
,Windsurf
epidêmicoMCP
Diretrizes para usar o cliente em conjunto com o cliente. Por exemploClaude Desktop
no arquivo de configuração, basta adicionar uma configuração semelhante à seguinte:{ "mcpServers": { "remote-example": { "command": "npx", "args": [ "mcp-remote", "https://remote-server.example.com/sse" // 替换为你的远程服务器 URL ] } } }
A era do MCP remoto está chegando
Protocolo de contexto de modelo remoto (Remote MCP
) é, sem dúvida, o AI Agent
é uma importante direção de desenvolvimento. Quando os aplicativos clientes oferecem amplo suporte a aplicativos remotos MCP
quando sua base de usuários se expandirá dos desenvolvedores para um grupo muito maior de pessoas - que talvez nunca tenham ouvido falar do MCP
O termo.
Para os provedores de serviços, a criação de serviços remotos MCP
Um servidor é um servidor que integra seus próprios serviços em um sistema usado por milhões de usuários. AI
O caminho crítico em assistentes e ferramentas. Há relatos de que muitas grandes empresas de Internet estão desenvolvendo ativamente MCP
servidores e, ao mesmo tempo, faz com que você espere ansiosamente por aqueles que são conhecidos por seus Agent-first
eMCP-native
para o nascimento de uma empresa emergente.
com base em Cloudflare
fornece ferramentas e plataformas que os desenvolvedores podem usar agora para começar a criar sistemas remotos preparados para o futuro MCP
Aplicativos. Isso não é apenas uma atualização da pilha de tecnologia, é uma atualização do AI Agent
Uma importante exploração de como integrar serviços de Internet. À medida que o ecossistema amadurece, os serviços remotos MCP
Ele promete gerar experiências de usuário mais inteligentes e personalizadas. Os desenvolvedores podem conferir o Documentação do desenvolvedor da Cloudflare Obtenha mais informações e comece a praticar.