공사 중 AI
애플리케이션 및 Agent
모델 컨텍스트 프로토콜의 원(Model Context Protocol
, MCP
)가 화제가 되고 있습니다. 논의의 대부분은 로컬 컴퓨터에 설치 및 실행하는 것에 관한 것입니다. MCP
서버 펼치기. 최근.Cloudflare
플랫폼 구축 및 배포에 대한 지원을 발표했습니다.원격으로 MCP
서버를 표시하는 MCP
애플리케이션의 중요한 전환점입니다.
Cloudflare
원격 작업을 간소화하려면 MCP
이 서버는 네 가지 주요 기능을 도입하도록 구축되었습니다:
workers-oauth-provider
: aOAuth
공급자 라이브러리를 통해 원격 서비스에 필요한 인증 프로세스를 크게 간소화할 수 있습니다.McpAgent
에 통합Cloudflare Agents SDK
클래스의MCP
텔레포트 세부 정보는mcp-remote
로컬 연결만 지원하는 어댑터 도구MCP
클라이언트는 리모컨과 통신할 수도 있습니다.MCP
서버 상호 작용.AI playground
멀리서MCP
클라이언트(컴퓨팅)원격으로 직접 연결하고 테스트할 수 있는 온라인 채팅 인터페이스MCP
서버에 인증 확인 기능이 내장되어 있습니다.
개발자는 다음을 사용할 수 있습니다. Cloudflare
제공된 샘플 코드와 배포 버튼을 사용하면 즉시 MCP
서버가 프로덕션 환경에 배포됩니다.
https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-server
이전에 널리 사용되던 로컬 사용과 달리 MCP
서버가 다르면 원격 MCP
서버는 공개적으로 액세스할 수 있습니다. 사용자는 익숙한 인증 프로세스를 통해 로그인하고 권한을 부여하기만 하면 됩니다.MCP
클라이언트(예 AI Agent
)에서 필요한 도구에 액세스할 수 있게 됩니다. 이는 큰 진전이라고 할 수 있습니다. 지난 몇 달 동안 코딩을 업무에 도입하는 것은 어려운 일이었습니다. Agent
로컬에 연결 MCP
서버는 개발자들에게 그 잠재력을 일찌감치 맛보게 해주었으며 원격 MCP
결과적으로 더 많은 일상적인 소비자급 애플리케이션 시나리오를 포함하여 더 많은 사용자 그룹으로 유사한 작업 모델을 확장할 수 있을 것으로 예상됩니다. 이는 단순한 기술적 구현의 차이가 아니라 다음을 예고할 수 있습니다. AI Agent
애플리케이션 패러다임의 근본적인 변화.
로컬에서 원격으로: MCP가 대중에게 다가가기 위한 중요한 단계
MCP
은 대규모 언어 모델을 허용하는 범용 프로토콜로 빠르게 자리 잡고 있습니다(LLM
단순한 추론을 넘어서는 능력(inference
) 및 검색 향상 생성(RAG
) 외부 리소스에 액세스해야 하는 작업(예: 이메일 보내기, 코드 배포, 블로그 게시 등)을 수행할 수 있습니다. 이는 AI Agent
(MCP
클라이언트)는 외부 서비스(MCP
서버)를 사용하여 서버에서 제공하는 도구 및 리소스와 상호 작용할 수 있습니다.
그러나 현재까지MCP
애플리케이션은 대부분 로컬에서 실행하는 것으로 제한됩니다. 만약 AI Agent
통과(청구서 또는 검사 등) MCP
웹에서 도구에 액세스하려면 일반적으로 개발자는 자신의 컴퓨터에 로컬 서버를 설정해야 합니다. 즉, 웹 인터페이스나 모바일 애플리케이션을 사용할 수 없습니다. MCP
또한 일반 사용자가 자신을 인증하고 권한을 부여할 수 있는 메커니즘이 부족합니다.MCP
서버는 실제로 '온라인'이 아닙니다.

오프사이트 MCP
커넥티드 지원은 이를 변화시킵니다. 로컬 설치로 이동하여 데스크톱 애플리케이션을 실행할 가능성이 적은 인터넷 사용자에게 더 폭넓게 다가갈 수 있는 기회를 창출합니다. MCP
서버. 원격 MCP
데스크톱 소프트웨어에서 Web
소프트웨어 전환. 사용자는 여러 디바이스에서 지속적으로 작업하고 로그인할 때 모든 것이 작동하기를 기대합니다. 로컬 MCP
개발자에게는 편리하지만, 원격 연결로 인해 MCP
서비스가 모든 인터넷 사용자에게 도달하기 위한 중요한 연결 고리입니다. 물론 원격 연결은 로컬 연결과 달리 네트워크 지연의 영향도 고려해야 합니다. stdio
커뮤니케이션은 다릅니다.

MCP에서 인증 및 권한 부여가 '즉시' 작동하도록 만들기
최고 사령관(군) MCP
로컬에서 원격으로 푸시하는 것은 단순히 전송 계층을 변경하는 것 이상입니다( stdio
유동성 HTTP
). 사용자 계정 정보에 액세스해야 하는 리모컨을 구축하는 경우 MCP
서버, 인증(authentication
) 및 권한(예authorization
)의 중요성이 커졌습니다. 사용자가 로그인하고 신원을 증명할 수 있는 방법이 있어야 하며, 사용자가 다음을 제어할 수 있는 방법이 있어야 합니다. AI Agent
서비스 이용 시 액세스할 수 있는 항목.
MCP
이 사양은 OAuth 2.0
를 사용하여 이 문제를 해결할 수 있습니다.OAuth
는 사용자가 비밀번호를 공유하지 않고도 애플리케이션이 자신의 정보나 서비스에 액세스할 수 있도록 권한을 부여하는 표준 프로토콜입니다. 애플리케이션의 MCP
시나리오.MCP
서버 자체 재생 OAuth Provider
역할을 합니다. 그러나 그 자체로 완전한 실현은 MCP
공식 OAuth
이 과정은 매우 복잡하고 오류가 발생하기 쉽습니다.Cloudflare
제공되는 프로그램은 이러한 문제점을 해결하기 위해 고안되었습니다.
workers-oauth-provider
클라우드플레어 워커를 위한 사용자 지정 OAuth 2.1 공급자 라이브러리
개발자가 Cloudflare
위에 배포 MCP
서버가 Worker
다음을 사용할 수 있습니다. workers-oauth-provider
이 새로운 TypeScript
라이브러리 역할을 하는 OAuth Provider
. 라이브러리는 Worker
코드 API
엔드포인트(다음을 포함하되 이에 국한되지 않음) MCP
서버 엔드포인트)에 인증 계층을 추가했습니다.
MCP
서버는 인증된 사용자의 정보를 매개변수로 직접 수신하며 토큰 유효성 검사나 관리를 자체적으로 수행할 필요가 없습니다. 동시에 개발자는 로그인 화면에서 사용자 인증 방법을 완전히 제어할 수 있습니다(UI
)에서 어떤 ID 공급자를 선택할지(예를 들어 Google
, GitHub
(또는 직접 시스템을 구축하세요).
완료 MCP OAuth
절차는 다음과 같습니다:

이 과정에서MCP
서버는 업스트림 서비스(예 GitHub
, Google
(강조를 위해 사용됨) OAuth
클라이언트는 다음을 지향합니다. MCP
클라이언트(예 AI Agent
(강조를 위해 사용됨) OAuth
서버 (Provider
). 개발자는 모든 업스트림 인증 프로세스와 workers-oauth-provider
보안 MCP
서버 규정 준수 MCP
다양한 클라이언트 애플리케이션 및 웹사이트와 함께 작동하기 위한 인증 요구 사항 지정. 여기에는 동적 클라이언트 등록에 대한 지원이 포함됩니다(RFC 7591
) 및 인증 서버 메타데이터(RFC 8414
). 이 라이브러리를 사용하면 개발 복잡성이 크게 줄어들고 자체 구현에 비해 보안 및 규정 준수가 향상됩니다.
간단하고 플러그 가능한 OAuth 인터페이스
활용 Cloudflare Workers
구성 (STH 추상) MCP
서버를 사용하면 개발자는 단지 OAuth Provider
관련 경로의 예(권한 부여, 토큰, 클라이언트 등록 엔드포인트) 및 MCP
서버 및 인증 로직용 프로세서(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",
});
이러한 추상화를 통해 사용자 지정 인증 로직을 쉽게 삽입할 수 있습니다. 예를 들어, 애플리케이션에서 GitHub
ID 공급자로서 MCP
서버를 구현하여 사용할 수 있습니다. /callback
노래로 응답 /authorize
라우팅을 100줄 미만의 코드로 통합합니다.
MCP 서버가 자체 토큰을 발행하는 이유는 무엇인가요?
위의 권한 부여 다이어그램과 MCP
규범의 승인 부분은 주목할 만합니다. MCP
서버는 다음 주소로 메시지를 보냅니다. MCP
클라이언트가 자체적으로 Token
업스트림 서비스를 직접 전달하는 대신 Token
.
구체적으로Worker
업스트림에서 얻은 액세스 토큰(access token
) 암호화된 저장소(예. Workers KV
)를 생성한 다음 새로운 독립 실행형 Token
의 이익을 위해 MCP
Client.workers-oauth-provider
라이브러리가 이 프로세스를 자동으로 처리하므로 개발자 코드는 평문 업스트림 토큰을 직접 건드리거나 스토리지 자체를 관리할 필요가 없으므로 잠재적인 보안 위험을 피할 수 있습니다.
// 调用 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)
표면적으로는 이 간접적인 접근 방식이 더 복잡해 보입니다. 왜 그렇게 설계된 것일까요?
자체적으로 발행함으로써 Token
(수학.) 속MCP
서버는 업스트림 공급업체보다 더 세밀한 액세스 제어를 시행할 수 있습니다. 다음 대상으로 발급된 경우에도 MCP
클라이언트 측 Token
손상되고 공격자는 해당 정보에 대한 액세스 권한을 얻습니다. MCP
서버에서 명시적으로 부여한 제한된 권한(제공된 tools
), 업스트림 서비스에 대한 전체 액세스 권한이 아닙니다.
예를 들어 MCP
서버가 사용자에게 읽기 권한을 요청합니다. Gmail
메일 권한( gmail.readonly scope
). 그러나 서버는 tool
"내일 호텔 체크아웃 시간이 몇 시인가요?"와 같은 질문에 답하기 위해 특정 발신자의 여행 예약 알림만 읽을 수 있도록 기능이 더 좁아졌습니다. 등의 질문에 답할 수 있습니다. 개발자는 MCP
이 제약 조건은 서버에서 적용됩니다. 서버에 발행된 경우 MCP
클라이언트 측 Token
도난당한 Token
다음에 해당 MCP
서버가 아닌 원래 업스트림 공급자(Google
), 공격자는 이를 사용하여 임의의 이메일을 읽을 수 없으며 오직 MCP
서버에서 제공하는 특정 도구.OWASP
'초과 상담원'이라는 용어를 대체하려면(Excessive Agency
)는 구성된 AI
애플리케이션의 주요 위험 중 하나입니다. 자체적으로 Token
제한을 적용합니다.MCP
서버는 최소 권한 원칙에 따라 클라이언트가 필요로 하는 기능만 제공하도록 도구에 대한 액세스를 제한할 수 있습니다.
또 다른 예는 앞서 언급했던 GitHub
인증을 사용하면 특정 사용자만 도구에 액세스하도록 강제할 수 있습니다. 다음 예에서는 화이트리스트에 등록된 사용자(geelen
)를 보고 전화를 걸려면 generateImage
도구를 사용하는 Workers AI
지시에 따라 이미지를 생성합니다:
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' }],
}
}
)
}
}
}
맥에이전트 소개: 현재 및 미래의 텔레포트와 호환 가능
최고 사령관(군) MCP
로컬 머신을 불러오는 다음 단계는 원격 전송 계층을 여는 것입니다. 로컬에서 실행 중인 MCP
서버는 일반적으로 표준 입력 및 출력으로 구성됩니다(stdio
)를 사용하여 통신하지만 MCP
서버는 인터넷을 통해 호출할 수 있으므로 현재 초안 사양을 기반으로 하는 텔레포트 프로토콜을 구현해야 합니다. HTTP
(명목식 형태로 사용됨) Server-Sent Events (SSE)
.
Cloudflare
의 Agents SDK
비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 비어있는 것 McpAgent
클래스는 순간 이동의 복잡성을 처리합니다. 이 작업은 백그라운드에서 Durable Objects
를 사용하여 지속적인 연결을 유지하여 MCP
클라이언트는 SSE
향해 MCP
서버가 메시지를 전송합니다. 개발자는 전송 또는 직렬화를 처리하는 기본 코드를 작성할 필요가 없습니다. 미니멀리스트 MCP
서버는 단 몇 줄의 코드로 구현할 수 있습니다:
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) }],
}));
}
}
한 가지 주목할 만한 점은 커뮤니티 논의에 따라MCP
사양의 텔레포트는 스트리밍 가능을 사용할 계획으로 수정 중입니다. HTTP
(Streamable HTTP
)는 현재 HTTP+SSE
프로그램. 이를 통해 다음과 같은 파트너십을 맺을 수 있습니다. MCP
서버는 상태 비저장, 순수 HTTP
연결하고 선택적으로 SSE
클라이언트는 여러 엔드포인트에 메시지를 보낼 수 있으므로 여러 엔드포인트에 메시지를 보내야 하는 복잡성을 제거할 수 있습니다.Cloudflare
표시 McpAgent
클래스는 새로운 사양 업데이트를 통해 진화하여 새로운 Streamable HTTP
표준을 준수하여 개발자가 전송 방법의 변화에 적응하기 위해 코드를 다시 작성할 필요가 없도록 보장합니다.
향후 전송 프로토콜의 진화에 대한 이러한 고려도 마찬가지로 중요합니다. 현재 대부분의 MCP
서버 메인 노출 tools
기본적으로 간단한 원격 프로시저 호출(RPC
), 이는 상태 비저장 전송으로 제공될 수 있습니다. 하지만 더 복잡한 '맨인더루프'(human-in-the-loop
) 및 Agent
다음이 필요한 상호 작용 시나리오 prompts
노래로 응답 sampling
외(및 기타 저자) MCP
개념적 지원. 양방향 실시간 통신이 필요한 이러한 시나리오는 양방향 전송 계층 없이는 효율적으로 구현하기 어렵습니다. 그때까지Cloudflare
플랫폼,Agents SDK
노래로 응답 Durable Objects
기본적으로 지원되는 모든 기능 WebSockets
전이중, 양방향 실시간 통신 기능을 제공할 수 있어 향후 더욱 발전할 수 있는 기회를 제공합니다. MCP
애플리케이션을 위한 토대를 마련합니다.
에이전트 기능을 갖춘 스테이트풀 MCP 서버
존재 Cloudflare
업링크 MCP
서버가 각 MCP
클라이언트 세션은 모두 Durable Object
지원(경유 Agents SDK
). 즉, 각 세션은 자체 상태를 관리하고 유지할 수 있으며, 심지어 자체적인 SQL
데이터베이스.
이로써 스테이트풀을 구축할 수 있는 길이 열렸습니다. MCP
서버가 문을 엽니다.MCP
서버는 더 이상 클라이언트 애플리케이션과 외부 애플리케이션을 위한 공간이 아닙니다. API
게임, 장바구니를 사용한 결제 프로세스, 영구 지식 그래프 등 그 자체가 상태 저장 애플리케이션이 될 수 있는 상태 비저장 트랜지션 레이어가 있습니다. 상태 저장소인 Cloudflare
위로.MCP
서버의 잠재력은 다음과 같은 역할을 훨씬 뛰어넘습니다. REST 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', '增加存储在 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 });
}
}
특정 세션의 경우 위의 MCP
서버는 여러 가지 tool
통화 사이에 카운터의 상태를 기억하세요.
존재 MCP
서버 내에서 개발자는 Cloudflare
다음과 같은 완벽한 개발자 플랫폼 기능을 제공합니다. MCP
서버가 웹 브라우징을 위해 브라우저를 시작하여 다음을 트리거합니다. Workflow
통화 AI
모델 등 이는 MCP
에코시스템은 더욱 발전되고 지능적인 사용 사례로 진화할 것입니다.
기존 MCP 클라이언트를 원격 서버에 연결하기
Cloudflare
원격 지원 조기 지원 MCP
메인스트림에서도 MCP
클라이언트 애플리케이션은 일반적으로 원격으로 인증된 MCP
전에. 이를 통해 개발자는 한 발 앞서 나갈 수 있는 기회를 얻게 됩니다.
하지만 아직 원격 지원이 지원되지 않는 경우 MCP
클라이언트, 개발자가 자신이 만든 리모컨을 테스트하고 사용자가 사용하도록 하는 방법 MCP
서버?
Cloudflare
이에 대응하기 위해 두 가지 새로운 도구가 제공됩니다:
Workers AI Playground
업데이트이 온라인 채팅 인터페이스는 이제 모든 기능을 갖춘 리모컨입니다.MCP
모든 원격 연결을 지원하는 클라이언트MCP
서버에 인증 프로세스가 내장되어 있습니다. 개발자는 원격 서버의URL
(예https://remote-server.example.com/sse
)를 클릭하고 연결을 클릭하면 로컬에 소프트웨어를 설치할 필요 없이 바로 테스트할 수 있습니다.연결을 클릭하면 사용자는 인증 프로세스(설정된 경우)를 거친 후 다음과 같이 직접 채팅할 수 있습니다.
MCP
서버 도구 상호 작용.mcp-remote
어댑터(장치)이미 지원하시는 분들을 위해MCP
아직 원격 연결 및 인증을 처리하지 않는 클라이언트(예Claude Desktop
어쩌면Cursor
)를 사용하여mcp-remote
. .npm
패키지는 로컬 클라이언트와 원격 서버 사이의 다리 역할을 합니다. 이를 통해 개발자와 사용자는 원격 서버와의 인터페이스를 미리 볼 수 있습니다.MCP
클라이언트 자체의 지원 업데이트를 기다릴 필요 없이 서버 상호 작용 경험을 제공합니다.Cloudflare
통합하는 방법에 대한 정보를 제공합니다.mcp-remote
와 함께Claude Desktop
,Cursor
,Windsurf
전염병MCP
클라이언트와 함께 클라이언트를 사용하기 위한 가이드라인입니다. 예를 들면 다음과 같습니다.Claude Desktop
구성 파일에 다음과 유사한 구성을 추가하기만 하면 됩니다:{ "mcpServers": { "remote-example": { "command": "npx", "args": [ "mcp-remote", "https://remote-server.example.com/sse" // 替换为你的远程服务器 URL ] } } }
원격 MCP의 시대가 열렸습니다.
원격 모델 컨텍스트 프로토콜(Remote MCP
)는 의심할 여지없이 AI Agent
분야는 중요한 개발 방향입니다. 클라이언트 애플리케이션이 원격 기능을 광범위하게 지원하는 경우 MCP
서버의 사용자 기반이 개발자에서 훨씬 더 많은 사람들로 확장될 때, 심지어는 들어본 적도 없을 수도 있는 MCP
용어.
서비스 제공업체의 경우 원격 MCP
서버는 수백만 명의 사용자가 사용하는 시스템에 자체 서비스를 통합하는 서버입니다. AI
어시스턴트 및 도구의 중요한 경로. 많은 대형 인터넷 회사들이 적극적으로 MCP
서버로 유명한 사람들을 기대하게 만듭니다. Agent-first
및MCP-native
새로운 비즈니스의 탄생으로 가는 길입니다.
를 기준으로 Cloudflare
개발자가 지금 바로 사용할 수 있는 도구와 플랫폼을 제공하여 미래에도 사용 가능한 원격 MCP
앱. 이는 기술 스택의 업그레이드일 뿐만 아니라 AI Agent
인터넷 서비스를 통합하는 방법에 대한 중요한 탐구입니다. 생태계가 성숙해짐에 따라 원격 MCP
더 스마트하고 개인화된 사용자 경험을 제공할 것을 약속합니다. 개발자는 Cloudflare 개발자 문서 자세한 정보를 얻고 연습을 시작하세요.
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...