Firebase认证代理服务器

一个即用型OAuth2认证服务器,集成Firebase认证与模型上下文协议(MCP),为MCP服务器和客户端提供安全认证。

  • by muthuishere
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 muthuishere/mcp-firebase-auth-server

使用说明

Firebase的MCP认证服务器代理

一个即将部署的OAuth2身份验证服务器,它将Firebase身份验证与模型上下文协议(MCP)集成在一起。此代理服务器处理OAuth2流,并为MCP服务器和客户端提供安全身份验证。

🔥 这是什么?

这是一个 完整的OAuth2身份验证服务器 即:

  • 🔐 处理OAuth2流 适用于MCP客户端(VS Code、Claude Desktop等)
  • 🔥 使用Firebase身份验证 作为后端身份提供者
  • 🚀 准备部署 使用Docker或直接使用Gradle
  • 🎯 MCP兼容 具有适当的发现端点和错误处理
  • ⚡ 易于配置 仅包含环境变量

🏗️ 建筑

graph TD
    A[MCP Client<br/>VS Code, Claude Desktop] --> B[Your MCP Server<br/>:8080]
    B --> C[MCP Auth Server Proxy<br/>:9000 - This Project]
    C --> D[Firebase Authentication<br/>Google's Service]
    
    style C fill:#f9f,stroke:#333,stroke-width:3px
    style C color:#000
  • MCP客户端 → 您的MCP服务器→ 此身份验证代理 → 火基
  • 此代理处理所有OAuth2复杂性,因此您的MCP服务器保持简单
  • Firebase提供实际的用户身份验证和管理

✨ 特性

OAuth2合规性

  • ✅ 使用PKCE的授权码流
  • ✅ 代币交换和刷新
  • ✅ 客户注册
  • ✅ OAuth2发现端点
  • ✅ 正确处理WWW-Authenticate标头的错误

Firebase集成

  • ✅ Firebase ID令牌验证
  • ✅ 用户资料提取(电子邮件、姓名、图片)
  • ✅ 服务帐户身份验证
  • ✅ JWT声明中的安全令牌嵌入

MCP兼容性

  • ✅ .well-known 发现端点
  • ✅ 适当的资源元数据响应
  • ✅ MCP检查器兼容
  • ✅ 为web客户端启用CORS

生产就绪

  • ✅ Docker容器化
  • ✅ 基于环境的配置
  • ✅ 健康检查端点
  • ✅ 综合录井
  • ✅ 专业UI模板

🚀 快速开始

先决条件

  • 启用身份验证的Firebase项目
  • Firebase服务帐户密钥
  • Java 17+(如果在本地运行)或Docker

1.克隆和配置

git clone https://github.com/muthuishere/mcp-firebase-auth-server.git
cd mcp-firebase-auth-server

# Copy and edit environment file
cp .env.example .env
# Edit .env with your Firebase credentials

2.部署

# Option 1: Docker (Recommended)
docker-compose up -d

# Option 2: Local development
./gradlew bootRun

3.验证

# Check OAuth2 discovery
curl http://localhost:9000/.well-known/oauth-authorization-server

# Visit the auth server
open http://localhost:9000

🎉 就是这样! 您的OAuth2身份验证服务器正在端口9000上运行。

🛠️ 配置

环境变量

变量 描述 示例
AUTH_SERVER_PORT 身份验证服务器的端口 9000
MCP_AUTH_SERVER_URL 此服务器的公共URL http://localhost:9000
FIREBASE_PROJECT_ID 您的Firebase项目ID my-project-123
FIREBASE_API_KEY Firebase web API密钥 AIzaSy...
FIREBASE_SERVICE_ACCOUNT_KEY Firebase服务帐户JSON {"type":"service_account",...}

Firebase设置

  1. 在以下位置创建Firebase项目 Firebase控制台
  2. 启用与所需提供商(谷歌、电子邮件/密码等)的身份验证
  3. 从项目设置生成服务帐户密钥→ 服务帐户
  4. 从项目设置获取web API密钥→ 将军

📖 可用端点

OAuth2端点

  • GET /.well-known/oauth-authorization-server -OAuth2服务器元数据
  • GET /.well-known/openid-configuration -OpenID连接发现
  • GET /oauth2/authorize -授权端点
  • POST /oauth2/token -令牌交换端点
  • POST /oauth2/refresh -令牌刷新端点
  • POST /oauth2/register -动态客户端注册
  • POST /oauth2/consent -用户同意处理

认证流程

  • GET / -登录页面
  • GET /login -备选登录端点
  • POST /api/auth/session -会话身份验证
  • GET /api/config -客户端配置

健康与监测

  • GET /api/health -简单的健康检查
  • GET /oauth2/health -详细的健康状况

🔗 与您的MCP服务器集成

此身份验证服务器旨在与您的自定义MCP服务器配合使用。您的MCP服务器需要实现特定的端点才能与此代理集成。

📋 完整集成指南→

集成指南包括:

  • MCP服务器所需的REST API端点
  • JWT令牌验证逻辑
  • 身份验证错误处理
  • 当地开发设置
  • MCP检验员测试

🎨 用户界面

认证服务器包括具有专业外观的web模板,包括:

  • 🔥 带有消防图标的Firebase品牌
  • 📱 响应式设计
  • 🎯 清晰的OAuth2流程指南
  • 👤 个人归因和链接
  • ❌ 正确的错误处理页面

🐳 部署选项

Docker Compose(推荐)

version: '3.8'
services:
  mcp-auth-server:
    image: muthuishere/mcp-firebase-auth-server
    ports:
      - "9000:9000"
    env_file:
      - .env

Docker运行

docker run -p 9000:9000 --env-file .env muthuishere/mcp-firebase-auth-server

云部署

部署到任何支持Docker的平台:

  • AWS ECS/Fargate
  • 谷歌云运行
  • Azure容器实例
  • 数字海洋应用平台
  • 铁路,渲染,Heroku

🧪 测试

手动测试

# Test OAuth2 discovery
curl http://localhost:9000/.well-known/oauth-authorization-server

# Test authorization (will redirect to login)
open "http://localhost:9000/oauth2/authorize?response_type=code&client_id=test&redirect_uri=http://localhost:3000/callback"

与MCP检查员一起

使用MCP检查器通过可视化界面测试完整的OAuth2流。

🤝 贡献

欢迎投稿!该项目通过提供标准化的身份验证解决方案来帮助MCP生态系统。

开发环境设置

git clone https://github.com/muthuishere/mcp-firebase-auth-server.git
cd mcp-firebase-auth-server
./gradlew bootRun

项目结构

  • src/main/java/tools/muthuishere/mcpauthserver/ -主要应用代码
  • src/main/resources/templates/ -身份验证流的HTML模板
  • referencemcpserver/ -MCP服务器集成的参考实现
  • mcp-server-setup.md -完整的集成指南

📝 许可证

麻省理工学院许可证-请在您的项目中自由使用!

👨‍💻 作者

Muthukumaran Navanethakrishnan

🆘 支持