使用说明
🧠 MCP(管理控制平面)+ Azure & Entra ID 自动化代理框架
这个项目是一个 模块化控制平面(MCP) 并且 代理API 用……构建的组合 FastAPI + Microsoft Graph(微软图)。
它实现了跨领域的现实世界管理任务自动化 Azure AD(Entra ID) ——从登录诊断到特权角色自动化——全部 在您的租户(或租户环境中),带有 数据绝不会离开您的环境。
🚀 它的功能
✅(对号,表示正确、确认或同意) ping Microsoft Graph
确认您的应用程序注册、令牌有效性以及Graph连接状态。
✅(这个符号通常表示“正确”或“确认”,在中文中没有直接对应的词汇,但可以根据上下文理解为“正确”或“已确认”的意思。) 检查用户锁定情况
分析登录失败、密码重置以及条件访问的影响。
✅ 自动化PIM(产品信息管理)分配
管理者可以通过代理(支持Slack/Teams/Jira集成)请求并批准限定时间内的符合条件的角色。
✅ 添加你自己的工具
通过简单地添加新功能(如Intune检查、合规性审查、Sentinel查询等)来扩展MCP。
🧩 它是如何拼合在一起的
User / AI Client ─▶ Agent API ─▶ MCP Server ─▶ Microsoft Graph ─▶ Entra ID / Azure AD
│ │
Slack / Jira Local REST calls
所有操作均在本地或您的租户环境中运行。无外部依赖,无隐藏调用。
🛠 先决条件
| 要求 | 描述 |
|---|---|
| Python 3.10+ | 已在3.10.6版本上测试 |
| Azure 应用注册 | 需要 RoleManagement.ReadWrite.Directory, Directory.Read.All,和 AuditLog.Read.All |
| 操作系统 | 支持Windows / Linux / macOS |
| (可选)Jira & Slack/Teams | 用于审批流程 |
⚙️ 设置
1. 克隆仓库
git clone https://github.com/<your-username>/mcp-agent.git
cd mcp-agent
2. 创建一个虚拟环境
python -m venv .venv
.\.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/macOS
3. 安装依赖项
pip install -r requirements.txt
4. 创造 .env 文件
MCP 服务器(.env):
TENANT_ID=<your-tenant-id>
CLIENT_ID=<app-client-id>
CLIENT_SECRET=<client-secret>
PIM_SCOPE_ALLOWLIST=/
PIM_SIMULATE=false
代理(.env):
MCP_BASE=http://127.0.0.1:8000
AGENT_API_KEY=supersecret
APPROVAL_SHARED_SECRET=topsecret
APPROVAL_CLICK_TOKEN=clicksecret
PUBLIC_BASE_URL=http://127.0.0.1:8001
▶️ 运行服务器
1号航站楼 – MCP服务器
uvicorn server:app --reload --port 8000
2号航站楼 – 代理API
uvicorn agent_api:app --reload --port 8001
检查健康状况:
Invoke-RestMethod http://127.0.0.1:8000/health
Invoke-RestMethod http://127.0.0.1:8001/health
💡 示例:检查用户锁定状态
$body = @{ tool="entra_user_lockout"; input=@{ upn="alice@contoso.com" } } | ConvertTo-Json
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8000/run -Body $body -ContentType "application/json"
输出:
{
"upn": "alice@contoso.com",
"status": "ok_after_failures",
"failure_count": 2,
"success_count": 8,
"recommendation": "No action needed. User signed in successfully later."
}
💬 示例:请求PIM角色
$headers = @{ Authorization = "Bearer supersecret" }
$ctx = @{
role_name_or_id = "Helpdesk Administrator"
scope = "/"
duration_minutes = 120
manager_upn = "manager@contoso.com"
justification = "OPS-1432 temporary access"
}
$body = @{ message = "request pim for user@contoso.com"; context = $ctx } | ConvertTo-Json -Depth 6
Invoke-RestMethod -Uri http://127.0.0.1:8001/agent -Method Post -Headers $headers -Body $body -ContentType "application/json"
代理:
- 创建一个Jira工单。
- 向Slack/Teams发送审批链接。
- 等待经理批准。
- 调用MCP执行 真实的PIM(相位调制/相位干涉测量)分配 通过 Microsoft Graph。
🧩 扩展框架
添加一个自定义工具到 mcp_tools.py:
@log_tool
def my_custom_tool(payload: Dict[str, Any]) -> Dict[str, Any]:
return {"message": "Hello from your custom tool!"}
它将自动出现在下方 /tools 并且 /run。
👨💻 作者
赛·维巴夫·古达拉
☁ 云与身份工程师 | Azure • Entra ID • Terraform • Bicep • 安全自动化
探索如何 人工智能代理 能够管理基础设施、身份和合规性,且无需人工干预。
🪪 许可证
MIT 许可证 —— 可自由使用、修改和改进。
只是不要在GitHub上提交凭证或机密信息。
⚡ 下一步行动
- 添加Intune设备合规性检查
- 自动执行条件访问策略
- 通过图表运行Sentinel查询
- 扩展PIM(产品信息管理)审查自动化
🎯 提示:这个仓库已经可以在 模拟模式 如果你还没准备好进行实时图表写入。 翻转
PIM_SIMULATE=true在正式上线前进行安全探索。