微软图形MCP服务器

一个基于微软图形API的远程模型上下文协议服务器,用于Azure AD用户管理操作,支持多连接并与Amazon Bedrock协同工作。

  • by peterholko-pingidentity
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 peterholko-pingidentity/microsoft_graph_mcp_server

使用说明

微软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.All
    • Directory.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安装程序

创建应用程序注册

  1. 首选 Azure门户 → Azure Active Directory→ 应用程序注册
  2. 点击“新建注册”
  3. 名称:“MCP图形服务器”
  4. 支持的帐户类型:“单租户”
  5. 点击“注册”

配置权限

  1. 转到“API权限”
  2. 添加权限→ Microsoft Graph→ 应用程序权限
  3. 添加:
    • User.ReadWrite.All
    • Directory.ReadWrite.All
  4. 点击“授予管理员同意”

创建客户端密码

  1. 转到“证书和机密”
  2. 点击“新建客户端密码”
  3. 添加描述和过期时间
  4. 立即复制机密值(您将不会再看到它)

获取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代理:

  1. 将此服务器部署到可公开访问的端点(AWS ECS、EC2、Lambda等)
  2. 使用服务器的MCP端点URL配置您的Bedrock代理: https://your-domain.com/mcp
  3. 代理现在可以调用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许可证-有关详细信息,请参阅许可证文件