MCP进入图表
A. 模型上下文协议(MCP) 用……构建的服务器 python 并且 FastMCP 通过Microsoft Graph API,它提供了与Microsoft Entra ID(原Azure AD)的无缝集成,用于用户和组管理。
这台服务器使用 可流式传输的HTTP传输这意味着它作为一个支持流式响应的HTTP服务器运行,使其能够与基于Web的MCP客户端(如GitHub Copilot)兼容,从而实现高效、实时的通信。
特点/功能
此MCP服务器提供了以下用于管理Microsoft Entra ID的工具:
用户管理
find_user_by_name- 通过显示名称、名字或姓氏搜索用户
- 不区分大小写的部分匹配 - 返回用户ID、显示名称、电子邮件和职位名称
集团管理
search_groups- 通过显示名称查找组get_group_info- 获取特定组的详细信息list_group_members- 列出群组的所有成员add_user_to_group- 将用户添加到组中remove_user_from_group- 从组中移除用户
什么是MCP?
模型上下文协议(MCP)是一种开放标准协议,它实现了人工智能应用与数据源之间的无缝集成。可以将其视为一个通用连接器,使人工智能助手能够安全地访问并与您的工具和数据进行交互。
这个服务器的工作原理
这台服务器是用……构建的 FastMCP,一个简化MCP服务器构建的Python框架。它
- 暴露工具使AI助手能够调用Entra ID管理功能作为可调用工具
- 使用可流式传输的HTTP作为HTTP服务器运行在
localhost:8000支持实时交互的流式响应 - 安全认证使用Azure AD应用程序凭据访问Microsoft Graph API
- 返回结构化数据提供AI助手能够理解和使用的JSON响应
当你要求像GitHub Copilot这样的AI助手“查找名为John的用户”时,助手会:
- 检测到它需要
find_user_by_name工具 - 通过HTTP调用此MCP服务器
- 服务器通过 Microsoft Graph 进行身份验证
- 将结果返回给人工智能,然后由人工智能展示给您
先决条件
- Python 3.10 或更高版本 (对于FastMCP和异步功能是必需的)
- pip(通常指Python的包管理工具,但在此仅作为单词翻译) (Python包管理器,通常随Python一起提供)
- Microsoft Entra ID 拥有管理员权限的租户
- Azure 门户 应用程序注册访问权限
- Node.js 和 npm (可选,仅在使用MCP Inspector调试工具时需要)
安装
1. 克隆仓库
git clone https://github.com/g-mercuri/mcp-entra-graph.git
cd mcp-entra-graph2. 创建虚拟环境
Windows(PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1Linux/macOS:
python3 -m venv venv
source venv/bin/activate3. 安装依赖项
pip install --upgrade pip
pip install -r requirements.txt4. 注册一个Azure AD应用程序
- 导航至 Azure 门户 → Azure Active Directory(Azure活动目录) → 应用程序注册
- 点击 新注册
- 名字: Entra ID MCP Server (或您喜欢的名称) - 支持的账户类型单租户 - 点击 注册
- 注意 应用程序(客户端)ID 和 目录(租户)ID
- 首选 证书与密钥 → 新的客户端密钥
- 添加描述和有效期 - 复制 价值 (客户端密钥) - 您将无法再次查看它
- 首选 API权限 → 添加一个权限 → Microsoft Graph(微软图) → 应用权限
- 添加以下权限: - Group.ReadWrite.All - 读取和写入所有组 - User.Read.All - 阅读所有用户的完整资料 - Directory.ReadWrite.All - 读取和写入目录数据
- 点击 授予管理员同意 为您的租户
5. 配置环境变量
创建一个 .env 项目根目录中的文件:
TENANT_ID=your-tenant-id-here
CLIENT_ID=your-client-id-here
CLIENT_SECRET=your-client-secret-here注: 你可以使用 .env.example 如有可用,作为模板。使用方法
启动服务器
python src/server.py服务器将在 http://127.0.0.1:8000 默认使用可流式传输的HTTP传输方式。
你应该看到类似如下的输出:
INFO:__main__:Starting Entra ID MCP Server with Streamable HTTP transport...与GitHub Copilot(VS Code)配合使用
- 启动MCP服务器 (见上文)
- 配置 VS Code 通过创建/编辑
mcp.json:
方法1:自动
- 新闻界 Ctrl+Shift+P (或 Cmd+Shift+P (在 macOS 上) - 选择 "GitHub Copilot: 添加MCP服务器" - 按照提示操作
方法2:手动
- 创建 .vscode/mcp.json 在您的工作区中:
{
"servers": {
"entra-id": {
"url": "http://127.0.0.1:8000",
"type": "http"
}
}
}- 重新加载 VS Code
- 新闻界;媒体 Ctrl+Shift+P → “开发者:重新加载窗口”
- 在Copilot聊天中使用
- 打开GitHub Copilot Chat - Entra ID 工具将自动可用 - 示例:“查找名为John的用户”或“将用户添加到开发者组”
与MCP Inspector配合使用(调试)
用于测试和调试MCP请求:
npx @modelcontextprotocol/inspector http://127.0.0.1:8000这会打开一个交互式界面,用于探索和测试所有可用的工具。
示例交互
一旦配置了MCP客户端,您就可以进行自然交互:
- *“查找所有姓氏为Smith的用户”*
- *“列出工程组的所有成员”*
- *“将约翰·多(John Doe)添加到开发者组”*
- *“搜索包含‘市场营销’的群组”*
- *“给我展示销售团队的相关信息”*
人工智能助手将使用适当的工具来满足这些请求。
贡献
欢迎贡献!请随时提交拉取请求。
许可证
MIT 许可证 - 请参阅 许可证 文件中包含详细信息
