← Создание агентов на Cloudflare / agents / model-context-protocol / guides
Создайте удалённый MCP-сервер
Это руководство показывает, как развернуть удалённый MCP-сервер на Cloudflare с помощью Транспорт Streamable HTTP. У вас есть два варианта:
- Без аутентификации : подключиться и использовать сервер может кто угодно (вход не требуется).
- С аутентификация и авторизация : пользователи входят в систему перед доступом к инструментам, и вы можете управлять тем, какие инструменты может вызывать агент, в зависимости от прав пользователя.
Выбор подхода
Agents SDK предлагает несколько способов создания MCP-серверов. Выберите подход, который подходит для вашего случая использования:
| Подход | С сохранением состояния? | Путь протокола | Подходит для |
|---|---|---|---|
createMcpHandler() |
Нет | без сохранения состояния с устаревшим режимом совместимости | Новые инструменты без сохранения состояния |
createLegacyMcpHandler() |
Необязательно | устаревший | Временно существующий WorkerTransport routes |
McpAgent |
Да | устаревший | Устаревшие серверы Durable Object и RPC |
| Низкоуровневый транспорт SDK | Зависит от транспорта | Зависит от пакета SDK | Ответственность за пользовательский транспорт |
Используйте createMcpHandler для нового сервера, не сохраняющего состояние. Существующий McpAgent без устаревших зависимостей с состоянием могут перейти напрямую. Если он использует состояние сессии MCP, RPC, отправляемые запросы, потоки или воспроизведение, спланируйте эквиваленты без сохранения состояния и на время перехода поддерживайте одновременно маршруты без состояния и устаревшие маршруты. См. Мигрировать на MCP SDK v2 для поэтапного развёртывания.
Разверните свой первый MCP-сервер
Вы можете начать с развёртывания публичный MCP-сервер ↗ без аутентификации, а затем добавить аутентификацию пользователя и ограниченную по объему авторизацию позже. Если вы уже знаете, что вашему серверу потребуется аутентификация, можно сразу перейти к разделу следующий раздел.
Через панель управления
Кнопка ниже проведёт вас через все шаги, необходимые для развёртывания пример MCP-сервера ↗ в ваш аккаунт Cloudflare:
После развёртывания этот сервер будет доступен по адресу workers.dev поддомен (например, remote-mcp-server-authless.your-account.workers.dev/mcp). Вы можете сразу подключиться к нему с помощью AI Playground ↗ (удалённый MCP-клиент), MCP inspector ↗ или другие MCP-клиенты.
Для вашего MCP-сервера в вашем аккаунте GitHub или GitLab будет создан новый git-репозиторий, настроенный на автоматическое развёртывание в Cloudflare при каждом push изменений или слиянии pull request в основную ветку репозитория. Вы можете клонировать этот репозиторий, разрабатывать локально, и начните настраивать MCP сервер с собственными tools.
Через CLI
Вы можете использовать Wrangler CLI чтобы создать новый MCP-сервер на локальной машине и развернуть его в Cloudflare.
-
Откройте терминал и выполните следующую команду:
npm create cloudflare@latest -- remote-mcp-server-authless --template=cloudflare/ai/demos/remote-mcp-authlessВо время настройки выберите следующие параметры: - Для Хотите добавить файл AGENTS.md, чтобы помочь AI-инструментам для написания кода понимать API Cloudflare?, выберите
No. - Для Хотите использовать git для контроля версий?, выберитеNo. - Для Хотите развернуть приложение?, выберитеNo(мы протестируем сервер перед развёртыванием).Теперь у вас настроен MCP-сервер, и установлены все зависимости.
-
Перейдите в папку проекта:
cd remote-mcp-server-authless -
В каталоге нового проекта выполните следующую команду, чтобы запустить сервер разработки:
npm start⎔ Starting local server... [wrangler:info] Ready on http://localhost:8788Проверьте вывод команды и найдите в нём локальный порт. В этом примере MCP-сервер работает на порте
8788, а URL эндпойнта MCP:http://localhost:8788/mcp. -
Чтобы протестировать сервер локально:
-
В новом терминале запустите MCP inspector ↗. MCP inspector представляет собой интерактивный MCP-клиент, который позволяет подключаться к вашему MCP-серверу и вызывать инструменты из веб-браузера.
npx @modelcontextprotocol/inspector@latest🚀 MCP Inspector is up and running at: http://localhost:5173/?MCP_PROXY_AUTH_TOKEN=46ab..cd3 🌐 Opening browser...MCP Inspector запустится в вашем веб-браузере. Вы также можете запустить его вручную, открыв браузер и перейдя по адресу
http://localhost:<PORT>. Проверьте вывод команды, чтобы узнать локальный порт, на котором запущен MCP Inspector. В этом примере MCP Inspector работает на порту5173. -
В MCP inspector введите URL вашего MCP-сервера (
http://localhost:8788/mcp), и выберите Подключить. Выберите Список инструментов чтобы показать инструменты, которые предоставляет ваш MCP-сервер.
-
-
Теперь вы можете развернуть свой MCP-сервер на Cloudflare. Из каталога проекта выполните:
npx wrangler@latest deployЕсли вы уже подключили git-репозиторий в Worker с вашим MCP-сервером: разверните MCP-сервер, отправив изменение или слив pull request в основную ветку репозитория.
Сервер MCP будет развёрнут в вашем
*.workers.devподдомен наhttps://remote-mcp-server-authless.your-account.workers.dev/mcp. -
Чтобы протестировать удалённый MCP-сервер, возьмите URL развёрнутого MCP-сервера (
https://remote-mcp-server-authless.your-account.workers.dev/mcp) и введите его в MCP inspector, запущенный наhttp://localhost:5173.
Теперь у вас есть удалённый MCP-сервер, к которому могут подключаться MCP-клиенты.
Подключение с MCP-клиента через локальный прокси
Теперь, когда ваш удалённый MCP-сервер запущен, вы можете использовать mcp-remote локальный прокси ↗ чтобы подключить к нему Claude Desktop или другие MCP-клиенты, даже если ваш MCP-клиент не поддерживает удалённый транспорт или авторизацию на стороне клиента. Это позволяет протестировать, как будет выглядеть взаимодействие с вашим удалённым MCP-сервером через настоящий MCP-клиент.
Например, для подключения из Claude Desktop:
-
Обновите конфигурацию Claude Desktop, указав в ней URL-адрес вашего MCP-сервера:
{ "mcpServers": { "math": { "command": "npx", "args": [ "mcp-remote", "https://remote-mcp-server-authless.your-account.workers.dev/mcp" ] } } } -
Перезапустите Claude Desktop, чтобы загрузить MCP-сервер. После этого Claude сможет обращаться к вашему удалённому MCP-серверу.
-
Чтобы проверить это, попросите Claude использовать один из ваших инструментов. Например:
Could you use the math tool to add 23 and 19?Claude должен вызвать инструмент и показать результат, сгенерированный удалённым MCP-сервером.
Чтобы узнать, как использовать удалённые MCP-серверы с другими MCP-клиентами, см. Тестирование удалённого MCP-сервера.
Добавьте аутентификацию
Пример публичного MCP-сервера, который вы развернули ранее, позволяет любому клиенту подключаться и вызывать инструменты без входа в систему. Чтобы добавить аутентификацию пользователей в свой MCP-сервер, можно подключить Cloudflare Access или сторонний сервис в качестве провайдера OAuth. Ваш MCP-сервер обрабатывает безопасные процессы входа и выдаёт токены доступа, которые MCP-клиенты используют для аутентифицированных вызовов инструментов. Пользователи входят через провайдера OAuth и предоставляют своему AI-агенту разрешение на взаимодействие с инструментами вашего MCP-сервера, используя разрешения с ограниченной областью действия.
Cloudflare Access OAuth
Вы можете настроить MCP-сервер так, чтобы он требовал аутентификации пользователя через Cloudflare Access. Cloudflare Access выступает в роли агрегатора идентификации и проверяет электронные адреса пользователей, сигналы от вашей существующей поставщики идентификации (например, GitHub или Google), а также других атрибутов, таких как IP-адрес или сертификаты устройства. Когда пользователи подключаются к MCP-серверу, им будет предложено войти через настроенного поставщика удостоверений, и доступ предоставляется только в случае прохождения Политики доступа.
Пошаговое руководство по развёртыванию см. в Защитите серверы MCP с помощью Access for SaaS.
Сторонний OAuth
Вы можете подключить свой MCP-сервер к любому OAuth-провайдер который поддерживает спецификацию OAuth 2.0, включая GitHub, Google, Slack, Stytch, Auth0, WorkOS, и многое другое.
В следующем примере показано, как использовать GitHub в качестве OAuth-провайдера.
Шаг 1: создание нового сервера MCP
Выполните следующую команду, чтобы создать новый сервер MCP с GitHub OAuth:
npm create cloudflare@latest -- my-mcp-server-github-auth --template=cloudflare/ai/demos/remote-mcp-github-oauthТеперь у вас настроен MCP-сервер, и установлены все зависимости. Перейдите в папку этого проекта:
cd my-mcp-server-github-authВы заметите, что в примере MCP-сервера, если открыть src/index.ts, главное отличие в том, что defaultHandler устанавливается в GitHubHandler:
import GitHubHandler from "./github-handler";
export default new OAuthProvider({
apiRoute: "/mcp",
apiHandler: MyMCP.serve("/mcp"),
defaultHandler: GitHubHandler,
authorizeEndpoint: "/authorize",
tokenEndpoint: "/token",
clientRegistrationEndpoint: "/register",
});Это гарантирует, что ваши пользователи перенаправляются на GitHub для аутентификации. Однако чтобы это заработало, вам нужно создать клиентские приложения OAuth, как описано в шагах ниже.
Шаг 2: создание OAuth-приложения
Вам нужно будет создать два GitHub OAuth Apps ↗ to use GitHub as an authentication provider for your MCP server, one for local development, and one for production.
Шаг 2.1: создание нового OAuth-приложения для локальной разработки
-
Перейдите в github.com/settings/developers ↗ чтобы создать новое OAuth-приложение со следующими настройками:
- Название приложения:
My MCP Server (local) - URL-адрес домашней страницы:
http://localhost:8788 - Authorization callback URL:
http://localhost:8788/callback
- Название приложения:
-
Для только что созданного OAuth-приложения добавьте ID клиента этого приложения как
GITHUB_CLIENT_IDи сгенерируйте клиентский секрет, добавив его какGITHUB_CLIENT_SECRETк.envфайл в корне вашего проекта, который будут использованы для настройки секретов в локальной среде разработки.touch .env echo 'GITHUB_CLIENT_ID="your-client-id"' >> .env echo 'GITHUB_CLIENT_SECRET="your-client-secret"' >> .env cat .env -
Выполните следующую команду, чтобы запустить сервер разработки:
npm startВаш MCP-сервер теперь работает на
http://localhost:8788/mcp. -
В новом терминале запустите MCP inspector ↗. MCP inspector представляет собой интерактивный MCP-клиент, который позволяет подключаться к вашему MCP-серверу и вызывать инструменты из веб-браузера.
npx @modelcontextprotocol/inspector@latest -
Откройте MCP inspector в вашем веб-браузере:
open http://localhost:5173 -
В inspector введите URL вашего MCP-сервера,
http://localhost:8788/mcp -
В главной панели справа нажмите OAuth Settings кнопку и затем нажмите Быстрый OAuth-процесс.
Вы должны быть перенаправлены на страницу входа или авторизации GitHub. После того как вы предоставите MCP-клиенту (инспектору) доступ к своей учётной записи GitHub, вы будете перенаправлены обратно в инспектор.
-
Нажмите Подключить в боковой панели, и вы должны увидеть кнопку «List Tools», которая покажет список инструментов, предоставляемых вашим MCP-сервером.
Шаг 2.2: создание нового OAuth-приложения для продакшена
Вам нужно будет повторить Шаг 2.1 чтобы создать новое OAuth-приложение для продакшена.
- Перейдите в github.com/settings/developers ↗ чтобы создать новое OAuth-приложение со следующими настройками:
- Название приложения:
My MCP Server (production) - URL-адрес домашней страницы: Введите URL-адрес workers.dev вашего развёрнутого сервера MCP (например:
worker-name.account-name.workers.dev) - Authorization callback URL: Введите
/callbackпуть URL workers.dev вашего развёрнутого MCP-сервера (например:worker-name.account-name.workers.dev/callback)
- Для только что созданного OAuth-приложения добавьте ID клиента и клиентский секрет с помощью Wrangler CLI:
npx wrangler secret put GITHUB_CLIENT_IDnpx wrangler secret put GITHUB_CLIENT_SECRETnpx wrangler secret put COOKIE_ENCRYPTION_KEYИспользуйте любую случайную строку для COOKIE_ENCRYPTION_KEY, например вывод openssl rand -hex 32.
-
Настройте пространство имён KV
a. Создайте пространство имён KV:
npx wrangler kv namespace create "OAUTH_KV"b. Обновите
wrangler.jsoncфайл с полученным ID KV:{ "kvNamespaces": [ { "binding": "OAUTH_KV", "id": "<YOUR_KV_NAMESPACE_ID>" } ] } -
Разверните MCP-сервер в своём Cloudflare
workers.devдомен:npm run deploy -
Подключитесь к серверу, работающему по адресу
worker-name.account-name.workers.dev/mcpс помощью AI Playground ↗, MCP Inspector или другие MCP-клиенты, и авторизуйтесь через GitHub.