企业多租户MCP服务器
    
适用于Microsoft Azure的生产就绪模型上下文协议(MCP)服务器,具有多租户编排、FoundryIQ集成、分层白标签、成本管理和全面的管理仪表板。
🎉 100%完成:通过React管理仪表板、FastAPI后端、Azure基础设施和CI/CD管道,全栈应用程序已准备好进行生产部署。
🎯 快速开始
这个项目的新手? 关注我们 入门指南 有关分步设置说明,包括:
- 安装所需工具(Azure CLI、Docker等)
- 设置GitHub+Azure集成
- 部署您的第一个环境
- 配置租户和品牌
已经熟悉了? 跳到 快速开始 在......下面
特性
- 多租户架构:基于标头的租户隔离,具有可配置的配额和策略
- FoundryIQ集成:通过Microsoft代理框架进行多代理编排
- DataAgent支持:与结构数据代理、SharePoint、OneLake和web源直接集成
- 白标UI:分层主题化(全局+每个租户覆盖),并上传品牌指南
- 成本管理:实时Azure成本跟踪,可配置预算执行
- 速率限制:Redis支持的每个租户配额(RPM、RPD、每月限额)
- 监控:Application Insights,带有预构建的工作簿,用于了解使用情况、成本和性能
- 安全:可选Entra ID身份验证、Azure密钥库机密、托管身份RBAC
- 首次运行向导:所需/可选配置的引导设置
- 灾难恢复:多区域故障转移文档和备份策略
建筑
后端
- 快速API (Python 3.11+)-异步REST API
- Azure SDK -密钥库、Blob存储、成本管理、通信服务
- Microsoft代理框架 -FoundryIQ编排
- 瑞迪斯 -速率限制和缓存
- 开放遥测 -分布式跟踪和度量
前端
- React 18+TypeScript -UI框架
- 维特 -构建工具
- 动态主题 -带有运行时更新的CSS变量
- Recharts -使用和成本可视化
基础设施
- Azure容器应用 -无服务器容器托管
- Redis的Azure缓存 -具有持久性的托管Redis
- Azure 密钥保管库 -秘密管理
- Azure Blob存储+CDN -品牌资产
- 应用洞察 -监控和分析
- Azure成本管理 -账单和预算
快速开始
先决条件
- 具有所有者或贡献者访问权限的Azure订阅
- Azure CLI已安装并通过身份验证
- Docker和Docker Compose(用于本地开发)
- Node.js 18+(用于前端开发)
- Python 3.11+(用于后端开发)
地方发展
- 克隆仓库
git clone https://github.com/your-org/fabric-mcp-demo.git
cd fabric-mcp-demo- 营造当地环境
./scripts/init_local.sh- 配置环境变量
cp .env.example .env
# Edit .env with your Azure resource URLs- 启动服务
docker-compose up -d- 访问应用程序
- 前端:http://localhost:5173
- 后端API:http://localhost:8000
- API文件:http://localhost:8000/docs
Azure部署
- 提供基础设施
./scripts/provision_azure.sh -g -l - 部署应用程序
az acr build --registry --image mcp-server:latest .
az containerapp update --name mcp-server --resource-group --image .azurecr.io/mcp-server:latest- 完成安装向导
- 导航到您的容器应用程序URL
- 按照首次运行向导配置租户、源和品牌
配置
租户配置(config/tenants.yaml)
allow_all: true # Accept any X-Tenant-ID (disable for production)
tenants:
- id: default
name: Default Tenant
enabled: true
foundry_endpoint: https://foundry.azure.com/default
rate_limit_rpm: 100
budget_threshold: 90
budget_enforcement: block全局设置(config/default.yaml)
app_name: Enterprise MCP
allow_all_tenants: true
default_budget_enforcement: block
redis_url: redis://localhost:6379
key_vault_url: https://your-keyvault.vault.azure.net/
entra_enabled: falseAPI使用
与客服聊天
curl -X POST https://your-mcp.azurecontainerapps.io/api/chat \
-H "X-Tenant-ID: tenant-001" \
-H "Content-Type: application/json" \
-d '{
"message": "What is our Q4 revenue?",
"agent_id": "finance-agent"
}'列出可用代理
curl -X GET https://your-mcp.azurecontainerapps.io/api/agents \
-H "X-Tenant-ID: tenant-001"租户管理(行政)
curl -X POST https://your-mcp.azurecontainerapps.io/api/admin/tenants \
-H "Content-Type: application/json" \
-d '{
"id": "tenant-002",
"name": "Contoso Corp",
"foundry_endpoint": "https://foundry.azure.com/contoso"
}'文档
项目结构
fabric-mcp-demo/
├── src/app/ # FastAPI backend
│ ├── main.py # Application entry point
│ ├── routers/ # API endpoints
│ ├── services/ # Business logic
│ ├── middleware/ # Request processing
│ ├── models/ # Pydantic schemas
│ ├── security/ # Auth and validation
│ └── startup/ # Initialization scripts
├── web/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── context/ # React Context providers
│ │ └── api/ # API client
│ └── public/ # Static assets
├── infra/ # Infrastructure-as-code
│ ├── main.bicep # Single-region deployment
│ ├── dr.bicep # Multi-region DR
│ ├── modules/ # Reusable Bicep modules
│ └── workbooks/ # Application Insights workbooks
├── config/ # Configuration files
│ ├── tenants.yaml # Initial tenant definitions
│ └── default.yaml # Global settings
├── scripts/ # Automation scripts
│ ├── init_local.sh # Local dev setup
│ └── provision_azure.sh # Azure provisioning
├── docs/ # Documentation
├── .github/workflows/ # CI/CD pipelines
├── Dockerfile # Container build
├── docker-compose.yml # Local dev stack
└── README.md # This file安全
- 秘密:存储在Azure密钥库中的所有凭据
- 认证:管理员门户的Entra ID集成(可配置)
- 授权:基于角色的访问控制(管理员、成本经理、代理经理)
- 租户隔离:通过请求范围访问
X-Tenant-ID头球 - 网络:支持专用端点和VNET集成
- 合规:通过Application Insights审核日志,启用软删除
📖 看 安全设置指南 为了:
- 部署所需的Azure权限
- Entra ID应用程序注册步骤
- 管理员门户访问控制配置
- 角色分配和安全最佳实践
监控
预构建的Application Insights工作簿:
- 租户使用情况:请求计数、延迟、租户错误
- 速率限制:限制事件、配额使用
- 代理业绩:FoundryIQ代理呼叫指标
- 成本分析:每个租户的成本明细和趋势
- 预算跟踪:预算状态和警报历史记录
贡献
- 复刻仓库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
实施状态
✅ 完成(100%)
- 后端API:9个路由器,40+个端点,7个核心服务-100%
- 前端用户界面:完整的React管理仪表板,8页-100%
- 带有系统健康状况和指标的仪表板 - 租户管理(列表、创建、编辑、删除) - 代理发现和目录 - 使用图表进行成本分析 - 带有实时预览功能的品牌经理 - 通知中心 - 设置和系统信息 - 首次入职设置向导
- 基础设施:完成Azure部署的二头肌模板-100%
- CI/CD:带有自动化测试的GitHub Actions工作流-100%
- 文档:5000多行,涵盖所有方面-100%
- 成本管理:实时跟踪、预测、预算执行-100%
- 速率限制:Redis支持RPM/RPD/每月配额-100%
- 白标品牌:分层主题化与资产上传-100%
- 通知:电子邮件、短信、应用内警报系统-100%
- 监控:租户使用情况和成本的Application Insights工作簿-100%
看 项目_已完成.md 了解完整的实施细节。
快速链接
- 🚀 入门指南 -从头开始完成设置
- 📖 部署指南 -在几分钟内部署到Azure
- 🚨 灾难恢复 -灾难恢复程序和备份
- 📊 API规范 -OpenAPI 3.0文档
- 🎨 品牌指南 -定制和白色标签
- 💻 前端文档 -React管理员仪表板指南(新增!)
- 📋 实施状态 -详细的进度跟踪
- ✅ 部署检查表 -飞行前检查
- 📈 工作簿 -应用洞察仪表板
- 🎉 项目完成 -完整实施摘要(新增!)
- ⚡ 快速参考 -基本命令
支持
- 文档:参见
/docs综合指南目录 - 问题:针对bug或功能请求打开GitHub问题
- 部署帮助:参见 部署.md 和 infra/README.md
