INTEGRITY Dokumentace

Vzory serverů MCP pro Code Mode

Server Code Mode MCP umožňuje libovolnému klientovi Model Context Protocol (MCP) používat kód napsaný modelem, aniž by musel poskytovat vlastní sandbox. Server MCP zpřístupňuje spouštění kódu jako své rozhraní nástroje a generovaný JavaScript spouští v izolovaném Workeru.

Servery MCP pro Code Mode se řídí dvěma vzory:

Vzor Nástroje MCP API pro model Kdy použít
Jediný nástroj typu kód code Typované metody pro každý nadřazený nástroj Již máte MCP server se zvládnutelnou sadou nástrojů.
Vyhledávání a spuštění search, execute Dokument OpenAPI a funkce request Máte rozsáhlé API, jehož úplné schéma by mělo zůstat mimo kontext.

Oba vzory umožňují vygenerovanému kódu skládat operace a udržovat mezivýsledky mimo kontext modelu. Liší se v tom, jak model zjišťuje dostupné operace.

Jediný nástroj typu kód

Vzor jednoho nástroje obaluje existující server MCP pomocí codeMcpServer(). Namísto toho, aby server nabízel každý nadřazený nástroj zvlášť, nabízí jeden code nástroj.

code popis nástroje obsahuje generované definice TypeScript pro každý nadřazený nástroj. Model píše JavaScript proti codemode namespace:

async () => {
	const projects = await codemode.list_projects({ status: "active" });
	const tasks = [];

	for (const project of projects) {
		tasks.push(...(await codemode.list_tasks({ projectId: project.id })));
	}

	return tasks.filter((task) => task.status === "blocked");
};

Klient MCP provede jedno vnější volání nástroje. Uvnitř sandboxu pak může kód provádět další závislá volání nadřazeným systémům, filtrovat mezivýsledky a vrátit jen konečný výsledek.

Tento vzor funguje dobře, když se vygenerované deklarace typů pohodlně vejdou do code popisu nástroje. Model tyto deklarace obdrží při načtení nástroje MCP.

Chcete-li tento vzor implementovat, přejděte na Sestavte server Code Mode MCP s jedním nástrojem.

Vyhledávání a spuštění

Velké API může mít tisíce operací. Zahrnutí každé operace do jednoho popisu nástroje by stále spotřebovalo značnou část kontextu. Vzor vyhledej a spusť odděluje zjišťování možností od ověřených volání API.

Server zpřístupňuje dva nástroje MCP:

Model nejprve zavolá search kódem, jako je:

async () => {
	const spec = await codemode.spec();
	return Object.entries(spec.paths)
		.filter(([path]) => path.includes("/rulesets"))
		.map(([path, operations]) => ({
			path,
			methods: Object.keys(operations),
		}));
};

Kompletní dokument OpenAPI zůstává uvnitř sandboxu. Do kontextu modelu vstoupí jen vrácená podmnožina.

Po výběru operace model zavolá execute:

async () => {
	const response = await codemode.request({
		method: "GET",
		path: `/zones/${zoneId}/rulesets`,
	});

	return response.result.map(({ id, name, phase }) => ({ id, name, phase }));
};

Autentizace zůstává v callbacku hostitelského požadavku. Vygenerovaný kód dostane funkci pro požadavek, nikoli přihlašovací údaj.

Cloudflare API MCP server tímto vzorem zpřístupňuje Cloudflare API prostřednictvím search a execute. Pro zdůvodnění návrhu a úsporu kontextu si přečtěte Code Mode: dejte agentům celé API v 1,000 tokenech ↗.

Chcete-li tento vzor implementovat, přejděte na Sestavte server MCP typu vyhledej a spusť.

Sandbox a hranice autorizace

Kód napsaný modelem běží v izolovaném Workeru. Přímý odchozí síťový přístup je ve výchozím nastavení zablokovaný. Vygenerovaný kód se k externím systémům dostává pouze přes upstream nástroje MCP nebo přes callback pro požadavky poskytnutý hostitelem.

Spouštění kódu nenahrazuje autorizaci. Vynucujte oprávnění a případné požadované schválení uvnitř handlerů nadřazených nástrojů nebo v callbacku hostitelského požadavku, než dojde k vedlejším efektům. Nevystavujte přihlašovací údaje prostřednictvím výsledků nástrojů nebo dokumentů OpenAPI.

Zvolte vzor

Použijte codeMcpServer() když už existující server MCP definuje operace a schémata, která model potřebuje. Použijte openApiMcpServer() když rozsáhlý katalog OpenAPI vyžaduje postupné zjišťování a pevnou stopu v kontextu modelu.