OAuth认证服务器

一个使用Google OAuth 2.0进行认证的MCP fetch服务器,可与Claude.ai集成。

  • by atrawog
  • 本地部署
  • 更新于
在 GitHub 查看 atrawog/mcp-server

使用说明

使用Google OAuth的MCP获取服务器-安装指南

本指南将引导您在以下位置设置安全的MCP获取服务器 mcp-fetch.atradev.org 使用Google OAuth 2.0进行身份验证,并将其与Claude.ai集成。

先决条件

  • 域控制 hexaplant.com
  • 具有管理员权限的Google Workspace帐户
  • 安装了Docker和Docker Compose的服务器
  • DNS配置的基本知识

手动配置步骤

1.谷歌云控制台设置

创建新项目

  1. 首选 谷歌云控制台
  2. 点击“选择项目”→ “新项目”
  3. 将其命名为“MCP Fetch Server”并创建

启用所需的API

  1. 转到“API和服务”→ “图书馆”
  2. 启用以下API:
    • Google+API
    • Google标识工具包API
    • MCP服务器可能需要的任何其他API

配置OAuth同意屏幕

  1. 转到“API和服务”→ “OAuth同意屏幕”
  2. 选择 内部 (仅适用于Google Workspace用户)
  3. 填写所需信息:
    • 应用程序名称:MCP获取服务器
    • 用户支持电子邮件:atrawog@hexaplant.com
    • 授权域名:添加 hexaplant.com
    • 开发者联系方式:atrawog@hexaplant.com
  4. 添加作用域:
    • openid
    • email
    • profile
  5. 保存配置

创建OAuth 2.0凭据

  1. 转到“API和服务”→ “凭据”
  2. 点击“创建凭据”→ “OAuth客户端ID”
  3. 选择 Web应用程序
  4. 配置客户端:
    Name: MCP Fetch Server Web Client
    
    Authorized JavaScript origins:
    - https://mcp-fetch.atradev.org
    - https://auth.atradev.org
    
    Authorized redirect URIs:
    - https://auth.atradev.org/oauth/callback
    - https://mcp-fetch.atradev.org/oauth/callback
    
  5. 点击“创建”
  6. 重要:下载JSON配置文件
  7. 保存客户端ID和客户端密码以供以后使用

2.DNS配置

将以下DNS记录添加到您的域中:

类型 名称 值 TTL
A mcp-fetch.atradev.org YOUR_SERVER_IP 300
A auth.atradev.org YOUR_SERVER_IP 300

等待DNS传播(通常为5-30分钟)。

3.服务器准备

创建目录结构

mkdir -p mcp-server/{secrets,config/{redis,oauth-proxy,fetch}}
cd mcp-server

准备秘密

# Move the downloaded Google OAuth JSON to secrets
mv ~/Downloads/client_secret_*.json secrets/google_oauth_config.json

# Generate JWT secret
openssl rand -hex 32 > secrets/jwt_secret.txt

# Generate session secret
openssl rand -hex 32 > secrets/session_secret.txt

# Set proper permissions
chmod 600 secrets/*

创建环境文件

cat > .env << EOF
# Domain Configuration
DOMAIN=atradev.org
ACME_EMAIL=letsencrypt@dorgeln.org

# Access Control
ALLOWED_EMAILS=atrawog@hexaplant.com
EOF

Redis配置

cat > config/redis/redis.conf << EOF
# Redis configuration for MCP
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
maxmemory 256mb
maxmemory-policy allkeys-lru
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
EOF

4.部署堆栈

# Clone or create the implementation files
# (See claude.md for implementation details)

# Build and start services
docker-compose build
docker-compose up -d

# Check logs
docker-compose logs -f

# Verify all services are healthy
docker-compose ps

5.第ai条整合

在Claude.ai设置中

  1. 转到Claude.ai→ 设置→ 集成
  2. 添加新的自定义MCP集成
  3. 配置以下内容:
字段 值
名称 MCP获取服务器
类型 远程MCP服务器
授权类型 OAuth 2.0
客户端ID YOUR_GOOGLE_Client_ID
客户端密码 YOUR_GOOGLE_Client_CRET
授权URL https://auth.atradev.org/oauth/authorize
令牌URL https://auth.atradev.org/oauth/token
MCP端点 https://mcp-fetch.atradev.org/api/v1/mcp
作用域 获取:读取
  1. 保存并测试集成

6.测试和验证

测试OAuth流

  1. 打开私人浏览器窗口
  2. 首选 https://auth.atradev.org/oauth/authorize
  3. 您应该被重定向到谷歌登录
  4. 登录后,使用令牌验证您是否被重定向回

测试MCP端点

# Get a token first through the OAuth flow
# Then test the MCP endpoint
curl -X POST https://mcp-fetch.atradev.org/api/v1/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"describe","id":1}'

验证SSL证书

# Check auth domain
openssl s_client -connect auth.atradev.org:443 -servername auth.atradev.org

# Check MCP domain
openssl s_client -connect mcp-fetch.atradev.org:443 -servername mcp-fetch.atradev.org

7.维护

查看日志

# All services
docker-compose logs -f

# Specific service
docker-compose logs -f oauth-proxy
docker-compose logs -f mcp-gateway
docker-compose logs -f caddy

更新服务

# Pull latest images
docker-compose pull

# Rebuild and restart
docker-compose down
docker-compose build --no-cache
docker-compose up -d

备份

# Backup data volumes
docker run --rm -v mcp-server_redis-data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/redis-data-$(date +%Y%m%d).tar.gz -C /data .

故障排除

常见问题

  1. “重定向URI无效”错误

    • 确保Google Cloud Console中的重定向URI完全匹配
    • 检查尾部斜线
    • 验证HTTPS是否正常工作
  2. 谷歌的“403禁止”

    • 确保OAuth同意屏幕配置为内部使用
    • 验证用户电子邮件域是否为@hexaplant.com
    • 检查用户是否在ALLOWED_EMAILS中(如果已配置)
  3. SSL证书问题

    • 确保端口80和443打开
    • 检查Caddy日志中的Let’s Encrypt错误
    • 验证DNS记录是否配置正确
  4. MCP端点“未经授权”

    • 检查令牌过期(令牌有效期为1小时)
    • 验证Redis是否正在运行且可访问
    • 检查oauth代理日志是否存在验证错误

调试模式

要启用调试日志记录,请执行以下操作:

# Update .env file
echo "LOG_LEVEL=debug" >> .env

# Restart services
docker-compose restart

安全说明

  1. 永远不要泄露秘密:The secrets/ 目录应位于 .gitignore
  2. 定期更新:保持Docker映像更新以获取安全补丁
  3. 监控日志:定期检查日志中的可疑活动
  4. 备份机密:保存机密文件的安全备份
  5. 速率限制:默认值为每个用户每分钟100个请求

支持

针对以下特定问题:

许可证

此配置按原样提供,用于MCP获取服务器。