← Vytvářejte agenty na Cloudflare / agents / model-context-protocol / guides
Připojení k serveru MCP
Váš agent se může připojit k externím Model Context Protocol (MCP) ↗ servery, abyste využili jejich nástroje a rozšířili možnosti svého Agenta. V tomto tutoriálu vytvoříte Agenta, který se připojí k serveru MCP a použije jeden z jeho nástrojů.
Co vytvoříte
Agent s koncovými body pro:
- Připojení k serveru MCP
- Vypsat dostupné nástroje z připojených serverů
- Získat stav připojení
Předpoklady
Server MCP, ke kterému se lze připojit (nebo použijte veřejný příklad z tohoto tutoriálu).
1. Vytvořte základního Agenta
-
Vytvořte nový projekt Agent pomocí
hello-worldšablonu:npm create cloudflare@latest -- my-mcp-client --template=cloudflare/ai/demos/hello-world -
Přejděte do adresáře projektu:
cd my-mcp-clientVáš agent je připraven! Šablona obsahuje minimálního agenta v
src/index.ts:import { Agent, routeAgentRequest } from "agents"; export class HelloAgent extends Agent { async onRequest(request) { return new Response("Hello, Agent!", { status: 200 }); } } export default { async fetch(request, env) { return ( (await routeAgentRequest(request, env, { cors: true })) || new Response("Not found", { status: 404 }) ); }, };src/index.tsimport { Agent, routeAgentRequest } from "agents"; type Env = { HelloAgent: DurableObjectNamespace<HelloAgent>; }; export class HelloAgent extends Agent<Env> { async onRequest(request: Request): Promise<Response> { return new Response("Hello, Agent!", { status: 200 }); } } export default { async fetch(request: Request, env: Env) { return ( (await routeAgentRequest(request, env, { cors: true })) || new Response("Not found", { status: 404 }) ); }, } satisfies ExportedHandler<Env>;
2. Přidejte koncový bod pro připojení MCP
-
Přidejte koncový bod pro připojení k serverům MCP. Aktualizujte svou třídu Agent v
src/index.ts:export class HelloAgent extends Agent { async onRequest(request) { const url = new URL(request.url); // Connect to an MCP server if (url.pathname.endsWith("add-mcp") && request.method === "POST") { const { serverUrl, name } = await request.json(); const { id, authUrl } = await this.addMcpServer(name, serverUrl); if (authUrl) { // OAuth required - return auth URL return new Response(JSON.stringify({ serverId: id, authUrl }), { headers: { "Content-Type": "application/json" }, }); } return new Response( JSON.stringify({ serverId: id, status: "connected" }), { headers: { "Content-Type": "application/json" } }, ); } return new Response("Not found", { status: 404 }); } }src/index.tsexport class HelloAgent extends Agent<Env> { async onRequest(request: Request): Promise<Response> { const url = new URL(request.url); // Connect to an MCP server if (url.pathname.endsWith("add-mcp") && request.method === "POST") { const { serverUrl, name } = (await request.json()) as { serverUrl: string; name: string; }; const { id, authUrl } = await this.addMcpServer(name, serverUrl); if (authUrl) { // OAuth required - return auth URL return new Response( JSON.stringify({ serverId: id, authUrl }), { headers: { "Content-Type": "application/json" } }, ); } return new Response( JSON.stringify({ serverId: id, status: "connected" }), { headers: { "Content-Type": "application/json" } }, ); } return new Response("Not found", { status: 404 }); } }
addMcpServer() metoda se připojí k serveru MCP. Pokud server vyžaduje ověření OAuth, vrátí authUrl kterou musí uživatelé navštívit pro dokončení autorizace.
3. Otestujte připojení
-
Spusťte svůj vývojový server:
npm start -
V novém terminálu se připojte k serveru MCP (pomocí veřejného příkladu):
curl -X POST http://localhost:8788/agents/hello-agent/default/add-mcp \ -H "Content-Type: application/json" \ -d '{ "serverUrl": "https://docs.mcp.cloudflare.com/mcp", "name": "Example Server" }'Měli byste vidět odpověď s ID serveru:
{ "serverId": "example-server-id", "status": "connected" }
4. Vypište dostupné nástroje
-
Přidejte koncový bod, který zobrazí, jaké nástroje jsou dostupné z připojených serverů:
export class HelloAgent extends Agent { async onRequest(request) { const url = new URL(request.url); // ... previous add-mcp endpoint ... // List MCP state (servers, tools, etc) if (url.pathname.endsWith("mcp-state") && request.method === "GET") { const mcpState = this.getMcpServers(); return Response.json(mcpState); } return new Response("Not found", { status: 404 }); } }src/index.tsexport class HelloAgent extends Agent<Env> { async onRequest(request: Request): Promise<Response> { const url = new URL(request.url); // ... previous add-mcp endpoint ... // List MCP state (servers, tools, etc) if (url.pathname.endsWith("mcp-state") && request.method === "GET") { const mcpState = this.getMcpServers(); return Response.json(mcpState); } return new Response("Not found", { status: 404 }); } } -
Otestujte to:
curl http://localhost:8788/agents/hello-agent/default/mcp-stateUvidíte všechny připojené servery, stav jejich připojení a dostupné nástroje:
{ "servers": { "example-server-id": { "name": "Example Server", "state": "ready", "server_url": "https://docs.mcp.cloudflare.com/mcp", ... } }, "tools": [ { "name": "add", "description": "Add two numbers", "serverId": "example-server-id", ... } ] }
Souhrn
Vytvořili jste Agenta, který umí:
- Dynamické připojení k externím serverům MCP
- Zpracování autentizačních postupů OAuth v případě potřeby
- Vypsat všechny dostupné nástroje z připojených serverů
- Sledování stavu připojení
Připojení přetrvávají v Agentově Úložiště SQL, takže zůstávají aktivní napříč požadavky.