Remote MCP Server with GitHub OAuth

by danrthompson

Сервер протокола контекста модели (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 на локальном компьютере:

npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth

Для производства

Создайте новое приложение GitHub OAuth :

  • В качестве URL-адреса домашней страницы укажите https://mcp-github-oauth.<your-subdomain>.workers.dev
  • Для URL-адреса обратного вызова авторизации укажите https://mcp-github-oauth.<your-subdomain>.workers.dev/callback
  • Запишите свой идентификатор клиента и сгенерируйте секретный код клиента.
  • Установить секреты через Wrangler
wrangler secret put GITHUB_CLIENT_ID wrangler secret put GITHUB_CLIENT_SECRET wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. openssl rand -hex 32
Настройте пространство имен KV
  • Создайте пространство имен KV: wrangler kv:namespace create "OAUTH_KV"
  • Обновите файл Wrangler, указав идентификатор KV.
Развертывание и тестирование

Разверните сервер MCP, чтобы сделать его доступным на вашем домене workers.dev. wrangler deploy

Протестируйте удаленный сервер с помощью Inspector :

npx @modelcontextprotocol/inspector@latest

Введите https://mcp-github-oauth.<your-subdomain>.workers.dev/sse и нажмите connect. После того, как вы пройдете процесс аутентификации, вы увидите, что инструменты работают:

Теперь у вас развернут удаленный сервер MCP!

Контроль доступа

Этот сервер MCP использует GitHub OAuth для аутентификации. Все аутентифицированные пользователи GitHub могут получить доступ к базовым инструментам, таким как «add» и «userInfoOctokit».

Инструмент «generateImage» доступен только определенным пользователям GitHub, перечисленным в конфигурации ALLOWED_USERNAMES :

// Add GitHub usernames for image generation access const ALLOWED_USERNAMES = new Set([ 'yourusername', 'teammate1' ]);

Доступ к удаленному серверу MCP из Claude Desktop

Откройте Claude Desktop и перейдите в Settings -> Developer -> Edit Config. Это откроет файл конфигурации, который управляет тем, к каким серверам MCP Claude может получить доступ.

Замените содержимое следующей конфигурацией. После перезапуска Claude Desktop откроется окно браузера, отображающее вашу страницу входа OAuth. Завершите процесс аутентификации, чтобы предоставить Claude доступ к вашему серверу MCP. После предоставления доступа инструменты станут доступны для использования.

{ "mcpServers": { "math": { "command": "npx", "args": [ "mcp-remote", "https://mcp-github-oauth.<your-subdomain>.workers.dev/sse" ] } } }

Как только в интерфейсе появятся инструменты (под 🔨), вы можете попросить Клода использовать их. Например: «Не могли бы вы использовать математический инструмент, чтобы сложить 23 и 19?». Клод должен вызвать инструмент и показать результат, сгенерированный сервером MCP.

Для местного развития

Если вы хотите итерировать и тестировать свой сервер MCP, вы можете сделать это в локальной разработке. Для этого вам потребуется создать еще одно приложение OAuth на GitHub:

  • В качестве URL-адреса домашней страницы укажите http://localhost:8788
  • Для URL обратного вызова авторизации укажите http://localhost:8788/callback
  • Запишите свой идентификатор клиента и сгенерируйте секретный код клиента.
  • Создайте файл .dev.vars в корневом каталоге проекта с помощью:
GITHUB_CLIENT_ID=your_development_github_client_id GITHUB_CLIENT_SECRET=your_development_github_client_secret
Разработка и тестирование

Запустите сервер локально, чтобы сделать его доступным по 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) между клиентами и вашим сервером.
-
security - not tested
-
license - not tested
-
quality - not tested

Сервер Model Context Protocol, который поддерживает удаленные подключения и аутентифицирует пользователей через GitHub OAuth, позволяя им получать доступ к инструментам на основе их идентификатора GitHub.

  1. Начиная
    1. Для производства
    2. Контроль доступа
    3. Доступ к удаленному серверу MCP из Claude Desktop
    4. Для местного развития
  2. Как это работает?
    1. Поставщик OAuth
    2. Прочный МКП
    3. МКП удаленный
ID: bttey7bfuf