MCP Github OAuth
Un servidor MCP con soporte integrado de OAuth de GitHub, desplegable en Cloudflare Workers.
Documentación
Servidor de Model Context Protocol (MCP) + Github OAuth
Este es un servidor de Model Context Protocol (MCP) que admite conexiones MCP remotas, con Github OAuth integrado.
Puedes implementarlo en tu propia cuenta de Cloudflare y, después de crear tu propia aplicación cliente de Github OAuth, tendrás un servidor MCP remoto completamente funcional sobre el cual puedes desarrollar. Los usuarios podrán conectarse a tu servidor MCP iniciando sesión con su cuenta de GitHub.
Puedes usar esto como un ejemplo de referencia para integrar otros proveedores de OAuth con un servidor MCP implementado en Cloudflare, utilizando la biblioteca workers-oauth-provider.
El servidor MCP (impulsado por Cloudflare Workers):
- Actúa como Servidor OAuth para tus clientes MCP
- Actúa como Cliente OAuth para tu servidor OAuth real (en este caso, GitHub)
Primeros Pasos
Clona el repositorio directamente e instala las dependencias: npm install.
Alternativamente, puedes usar la línea de comandos a continuación para crear el servidor MCP remoto en tu máquina local:
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth
Para Producción
Crea una nueva Aplicación OAuth de GitHub:
- Para la URL de la página de inicio, especifica
https://mcp-github-oauth.<your-subdomain>.workers.dev - Para la URL de devolución de llamada de autorización, especifica
https://mcp-github-oauth.<your-subdomain>.workers.dev/callback - Anota tu ID de Cliente y genera un secreto de Cliente.
- Establece los secretos mediante 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
Configurar un espacio de nombres KV
- Crea el espacio de nombres KV:
wrangler kv:namespace create "OAUTH_KV" - Actualiza el archivo de Wrangler con el ID de KV
Implementar y Probar
Implementa el servidor MCP para que esté disponible en tu dominio workers.dev
wrangler deploy
Prueba el servidor remoto usando Inspector:
npx @modelcontextprotocol/inspector@latest
Ingresa https://mcp-github-oauth.<your-subdomain>.workers.dev/sse y presiona conectar. Una vez que completes el flujo de autenticación, verás las Herramientas funcionando:
¡Ahora tienes un servidor MCP remoto implementado!
Control de Acceso
Este servidor MCP utiliza GitHub OAuth para la autenticación. Todos los usuarios autenticados de GitHub pueden acceder a herramientas básicas como "add" y "userInfoOctokit".
La herramienta "generateImage" está restringida a usuarios específicos de GitHub que aparecen en la configuración de ALLOWED_USERNAMES:
// Add GitHub usernames for image generation access
const ALLOWED_USERNAMES = new Set([
'yourusername',
'teammate1'
]);
Acceder al servidor MCP remoto desde Claude Desktop
Abre Claude Desktop y navega a Configuración -> Desarrollador -> Editar Configuración. Esto abre el archivo de configuración que controla a qué servidores MCP puede acceder Claude.
Reemplaza el contenido con la siguiente configuración. Una vez que reinicies Claude Desktop, se abrirá una ventana del navegador mostrando tu página de inicio de sesión de OAuth. Completa el flujo de autenticación para otorgar a Claude acceso a tu servidor MCP. Después de otorgar acceso, las herramientas estarán disponibles para que las uses.
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp-github-oauth.<your-subdomain>.workers.dev/sse"
]
}
}
}
Una vez que las Herramientas (bajo 🔨) aparezcan en la interfaz, puedes pedirle a Claude que las use. Por ejemplo: "¿Podrías usar la herramienta de matemáticas para sumar 23 y 19?". Claude debería invocar la herramienta y mostrar el resultado generado por el servidor MCP.
Para Desarrollo Local
Si deseas iterar y probar tu servidor MCP, puedes hacerlo en desarrollo local. Esto requerirá que crees otra Aplicación OAuth en GitHub:
- Para la URL de la página de inicio, especifica
http://localhost:8788 - Para la URL de devolución de llamada de autorización, especifica
http://localhost:8788/callback - Anota tu ID de Cliente y genera un secreto de Cliente.
- Crea un archivo
.dev.varsen la raíz de tu proyecto con:
GITHUB_CLIENT_ID=your_development_github_client_id
GITHUB_CLIENT_SECRET=your_development_github_client_secret
Desarrollar y Probar
Ejecuta el servidor localmente para que esté disponible en http://localhost:8788
wrangler dev
Para probar el servidor local, ingresa http://localhost:8788/sse en Inspector y presiona conectar. Una vez que sigas las indicaciones, podrás "Listar Herramientas".
Usando Claude y otros Clientes MCP
Cuando uses Claude para conectarte a tu servidor MCP remoto, es posible que veas algunos mensajes de error. Esto se debe a que Claude Desktop aún no admite servidores MCP remotos, por lo que a veces se confunde. Para verificar si el servidor MCP está conectado, pasa el cursor sobre el ícono 🔨 en la esquina inferior derecha de la interfaz de Claude. Deberías ver tus herramientas disponibles allí.
Usando Cursor y otros Clientes MCP
Para conectar Cursor con tu servidor MCP, elige Type: "Comando" y en el campo Command, combina los campos de comando y argumentos en uno solo (por ejemplo, npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/sse).
Ten en cuenta que, aunque Cursor admite servidores HTTP+SSE, no admite autenticación, por lo que aún necesitas usar mcp-remote (y usar un servidor STDIO, no uno HTTP).
Puedes conectar tu servidor MCP a otros clientes MCP como Windsurf abriendo el archivo de configuración del cliente, agregando el mismo JSON que se usó para la configuración de Claude y reiniciando el cliente MCP.
¿Cómo funciona?
Proveedor de OAuth
La biblioteca del Proveedor de OAuth sirve como una implementación completa del servidor OAuth 2.1 para Cloudflare Workers. Maneja las complejidades del flujo de OAuth, incluida la emisión, validación y gestión de tokens. En este proyecto, desempeña el doble rol de:
- Autenticar clientes MCP que se conectan a tu servidor
- Gestionar la conexión con los servicios de OAuth de GitHub
- Almacenar de forma segura tokens y estado de autenticación en el almacenamiento KV
MCP Durable
MCP Durable extiende la funcionalidad base de MCP con los Objetos Durables de Cloudflare, proporcionando:
- Gestión de estado persistente para tu servidor MCP
- Almacenamiento seguro del contexto de autenticación entre solicitudes
- Acceso a información de usuarios autenticados mediante
this.props - Soporte para disponibilidad condicional de herramientas según la identidad del usuario
MCP Remoto
La biblioteca MCP Remoto permite que tu servidor exponga herramientas que pueden ser invocadas por clientes MCP como Inspector. Esta:
- Define el protocolo para la comunicación entre clientes y tu servidor
- Proporciona una forma estructurada de definir herramientas
- Maneja la serialización y deserialización de solicitudes y respuestas
- Mantiene la conexión de Eventos Enviados por el Servidor (SSE) entre clientes y tu servidor