Сервер протокола контекста модели (MCP) + Github OAuth
Это сервер Model Context Protocol (MCP) , который поддерживает удаленные MCP-подключения со встроенным Github OAuth.
Вы можете развернуть его в своей учетной записи Cloudflare, и после того, как вы создадите свое собственное клиентское приложение Github OAuth, у вас будет полностью функциональный удаленный сервер MCP, который вы можете построить. Пользователи смогут подключаться к вашему серверу MCP, войдя в свою учетную запись GitHub.
Вы можете использовать это в качестве справочного примера интеграции других поставщиков OAuth с сервером MCP, развернутым в Cloudflare, с помощью библиотеки workers-oauth-provider
.
Сервер MCP (на базе Cloudflare Workers ):
- Действует как сервер OAuth для ваших клиентов MCP
- Действует как OAuth -клиент для вашего реального сервера OAuth (в данном случае GitHub)
Начиная
Клонируйте репозиторий напрямую и установите зависимости: npm install
.
Кроме того, вы можете использовать командную строку ниже, чтобы создать удаленный сервер MCP на локальном компьютере:
Для производства
Создайте новое приложение GitHub OAuth :
- В качестве URL-адреса домашней страницы укажите
https://mcp-github-oauth.<your-subdomain>.workers.dev
- Для URL-адреса обратного вызова авторизации укажите
https://mcp-github-oauth.<your-subdomain>.workers.dev/callback
- Запишите свой идентификатор клиента и сгенерируйте секретный код клиента.
- Установить секреты через Wrangler
Настройте пространство имен KV
- Создайте пространство имен KV:
wrangler kv:namespace create "OAUTH_KV"
- Обновите файл Wrangler, указав идентификатор KV.
Развертывание и тестирование
Разверните сервер MCP, чтобы сделать его доступным на вашем домене workers.dev. wrangler deploy
Протестируйте удаленный сервер с помощью Inspector :
Введите https://mcp-github-oauth.<your-subdomain>.workers.dev/sse
и нажмите connect. После того, как вы пройдете процесс аутентификации, вы увидите, что инструменты работают:
Теперь у вас развернут удаленный сервер MCP!
Контроль доступа
Этот сервер MCP использует GitHub OAuth для аутентификации. Все аутентифицированные пользователи GitHub могут получить доступ к базовым инструментам, таким как «add» и «userInfoOctokit».
Инструмент «generateImage» доступен только определенным пользователям GitHub, перечисленным в конфигурации ALLOWED_USERNAMES
:
Доступ к удаленному серверу MCP из Claude Desktop
Откройте Claude Desktop и перейдите в Settings -> Developer -> Edit Config. Это откроет файл конфигурации, который управляет тем, к каким серверам MCP Claude может получить доступ.
Замените содержимое следующей конфигурацией. После перезапуска Claude Desktop откроется окно браузера, отображающее вашу страницу входа OAuth. Завершите процесс аутентификации, чтобы предоставить Claude доступ к вашему серверу MCP. После предоставления доступа инструменты станут доступны для использования.
Как только в интерфейсе появятся инструменты (под 🔨), вы можете попросить Клода использовать их. Например: «Не могли бы вы использовать математический инструмент, чтобы сложить 23 и 19?». Клод должен вызвать инструмент и показать результат, сгенерированный сервером MCP.
Для местного развития
Если вы хотите итерировать и тестировать свой сервер MCP, вы можете сделать это в локальной разработке. Для этого вам потребуется создать еще одно приложение OAuth на GitHub:
- В качестве URL-адреса домашней страницы укажите
http://localhost:8788
- Для URL обратного вызова авторизации укажите
http://localhost:8788/callback
- Запишите свой идентификатор клиента и сгенерируйте секретный код клиента.
- Создайте файл
.dev.vars
в корневом каталоге проекта с помощью:
Разработка и тестирование
Запустите сервер локально, чтобы сделать его доступным по http://localhost:8788
wrangler dev
Чтобы протестировать локальный сервер, введите http://localhost:8788/sse
в Inspector и нажмите connect. После того, как вы выполните подсказки, вы сможете "List Tools".
Использование Claude и других клиентов MCP
При использовании Claude для подключения к удаленному серверу MCP вы можете увидеть некоторые сообщения об ошибках. Это связано с тем, что Claude Desktop пока не поддерживает удаленные серверы MCP, поэтому иногда он путается. Чтобы проверить, подключен ли сервер MCP, наведите курсор на значок 🔨 в правом нижнем углу интерфейса Claude. Вы должны увидеть там свои инструменты.
Использование Cursor и других MCP-клиентов
Чтобы подключить Cursor к вашему серверу MCP, выберите Type
: «Команда» и в поле Command
объедините поля команда и аргументы в одно (например npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/sse
).
Обратите внимание, что хотя Cursor поддерживает серверы HTTP+SSE, он не поддерживает аутентификацию, поэтому вам все равно придется использовать mcp-remote
(и использовать сервер STDIO, а не HTTP).
Вы можете подключить свой сервер MCP к другим клиентам MCP, таким как Windsurf, открыв файл конфигурации клиента, добавив тот же JSON, который использовался для настройки Клода, и перезапустив клиент MCP.
Как это работает?
Поставщик OAuth
Библиотека OAuth Provider служит в качестве полной реализации сервера OAuth 2.1 для Cloudflare Workers. Она обрабатывает сложности потока OAuth, включая выпуск токенов, проверку и управление. В этом проекте она играет двойную роль:
- Аутентификация клиентов MCP, подключающихся к вашему серверу
- Управление подключением к сервисам OAuth GitHub
- Безопасное хранение токенов и состояния аутентификации в хранилище KV
Прочный МКП
Durable MCP расширяет базовую функциональность MCP с помощью Durable Objects от Cloudflare, обеспечивая:
- Постоянное управление состоянием вашего сервера MCP
- Безопасное хранение контекста аутентификации между запросами
- Доступ к аутентифицированной информации пользователя через
this.props
- Поддержка условной доступности инструмента на основе личности пользователя
МКП удаленный
Библиотека MCP Remote позволяет вашему серверу предоставлять инструменты, которые могут вызываться клиентами MCP, такими как Inspector. Она:
- Определяет протокол для связи между клиентами и вашим сервером.
- Предоставляет структурированный способ определения инструментов
- Выполняет сериализацию и десериализацию запросов и ответов.
- Поддерживает соединение Server-Sent Events (SSE) между клиентами и вашим сервером.
This server cannot be installed
Сервер Model Context Protocol, который поддерживает удаленные подключения и аутентифицирует пользователей через GitHub OAuth, позволяя им получать доступ к инструментам на основе их идентификатора GitHub.