ScopeGate
AI访问代理层。连接外部服务(如谷歌),定义细粒度权限,并接收MCP端点URL以供AI代理使用。充当权限网关——只公开您授权的特定功能,比原生OAuth作用域更精细。
技术栈
- 框架:Next.js 16(应用路由器)
- 语言:TypeScript
- 数据库:PostgreSQL+Prisma 7
- 用户界面:顺风CSS v4,shadcn/ui
- 认证:更好的身份验证(数据库支持的会话、Prisma适配器)
- 主控程序:
@modelcontextprotocol/sdk(流式HTTP) - 程序包管理器:pnpm
入门指南
先决条件
- Node.js 18+
- pnpm
- PostgreSQL
设置
- 克隆存储库并安装依赖项:
pnpm install- 复制环境文件并填写您的值:
cp .env.example .env| 变量 | 描述 |
|---|---|
DATABASE_URL | PostgreSQL连接字符串 |
BETTER_AUTH_SECRET | 会话签名密钥 |
BETTER_AUTH_URL | 应用程序基本URL(例如。 http://localhost:3000) |
ADMIN_EMAIL | Bootstrap管理员电子邮件 |
ADMIN_PASSWORD | Bootstrap管理员密码 |
- 运行数据库迁移:
pnpm prisma migrate dev- 启动开发服务器:
pnpm dev项目结构
src/
├── app/
│ ├── (auth)/ # Login & register pages
│ ├── (dashboard)/ # Protected dashboard pages
│ │ └── projects/ # Project management, endpoints, audit, settings
│ ├── api/
│ │ ├── auth/[...all]/ # Better Auth catch-all handler
│ │ ├── projects/ # Projects CRUD, endpoints, services, audit
│ │ └── mcp/[apiKey]/ # MCP Streamable HTTP handler
│ ├── layout.tsx
│ └── page.tsx # Landing page
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── layout/ # Sidebar, header
│ └── shared/ # Reusable app components
├── lib/
│ ├── db.ts # Prisma client singleton
│ ├── auth.ts # Better Auth server instance
│ ├── auth-client.ts # Better Auth client SDK
│ ├── auth-middleware.ts # getCurrentUser() helper
│ ├── bootstrap.ts # Admin user bootstrap on empty DB
│ └── mcp/
│ ├── permissions.ts # Permission groups (source of truth)
│ ├── tools.ts # MCP tool definitions
│ └── handler.ts # MCP server factory
├── generated/prisma/ # Generated Prisma client
└── middleware.ts # Route protection可用脚本
pnpm dev # Start development server
pnpm build # Production build
pnpm start # Start production server
pnpm lint # Run ESLint
pnpm prisma generate # Regenerate Prisma client
pnpm prisma migrate dev # Create and apply migrations
pnpm prisma studio # Open Prisma Studio (DB browser)运作原理
- 登录 --使用管理员凭据登录(首次运行时从环境变量引导)
- 创建项目 --按项目组织端点和服务
- 连接服务 --向项目添加服务连接
- 创建MCP端点 --选择服务连接并选择特定权限(例如。
gmail:read_emails,calendar:create_event) - 使用MCP URL --将端点URL插入任何兼容MCP的AI代理;只显示允许的操作
- 监视器 --跟踪审核日志中的每个请求
权限
权限在中定义 src/lib/mcp/permissions.ts 并按服务分组:
| 组 | 操作 |
|---|---|
| Gmail | gmail:read_emails, gmail:send_email, gmail:list_labels, gmail:search_emails |
| 谷歌日历 | calendar:list_events, calendar:create_event, calendar:update_event, calendar:delete_event |
| 谷歌云端硬盘 | drive:list_files, drive:read_file, drive:create_file, drive:delete_file |
数据库模式
- 用户 --身份验证、团队成员资格
- 会话 --数据库支持的身份验证会话
- 账户 --身份验证提供者凭据(电子邮件/密码)
- 项目 --服务和端点的逻辑分组
- 团队成员 --用户项目与角色(所有者/成员)的关系
- 服务连接 --用于连接服务的OAuth令牌
- Mcp端点 -具有API密钥、速率限制、活动状态的MCP端点
- 端点权限 --每个端点允许的操作
- 审计 --请求日志,包括操作、状态、持续时间、错误
许可证
看 许可证.
