使用说明
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-graph
2. 创建虚拟环境
Windows(PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1
Linux/macOS:
python3 -m venv venv
source venv/bin/activate
3. 安装依赖项
pip install --upgrade pip
pip install -r requirements.txt
4. 注册一个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 许可证 - 请参阅 许可证 文件中包含详细信息