使用说明
微软Graph MCP服务器与亚马逊基岩
一个光滑的远程模型上下文协议(MCP)服务器,它封装了用于用户管理操作的Microsoft Graph API。支持多个同时连接,旨在与Amazon Bedrock配合使用。
特性
- 远程MCP协议:完全SSE(服务器发送事件)传输支持
- 多个连接:支持并发客户端的异步架构
- Microsoft图形集成:直接Azure AD用户管理
- 4核心工具:
create_user-创建新的Azure AD用户read_user-检索用户信息update_user-修改现有用户delete_user-从Azure AD中删除用户
先决条件
- Python 3.10+
- 具有适当权限的Azure AD应用程序:
User.ReadWrite.AllDirectory.ReadWrite.All
- Azure AD租户ID、客户端ID和客户端密钥
快速开始
1.克隆和安装
git clone <repository-url>
cd microsoft_graph_mcp_server
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
2.配置环境
cp .env.example .env
编辑 .env 使用您的Azure凭据:
AZURE_TENANT_ID=your-tenant-id-here
AZURE_CLIENT_ID=your-client-id-here
AZURE_CLIENT_SECRET=your-client-secret-here
PORT=8000
3.运行服务器
python server.py
服务器将于启动 http://localhost:8000 MCP端点位于 /mcp.
Azure AD安装程序
创建应用程序注册
- 首选 Azure门户 → Azure Active Directory→ 应用程序注册
- 点击“新建注册”
- 名称:“MCP图形服务器”
- 支持的帐户类型:“单租户”
- 点击“注册”
配置权限
- 转到“API权限”
- 添加权限→ Microsoft Graph→ 应用程序权限
- 添加:
User.ReadWrite.AllDirectory.ReadWrite.All
- 点击“授予管理员同意”
创建客户端密码
- 转到“证书和机密”
- 点击“新建客户端密码”
- 添加描述和过期时间
- 立即复制机密值(您将不会再看到它)
获取ID
- 租户ID:概述→ 目录(租户)ID
- 客户端ID:概述→ 应用程序(客户端)ID
MCP工具
create_user
在Azure AD中创建新用户。
{
"userPrincipalName": "john.doe@yourdomain.com",
"displayName": "John Doe",
"mailNickname": "john.doe",
"password": "SecureP@ssw0rd!"
}
read_user
获取用户信息。
{
"userId": "john.doe@yourdomain.com"
}
update_user
更新用户属性。
{
"userId": "john.doe@yourdomain.com",
"displayName": "John M. Doe",
"jobTitle": "Senior Engineer",
"department": "Engineering"
}
删除用户
删除用户。
{
"userId": "john.doe@yourdomain.com"
}
与Amazon Bedrock一起使用
此服务器实现了远程MCP协议,可以连接到Amazon Bedrock代理:
- 将此服务器部署到可公开访问的端点(AWS ECS、EC2、Lambda等)
- 使用服务器的MCP端点URL配置您的Bedrock代理:
https://your-domain.com/mcp - 代理现在可以调用Microsoft Graph工具
建筑
- MCP服务器:官方
mcp开发包 - 运输:用于远程连接的SSE(服务器发送事件)
- Web框架:Starlette(轻量级ASGI)
- 图形客户端:官方
msgraph-sdk - 认证:Azure身份与客户端凭据流
发展
该服务器以最小的依赖关系和干净的异步/等待模式构建,以实现最大的性能和可维护性。
项目结构
microsoft_graph_mcp_server/
├── server.py # Main MCP server implementation
├── requirements.txt # Python dependencies
├── .env.example # Environment template
├── .gitignore # Git ignore rules
└── README.md # This file
安全须知
- 永不承诺
.env文件 - 定期轮换客户端机密
- 使用最小权限
- 启用Azure AD审核日志记录
- 考虑在生产中使用托管身份
故障排除
身份验证失败:验证租户ID、客户端ID和密钥是否正确
权限不足:确保为Graph API权限授予管理员同意
连接问题:检查防火墙规则和网络连接
许可证
MIT许可证-有关详细信息,请参阅许可证文件