添加和管理工具

“工具”模块可帮助开发人员发现、配置并将模型上下文协议 (MCP) 服务器集成到 AI 智能体工作流中。 MCP 服务器将外部功能作为工具对外暴露,AI 智能体可以调用这些工具。 有关可用工具服务器的概述,请参阅 Agent 365 工具服务器

演示请求和响应流

概述

Agent 365 工具集成的流如下:

  1. 配置 MCP 服务器 - 使用 Agent 365 CLI 发现并添加 MCP 服务器
  2. 生成清单 - CLI 会在您的项目文件夹中创建包含服务器配置的 ToolingManifest.json
  3. 为蓝图授予权限 - 全局管理员通过运行 a365 setup all(首次设置)或 a365 setup permissions mcp(如果蓝图已存在)向智能体蓝图授予 OAuth2 权限。 无论哪种情况,该命令均显示为 ToolingManifest.json 并需要管理员同意。 此步骤始终与将服务器添加到清单分开进行。
  4. 集成到代码中 - 加载清单并将工具注册到您的编排器中。
  5. 调用工具 - 智能体在执行过程中调用工具以执行操作。

必备条件

在配置 MCP 服务器之前,请确保您已:

智能体身份设置

如果您使用的是智能体身份验证,请在配置 MCP 服务器之前完成 智能体注册流程 以创建您的智能体身份。 此过程将创建 Entra 智能体 ID 和智能体用户,使您的智能体能够进行身份验证并访问 MCP 工具。

OBO 身份验证设置

如果您使用“代为操作”(On-Behalf-Of,OBO)身份验证而非智能体身份验证,您的智能体可以使用委托用户权限访问 MCP 工具,而无需智能体用户身份。 在 OBO 流中,智能体会交换用户的委托令牌,以代表用户执行操作。

有关 OBO 流工作原理的更多信息,请参阅 身份验证流。 完整的实现示例,请参阅 Microsoft 365 智能体 SDK 中的 OBO 授权示例

设置服务主体

运行此一次性设置脚本,在您的租户中为 Agent 365 Tools 创建服务主体。

重要提示

此操作针对每个租户仅需执行一次,需要全局管理员权限。

  1. 下载 New-Agent365ToolsServicePrincipalProdPublic.ps1 脚本。

  2. 以管理员身份打开 PowerShell,并转到脚本所在的目录。

  3. 运行该脚本。

    .\New-Agent365ToolsServicePrincipalProdPublic.ps1
    
  4. 在系统提示时,使用您的 Azure 凭据进行登录。

完成后,您的租户即可进行智能体开发和 MCP 服务器配置。

配置 MCP 服务器

使用 Agent 365 CLI 为您的智能体发现、添加和管理 MCP 服务器。 有关可用 MCP 服务器及其功能的完整列表,请参阅 MCP 服务器目录

发现可用服务器

列出所有可配置的 MCP 服务器:

a365 develop list-available

添加 MCP 服务器

将一个或多个 MCP 服务器添加到智能体配置中:

a365 develop add-mcp-servers mcp_MailTools

重要提示

此命令仅更新项目文件夹中的 ToolingManifest.json —— 它 不会 向蓝图授予任何权限。 权限的生效方式取决于您在设置流程中的当前阶段:

  • 初始设置之前:请先运行 a365 develop add-mcp-servers,然后继续执行 a365 setup all。 该 setup all 命令将 MCP 权限设置步骤作为蓝图创建的一部分。
  • 蓝图已存在之后:全局管理员必须单独运行 a365 setup permissions mcp。 管理员的 a365.config.json 必须将 deploymentProjectPath 指向包含更新后 ToolingManifest.json 的项目文件夹。 在此步骤完成之前,蓝图中不会显示新的 MCP 服务器权限。

列出已配置的服务器

查看当前已配置的 MCP 服务器:

a365 develop list-configured

删除 MCP 服务器

从配置中删除 MCP 服务器:

a365 develop remove-mcp-servers mcp_MailTools

有关完整的 CLI 参考,请参阅 a365 develop 命令

使用模拟工具服务器进行测试

在测试和开发过程中,请使用 Agent 365 CLI 模拟工具服务器,而非连接到实际的 MCP 服务器。 模拟服务器可模拟与 MCP 服务器的交互,因此您可以在本地测试智能体,而无需依赖身份验证等外部组件。

模拟服务器为本地开发和测试提供了以下优势:

  • 离线开发:无需连接互联网或外部依赖即可测试您的智能体。
  • 一致性测试:在测试边缘情况时获得可预测的回复。
  • 调试:实时查看所有请求和回复
  • 快速迭代:无需等待外部 API 调用或搭建复杂的测试环境。

使用 a365 develop start-mock-tooling-server 命令 启动模拟工具服务器。

了解如何设置和配置模拟工具服务器

备注

无论您使用模拟工具服务器还是实际的 MCP 服务器,以下关于配置清单和将工具集成到智能体中的章节操作方式均相同。 将 MCP_PLATFORM_ENDPOINT 环境变量设置为指向模拟服务器(例如:http://localhost:5309),而不是生产端点。

了解工具清单

运行 a365 develop add-mcp-servers 时,CLI 会生成一个 ToolingManifest.json 文件,其中包含所有 MCP 服务器的配置。 智能体运行时使用此清单来识别哪些服务器可用,以及如何与它们进行身份验证。

清单结构

示例 ToolingManifest.json

{
  "mcpServers": [
    {
      "mcpServerName": "mcp_MailTools",
      "mcpServerUniqueName": "mcp_MailTools",
      "scope": "McpServers.Mail.All",
      "audience": "api://05879165-0320-489e-b644-f72b33f3edf0"
    }
  ]
}

清单参数

每个 MCP 服务器条目包含:

参数 描述
mcpServerName MCP 服务器的显示名称。
mcpServerUniqueName MCP 服务器实例的唯一标识符。
作用域 访问 MCP 服务器功能所需的 OAuth 范围(例如:McpServers.Mail.All 用于邮件操作)。 add-mcp-servers 命令会从 MCP 服务器目录中检索此值。
audience 标识目标 API 资源的 Microsoft Entra ID URI。 add-mcp-servers 命令会从 MCP 服务器目录中检索此值。

备注

当您添加 MCP 服务器时,Agent 365 CLI 会自动填充 scopeaudience 的值。 这些值来自 MCP 服务器目录,并定义了访问每个 MCP 服务器所需的权限。

将工具集成到您的智能体中

生成工具清单后,将配置好的 MCP 服务器集成到您的智能体代码中。 本节介绍了可选的检查步骤和必需的集成步骤。

列出工具服务器(可选)

提示

此步骤是可选的。 在将工具服务器添加到编排器之前,请使用工具服务器配置服务从工具清单中检查可用的工具服务器。

使用工具服务器配置服务,从工具清单中发现哪些工具服务器可供您的智能体使用。 此方法允许您:

  • ToolingManifest.json 文件中查询所有已配置的 MCP 服务器。
  • 检索服务器元数据和功能。
  • 在注册前验证服务器可用性。

列出工具服务器的方法可在核心工具包中使用:

# Use McpToolServerConfigurationService.list_tool_servers
from microsoft.agents.a365.tooling import McpToolServerConfigurationService

config_service = McpToolServerConfigurationService()
tool_servers = await config_service.list_tool_servers(agentic_app_id, auth_token)

参数:

参数 类型 描述 预期的值 必需/可选
agentic_app_id str 智能体应用程序实例的唯一标识符 有效的智能体应用程序 ID 字符串 需要
auth_token str 用于通过 MCP 服务器网关进行身份验证的 Bearer 令牌 有效的 OAuth Bearer 令牌 需要

包:microsoft_agents_a365.tooling

使用业务流程协调程序注册工具

使用特定于框架的扩展方法,将所有 MCP 服务器注册到您的编排框架中:

  • AddToolServersToAgentAsync (.NET)
  • add_tool_servers_to_agent (Python)
  • addToolServersToAgent (Node.js)

这些方法:

  • 将已配置 MCP 服务器上的所有工具注册到您的编排器中
  • 自动设置身份验证和连接详细信息
  • 使工具立即可供您的智能体调用

选择您的编排器扩展

Agent 365 Tooling 模块为不同的编排框架提供了专用的扩展包:

备注

当您运行 a365 develop add-mcp-servers 时,CLI 会自动从 MCP 服务器目录中检索 OAuth 范围和受众值,并将它们写入 ToolingManifest.json。 扩展方法会使用这些值在运行时设置身份验证——您的智能体代码中无需进行手动配置。 但是,在您的智能体能够在生产环境中使用这些权限之前,全局管理员仍需向智能体蓝图授予这些权限:可通过 a365 setup all(首次设置)或 a365 setup permissions mcp(如果蓝图已存在)进行操作。

有关详细的实现示例,请参阅 Agent 365 示例

实现示例

以下示例展示了如何将 Agent 365 Tooling 与不同的编排框架集成。

Python 与 OpenAI

此示例演示了如何在 Python 应用程序中将 MCP 工具与 OpenAI 集成。

1. 添加导入语句

添加必要的导入语句以访问 Tooling 模块和 OpenAI 扩展:

from microsoft.agents.a365.tooling import McpToolServerConfigurationService
from microsoft.agents.a365.tooling.extensions.openai import mcp_tool_registration_service

2. 初始化工具服务

创建配置服务和工具注册服务的实例:

# Create configuration service and tool service with dependency injection
self.config_service = McpToolServerConfigurationService()
self.tool_service = mcp_tool_registration_service.McpToolRegistrationService()

3. 将 MCP 工具注册到 OpenAI 智能体

使用 add_tool_servers_to_agent 方法将所有已配置的 MCP 工具注册到您的 OpenAI 智能体。 该方法同时支持智能体式和非智能体式身份验证场景:

async def setup_mcp_servers(self, auth: Authorization, context: TurnContext):
    """Set up MCP server connections"""
    try:
        use_agentic_auth = os.getenv("USE_AGENTIC_AUTH", "false").lower() == "true"
        if use_agentic_auth:
            self.agent = await self.tool_service.add_tool_servers_to_agent(
                agent=self.agent,
                agentic_app_id=agentic_app_id,
                auth=auth,
                context=context,
            )
        else:
            self.agent = await self.tool_service.add_tool_servers_to_agent(
                agent=self.agent,
                agentic_app_id=agentic_app_id,
                auth=auth,
                context=context,
                auth_token=self.auth_options.bearer_token,
            )

    except Exception as e:
        logger.error(f"Error setting up MCP servers: {e}")

方法参数

下表描述了 add_tool_servers_to_agent 方法的参数说明。

参数 描述
agent 用于注册工具的 OpenAI 智能体实例。
agentic_app_id 智能体的唯一标识符(智能体式应用 ID)。
auth 用户的授权上下文。
context 智能体 SDK 中的当前对话回合上下文。 提供用户身份、对话元数据和身份验证上下文,以确保工具注册的安全性。
auth_token (可选)用于非智能体身份验证场景的 Bearer 令牌。

4. 在初始化期间调用

请确保在运行智能体之前,于初始化期间调用 setup 方法:

# Setup MCP servers during initialization
await self.setup_mcp_servers(auth, context)

add_tool_servers_to_agent 方法会自动:

  • 从 ToolingManifest.json 文件中加载所有 MCP 服务器。
  • 将这些服务器的工具注册到 OpenAI 智能体。
  • 根据清单配置设置身份验证。
  • 使智能体能够调用这些工具。

如需完整的可运行示例,请参阅 Agent 365 示例存储库

访问 Agent 365 MCP 服务器的其他方式

除了 Agent 365 SDK 之外,您还可以通过其他开发环境访问 Agent 365 MCP 服务器:

  • Visual Studio Code - 直接连接到 MCP 服务器,以实现自定义开发工作流。
  • Microsoft Copilot Studio - 通过低代码体验将 MCP 服务器集成到对话流中。
  • Azure AI Foundry - 使用具备完整 SDK 支持和高级编排功能的 MCP 服务器。

有关这些平台上可用 MCP 服务器及集成选项的完整概述,请参阅 Agent 365 工具服务器概述

自带 (BYO) MCP 服务器

“自带 (BYO) MCP 服务器”功能允许您将自己的外部 MCP 服务器注册到 Microsoft Agent 365,以便在 Microsoft 365 管理中心对其进行集中管理、审批和监控。 该功能将这些服务器通过 Agent 365 工具网关进行路由,使管理员能够控制审批、访问和策略,同时允许安全团队通过遥测数据跟踪使用情况。 作为开发人员,您可以使用 Agent 365 CLI 注册 MCP 服务器,然后由管理员审核并批准注册,并授予相应权限。 获批的服务器随后可在受支持的客户端工具中使用,持续监控可确保所有集成的合规性和可视性。

有关完整说明,请参阅 自带 (BYO) MCP 服务器

测试您的智能体

将 MCP 工具集成到您的智能体后,请测试工具调用,以确保其正常运行并能处理各种场景。 请按照 测试指南 设置您的环境。 然后,请重点关注 测试工具调用 部分,以验证您的 MCP 工具是否按预期运行。 此外,请查看 模拟工具服务器,以在不处理身份验证的情况下测试 MCP 服务器连接和工具调用。

添加可观测性

为您的智能体添加可观测性,以监控和追踪智能体的 MCP 工具调用。 通过添加可观测性功能,您可以跟踪性能、调试问题并了解工具的使用模式。 了解有关实施追踪和监控的更多信息

故障排除

本节列出了配置和使用 MCP 服务器及工具时常见的问题。

提示

Agent 365 故障排除指南 包含高层次的故障排除建议、最佳实践,以及针对 Agent 365 开发生命周期各阶段的故障排除内容链接。

MCP 服务器和工具问题

症状:

  • 工具调用失败。
  • “未找到 MCP 服务器”错误。
  • 调用工具时出现权限遭到拒绝错误。

根本原因:

  • MCP 服务器未配置。
  • 缺少权限。
  • 服务主体未设置。
  • 模拟服务器与生产服务器混淆。

解决方案: 尝试以下解决方案来解决问题。

  • 验证 MCP 服务器是否已配置

    列出已配置的服务器,并添加任何缺失的服务器。

    # List configured servers
    a365 develop list-configured
    
    # If empty, add required servers (example: Mail MCP server)
    a365 develop add-mcp-servers mcp_MailTools
    
  • 检查服务主体是否存在

    确保为工具创建所需的服务主体。

    # Run the one-time setup script
    # https://github.com/microsoft/Agent365-devTools/blob/main/scripts/cli/Auth/New-Agent365ToolsServicePrincipalProdPublic.ps1
    
  • 在早期开发和测试阶段,请使用模拟服务器

    如果您希望在不使用生产环境工具组件的情况下测试智能体的其他部分,请在早期本地开发和测试中使用模拟工具服务器。

    # Start mock tooling server
    a365 develop start-mock-tooling-server
    
    # Update your .env
    MCP_PLATFORM_ENDPOINT=http://localhost:5309
    

    了解模拟工具服务器

  • 在管理中心验证权限

    确认您的智能体具有必要的 MCP 权限。

    • 验证 Azure 门户中智能体蓝图的 API 权限是否显示了所有 MCP 服务器权限。

    验证

    # Test a tool call in Agents Playground
    # Should execute without permission errors