使用说明
项目简介
本项目 'MCP-MSGraph' 是一个原型 MCP (Model Context Protocol) 服务器,它演示了如何将 MCP 协议应用于访问 Microsoft Graph 中存储的用户数据。 该服务器作为一个桥梁,允许符合 MCP 协议的客户端(如LLM应用)通过标准化的方式,安全地访问和操作 Microsoft Graph 中的用户 Profile 信息,例如读取用户的技能、兴趣等。
主要功能点
- 用户 Profile 数据访问: 提供读取 Microsoft Graph 中用户 Profile 数据的能力,包括用户的基本信息、技能、兴趣等。
- 用户 Profile 数据管理: 支持添加和更新用户的技能和兴趣信息。
- 基于标准 MCP 请求: 通过 '/mcp' 端点接收符合 MCP 格式的 JSON-RPC 请求,并返回 JSON-RPC 响应。
- 基于 FastAPI 框架: 使用 FastAPI 构建,易于部署和扩展。
- 使用 Microsoft Graph API: 作为数据源,连接 Microsoft Graph API 获取和操作用户数据。
- 简单的鉴权机制: 使用 Azure AD 应用的客户端凭据流进行身份验证,确保数据访问安全。
安装步骤
-
克隆仓库: 将 GitHub 仓库 'https://github.com/kevinbellinger/mcp-msgraph' 克隆到本地。
git clone https://github.com/kevinbellinger/mcp-msgraph cd mcp-msgraph -
创建虚拟环境: 建议在虚拟环境中运行以隔离依赖包。
python3 -m venv venv source venv/bin/activate -
安装依赖包: 使用 pip 安装项目所需的 Python 包。
pip install -r requirements.txt(如果仓库中没有 'requirements.txt' 文件,请手动执行以下命令)
pip install fastapi uvicorn requests requests-oauthlib pydantic python-dotenv -
配置环境变量:
- 在项目根目录下创建 '.env' 文件。
- 按照 'README.md' 中的 "Create an Azure AD Application" 步骤,在 Azure Portal 中创建 Azure AD 应用程序。
- 将生成的 Application (client) ID,Client Secret 和你的 Tenant ID 填入 '.env' 文件,示例如下:
请替换 'YOUR_APPLICATION_CLIENT_ID', 'YOUR_CLIENT_SECRET', 'YOUR_TENANT_ID' 为你的实际值。 可选地,你可以设置 'SCOPE' 环境变量来指定 Microsoft Graph API 的访问范围,默认为 'https://graph.microsoft.com/.default'。CLIENT_ID="YOUR_APPLICATION_CLIENT_ID" CLIENT_SECRET="YOUR_CLIENT_SECRET" TENANT_ID="YOUR_TENANT_ID"
服务器配置
MCP 客户端需要配置以下信息以连接到 'MCP-MSGraph' 服务器。配置信息为 JSON 格式:
{ "serverName": "mcp-msgraph", // 服务器名称,可以自定义 "command": "uvicorn", // 启动服务器的命令 "args": [ // 启动命令的参数 "main:app", // FastAPI 应用入口点 (main.py 文件中的 app 实例) "--reload" // (可选) 启用热重载,方便开发调试,生产环境建议移除 ] }
配置参数说明:
- 'serverName': MCP 服务器的名称,客户端可以使用此名称来标识和管理连接。
- 'command': 运行 MCP 服务器的命令,这里使用 'uvicorn' 启动 FastAPI 应用。
- 'args': 传递给 'command' 命令的参数列表。
- 'main:app': 指定 FastAPI 应用的入口点,'main' 指的是 'main.py' 文件,'app' 指的是在该文件中创建的 FastAPI 应用实例。
- '--reload': (可选) 在开发模式下启用热重载,当代码文件发生更改时,服务器会自动重启。生产环境中不建议使用 '--reload',应移除此参数以提高性能和安全性。
基本使用方法
-
启动服务器: 在虚拟环境激活的情况下,在项目根目录下运行以下命令启动服务器。
uvicorn main:app --reload服务器成功启动后,你将看到类似 'INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)' 的信息,表示服务器已在 'http://127.0.0.1:8000' 地址监听请求。
-
发送 MCP 请求: 使用 curl 或任何 HTTP 客户端工具,向服务器的 '/mcp' 端点发送 POST 请求,请求体为 JSON 格式的 MCP 请求。
示例请求 (读取用户 Profile):
curl -X POST http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -d '{ "action":"readUserProfile", "contextId":"test-context-123", "data": {"userId":"[email protected]"} // 替换为实际的用户邮箱 }'请将 '[email protected]' 替换为你的 Microsoft 365 租户中实际存在的用户邮箱地址。
其他支持的 'action' (参考 'main.py' 代码):
- 'readUserProfileSkills': 读取用户技能
- 'addUserProfileSkill': 添加用户技能 (需要提供 'skill' 数据)
- 'updateUserProfileSkill': 更新用户技能 (需要提供 'skillId' 和 'skill' 数据)
- 'readUserProfileInterests': 读取用户兴趣
- 'addUserProfileInterest': 添加用户兴趣 (需要提供 'interest' 数据)
- 'updateUserProfileInterest': 更新用户兴趣 (需要提供 'interestId' 和 'interest' 数据)
响应结果: 服务器会返回 JSON 格式的 MCP 响应,包含 'status' (success 或 error), 'action', 'contextId' 和 'data' (成功时返回数据) 或 'errorCode', 'errorMessage' (错误时返回错误信息)。
注意:
- 本项目是一个原型实现,仅演示了 MCP 服务器的基本功能,可能不包含完整的 MCP 协议支持,例如会话管理、能力声明、多种传输协议支持等。
- 本项目依赖于 Microsoft Graph API 和 Azure AD 应用程序的配置,请确保已正确配置 Azure AD 应用程序并授予必要的 API 权限 ('User.Read.All')。
- 在生产环境中使用时,请务必考虑安全性、性能和错误处理等方面,并进行充分的测试和优化。
信息
分类
网页与API