ADAPTA MCP网关
案例英特尔学院+AADAPA
统一的网关系统,可将自然语言命令转换为在多个 API 上执行的操作,并提供集中式安全和身份验证管理。
案例幻灯片的链接:
建筑
该系统由6个主要组件组成:
- 控制面板 (步骤 0):设置工具和凭据
- 演示界面 (步骤 1):命令输入的 Web 界面
- 统一 网关 (步骤 2):接收所有请求的单个后端
- 智能路由 (步骤3):解释命令并决定行动的LLM
- MCPS中心 (步骤 4):每个工具/API 的适配器
- 钥匙保险箱 (步骤 5):集中管理凭据
- 合并答案 (步骤 6):聚合和格式化响应
安装
pip install -r requirements.txt配置
1. 安装依赖关系
pip install -r requirements.txt2. 设置环境变量
执行脚本卸载:
python setup.py或手动创建文件 .env 具有以下变量:
GOOGLE_CLIENT_IDGoogle OAuth 客户端 ID 谷歌云控制台)GOOGLE_CLIENT_SECRETGoogle OAuth 客户端的秘密GOOGLE_REDIRECT_URI重定向 URI (默认 :http://localhost:8000/auth/google/callback)GEMINI_API_KEYGoogle Gemini API 密钥 谷歌人工智能工作室)SLACK_BOT_TOKENSlack 机器人令牌(可选,可通过面板配置)SECRET_KEY: 自动生成的绝密密钥ENCRYPTION_KEY: 自动生成的加密密钥
3. 设置 Google OAuth
- 访问 谷歌云控制台
- 创建新工程或选择现有工程
- 使用API做谷歌日历
- 配置 OAuth 同意屏幕
- 创建 OAuth 2.0 凭据(“Web 应用程序”类型)
- 添加
http://localhost:8000/auth/google/callback作为允许的重定向 URI。
- 使用 TLS 进行本地开发(推荐):您可以生成自签名证书并使用 https://localhost:8000/auth/google/callback 作为允许的重定向 URI。 - 仓库包含一个证书生成器 tools/generate_self_signed_cert.py 操作系统脚本 run_backend.bat / run_backend.sh 已更新以便在证书存在时自动启动 TLS 后端。
- 将客户端ID和客户端秘密复制到文件
.env
执行
视窗
# Terminal 1 - Backend
run_backend.bat
# Terminal 2 - Frontend
run_frontend.batLinux/Mac
# Terminal 1 - Backend
chmod +x run_backend.sh
./run_backend.sh
# Terminal 2 - Frontend
chmod +x run_frontend.sh
./run_frontend.sh手册
# Terminal 1 - Backend (sem TLS)
uvicorn backend.main:app --reload --port 8000
# Terminal 1 - Backend (com TLS usando certificados em `certs/`)
# Gere certificados com: `python tools/generate_self_signed_cert.py`
uvicorn backend.main:app --reload --port 8000 --ssl-certfile certs/cert.pem --ssl-keyfile certs/key.pem
# Terminal 2 - Frontend
streamlit run frontend/app.py访问
- 前端(接口): http://localhost:8501
- 后端(API): http://localhost:8000
- API 文档: http://localhost:8000/docs
使用
一步一步
- Inicie os servidors (后端e前端)
- 配置凭据:
- 在 Web 界面中访问控制面板 - 连接您的 Google 帐户 (OAuth 2.0) - A 型 - 配置静态 API 密钥(Slack 等) - B 类型
- 执行命令:
- 转到“执行命令”页面 - 用自然语言输入命令 - 系统解释、执行和返回合并响应
身份验证流程
Tipo A(OAuth 2.0-谷歌日历):
- 用户点击控制面板中的“连接Google”
- 被重定向到 Google 登录屏幕
- 允许访问
- 系统接收
refresh_token并存放在保险箱 - 必要时,使用
refresh_token获取access_token临时
类型 B (静态密钥 - Slack):
- 管理员在控制面板中插入 API 密钥
- 密钥存储在保险箱(加密)
- 必要时可直接检索并使用密钥
例子
命令 :
Marque uma 'Reunião de Alinhamento' no meu Google Calendar amanhã às 10h e avise no canal #projetos do Slack que a reunião foi marcada.结果:
- 在 Google 日历中创建的事件
- 在 Slack 上发送的消息
- 综合答案:“好了!我在你的 Google 日历中标记了‘对齐会议’,并通知了 Slack 上的 #projects 频道。”
