Token导航 LogoToken导航TokenDH.com
MCP client server graphapi logo
运维云端未说明官方级别未说明来源级核验

MCP client server graphapi

MCP Server

一个使用MCP协议与Azure Graph API集成的工具,用于查询和管理Azure租户中的应用程序注册信息。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
C#AI辅助Session认证

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ovaismehboob

提供方

ovaismehboob

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP图形API演示

此项目演示了将模型上下文协议(MCP)与Azure Graph API一起用于查询Azure租户中的应用程序注册。

该应用程序使用一个与ASP通信的DateTimeWebAssembly客户端。NET Core服务器实现MCP协议。服务器连接到Microsoft Graph API以检索应用程序注册数据,然后通过人工智能辅助聊天界面对其进行处理和呈现。

架构概述

+---------------------+                 +---------------------+
|     MCP Client      |                 |     MCP Server      |
|                     |                 |                     |
|  +---------------+  |    MCP API      |  +--------------+   |
|  |     LLM       |  |  Requests &     |  |   Graph API  |   |
|  | Integration   |Functions     |  |   Functions  | Microsoft Graph API
|  | (SK + OpenAI) |  |                 |  |              |   |
|  +---------------+  |                 |  +--------------+   |
|                     |                 |                     |
|  +---------------+  |                 |  +--------------+   |
|  |    UI/UX      |  |                 |  | Azure AD     |   |
|  |  (Blazor WASM)|  |                 |  | Integration  | Azure Active Directory
|  +---------------+  |                 |  +--------------+   |
+---------------------+                 +---------------------+

Client handles:                        Server handles:
- User Interface                       - Function Definitions
- Prompt Engineering                   - Graph API Integration
- LLM Integration                      - Azure AD Authentication
- Function Orchestration               - Data Processing

该架构严格遵循MCP原则,其中:

  1. MCP客户端处理所有LLM交互和用户体验
  2. MCP服务器提供函数定义并处理实际的Graph API调用
  3. 通信通过标准化的MCP协议进行

项目结构

  • MCP。客户端:与MCP服务器交互的ArgumentWebAssembly客户端

- 处理用户界面和聊天体验 - 与Azure OpenAI或OpenAI API集成 - 使用语义内核来编排LLM交互和函数调用

  • MCP。服务器:ASP。NET核心服务器,实现Azure Graph API的MCP协议

- 为Graph API操作提供函数定义 - 处理Azure AD的身份验证 - 当客户端请求时执行Graph API调用 - 将结构化数据返回给客户端

  • MCP。共享:客户端和服务器之间的共享模型和接口

- 定义MCP协议结构 - 包含共享数据模型和接口

什么是模型上下文协议(MCP)?

模型上下文协议(MCP)是LLM驱动的应用程序的架构模式,它将以下内容分开:

  1. LLM集成 (客户端):用户界面、提示工程、LLM调用
  2. 工具/功能集成 (服务器端):LLM可以使用的功能

MCP提供了一种清晰的关注点分离:

  • 客户端处理所有LLM交互和用户体验
  • 服务器专注于提供函数定义并在调用时执行它们
  • 这种分离允许更好的安全性、模块化和可扩展性

本项目通过以下方式实施MCP:

  1. 在服务器上将Graph API功能作为函数公开
  2. 允许客户端的LLM发现并调用这些函数
  3. 切勿将LLM密钥暴露给服务器或将函数实现细节暴露给客户端

先决条件

  • .NET 9.0
  • 具有应用程序注册权限的Azure订阅
  • Azure OpenAI资源或OpenAI API密钥

配置

在运行应用程序之前,您需要使用自己的Azure凭据对其进行配置:

MCP服务器配置

编辑 MCP.Server/appsettings.json 并更新以下设置:

"AzureAd": {
  "Instance": "https://login.microsoftonline.com/",
  "TenantId": "",
  "ClientId": "",
  "ClientSecret": "",
  "Scopes": ["User.Read", "Application.Read.All"]
}

MCP客户端配置

编辑 MCP.Client/wwwroot/appsettings.json 并更新以下设置:

"AzureAd": {
  "Authority": "https://login.microsoftonline.com/",
  "ClientId": "",
  "ValidateAuthority": true
},
"ApiBaseUrl": "http://localhost:5197",
"AzureOpenAI": {
  "Endpoint": "https://your-resource.openai.azure.com/",
  "ApiKey": "",
  "DeploymentName": "gpt-35-turbo"
}
备注MCP服务器不再需要OpenAI配置,因为它不直接与LLM交互。所有LLM集成都由客户端处理。

安装说明

  1. 先决条件:

- 安装。净9.0 SDK - 拥有具有创建应用程序注册权限的Azure订阅 - 访问Azure OpenAI或OpenAI API

  1. 在Azure AD中注册应用程序:

- 转到Azure门户>Azure Active Directory>应用程序注册 - 创建新注册 - 设置客户端密码 - 授予以下API权限: - Microsoft Graph API>应用程序。读。全部 - 确保授予管理员同意 - 看 GraphApiPermissionFix.md 有关权限的详细故障排除

  1. 配置Azure OpenAI:

- 创建Azure OpenAI资源或直接使用OpenAI - 为GPT模型创建部署(例如GPT-35-turbo或GPT-4) - 获取API密钥和终结点

  1. 更新配置文件:

- 按照上述配置部分中的说明更新服务器和客户端配置文件

运行应用程序

  1. 启动MCP服务器:
   cd MCP.Server
   dotnet run
  1. 启动MCP客户端(在新终端中):
   cd MCP.Client
   dotnet run
  1. 打开浏览器并导航到:

- http://localhost:5268(客户) - http://localhost:5197/swagger(服务器API文档)

  1. 使用聊天界面询问有关Azure应用程序注册的问题:

- “列出我租户中的所有应用程序注册” - “获取ID为\[app-ID\]的应用注册详细信息” - “\[应用程序名称\]有哪些权限?”

使用MCP开发

要使用新的Graph API功能扩展此应用程序,请执行以下操作:

  1. 在中添加新的函数声明 MCP.Server/Services/McpGraphService.cs
  2. 在同一文件中实现功能逻辑
  3. 更新 ExecuteFunctionAsync 处理新函数的方法
  4. 客户的LLM将在适当的时候自动发现并使用新功能

函数声明示例:

new McpFunctionDeclaration
{
    Name = "get_user_details",
    Description = "Get details for a specific user in the tenant",
    Parameters = new McpFunctionParameters
    {
        Type = "object",
        Properties = new Dictionary
        {
            ["user_id"] = new McpParameterProperty
            {
                Type = "string",
                Description = "The ID of the user"
            }
        },
        Required = new List { "user_id" }
    }
}

GitHub准备

在将此项目推送到公共GitHub存储库之前:

  1. 运行附带的清理脚本来清理配置文件:
   .\clean-for-github.ps1
  1. 验证是否存在敏感数据:

- 全部 appsettings.json 文件应使用占位符(`) - 不应包含任何实际的API密钥或凭据 - 不 .bak.private` 应提交文件

  1. 查看 礼品清单.md 提交完整的预发布检查表

安全考虑

  • 永远不要将真正的API密钥或机密提交到GitHub
  • MCP架构通过仅在客户端保留LLM密钥来增强安全性
  • 服务器只需要访问Graph API,而不需要访问任何LLM服务
  • 使用Azure密钥保险库进行生产部署,以安全存储API密钥
  • 贡献.md 了解更多安全最佳实践

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

  • 按照配置部分更新设置文件

运行应用程序

  1. 启动服务器:
   cd MCP.Server
   dotnet run --launch-profile https
  1. 启动客户端:
   cd MCP.Client
   dotnet run
  1. 访问应用程序:

打开浏览器并导航到 https://localhost:7030/chat

故障排除

如果遇到权限问题,请检查以下内容:

  1. 验证API权限:确保您的应用程序注册具有所需的Microsoft Graph权限,并且已授予管理员同意。
  1. 检查身份验证:确保配置文件中的Azure AD凭据正确。
  1. 运行测试脚本:使用提供的PowerShell脚本测试Graph API权限:
   ./TestGraphPermissions.ps1

特性

  • 聊天界面,用于查询有关Azure租户的信息
  • 通过MCP访问Graph API函数
  • LLM函数的语义内核集成

为GitHub做准备

在将此项目推送到公共存储库之前,请运行清理脚本以删除敏感信息:

./clean-for-github.ps1

此脚本将:

  1. 删除不必要的文件(bin、obj文件夹)
  2. 删除Azure存储模拟器文件
  3. 通过用占位符替换敏感数据来净化配置文件
  4. 使用创建原始文件的备份 .private.bak 扩展

贡献

如果你想为这个项目做出贡献,请阅读我们的 贡献指南 有关我们的行为准则和提交pull请求流程的详细信息。

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

致谢

目录标签

目录标签

C#AI辅助Session认证AzureGraphAPI本地部署MCP协议应用程序管理

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP