McpToolRegistrationService Clase

Servicio para administrar servidores y herramientas de MCP para un agente

Constructor

McpToolRegistrationService()

Parámetros

Nombre Description
logger
Valor predeterminado: None

Métodos

__init__

Inicialice el servicio de registro de herramientas de MCP para OpenAI.

__new__
add_tool_servers_to_agent

Agregue nuevos servidores MCP al agente mediante la creación de una nueva instancia del agente.

Nota: Debido a las limitaciones del SDK de OpenAI Agents, los servidores MCP deben establecerse durante la creación del agente. Si se encuentran nuevos servidores, este método crea una nueva instancia del Agente con todos los servidores MCP (existentes y nuevos) inicializados correctamente.

cleanup_all_servers

Limpieza de todos los servidores MCP conectados

send_chat_history

Extraiga el historial de chat de una sesión de OpenAI y envíelo a la plataforma MCP.

Este método extrae mensajes de un objeto Session de OpenAI mediante get_items() y los envía a la plataforma MCP para la protección contra amenazas en tiempo real.

send_chat_history_messages

Envíe mensajes del historial de chat de OpenAI a la plataforma MCP para la protección contra amenazas.

Este método acepta una lista de mensajes TResponseInputItem de OpenAI, los convierte en formato ChatHistoryMessage y los envía a la plataforma MCP.

Nota:

Incluso si los mensajes están vacíos o todos los mensajes se filtran durante la conversión,

La solicitud se seguirá enviando a la plataforma MCP. Esto garantiza que el usuario

message de turn_context.activity.text está registrado correctamente para

Protección contra amenazas en tiempo real.

__init__

Inicialice el servicio de registro de herramientas de MCP para OpenAI.

__init__(logger: Logger | None = None)

Parámetros

Nombre Description
logger

Instancia del registrador para las operaciones de registro.

Valor predeterminado: None

__new__

__new__(**kwargs)

add_tool_servers_to_agent

Agregue nuevos servidores MCP al agente mediante la creación de una nueva instancia del agente.

Nota: Debido a las limitaciones del SDK de OpenAI Agents, los servidores MCP deben establecerse durante la creación del agente. Si se encuentran nuevos servidores, este método crea una nueva instancia del Agente con todos los servidores MCP (existentes y nuevos) inicializados correctamente.

async add_tool_servers_to_agent(agent: Agent, auth: Authorization, auth_handler_name: str, context: TurnContext, auth_token: str | None = None) -> Agent

Parámetros

Nombre Description
agent
Requerido
<xref:agents.agent.Agent>

Agente existente al que se van a agregar servidores

auth
Requerido

Controlador de autorización para el intercambio de tokens.

auth_handler_name
Requerido
str

Nombre del controlador de autorización.

context
Requerido

Active el contexto de la operación actual.

auth_token
str | None

Token de autenticación para acceder a los servidores MCP.

Valor predeterminado: None

Devoluciones

Tipo Description
<xref:agents.agent.Agent>

Nueva instancia del agente con todos los servidores MCP o agente original si no hay ningún nuevo servidor

cleanup_all_servers

Limpieza de todos los servidores MCP conectados

async cleanup_all_servers() -> None

Devoluciones

Tipo Description

send_chat_history

Extraiga el historial de chat de una sesión de OpenAI y envíelo a la plataforma MCP.

Este método extrae mensajes de un objeto Session de OpenAI mediante get_items() y los envía a la plataforma MCP para la protección contra amenazas en tiempo real.

async send_chat_history(turn_context: TurnContext, session: Session, limit: int | None = None, options: ToolOptions | None = None) -> OperationResult

Parámetros

Nombre Description
turn_context
Requerido

TurnContext del SDK de agentes que contiene información de conversación. Debe tener una actividad válida con conversation.id, activity.id y activity.text.

session
Requerido
<xref:agents.memory.session.Session>

Instancia de sesión de OpenAI de la que extraer mensajes. Debe admitir el método get_items() que devuelve una lista de TResponseInputItem.

limit
int | None

Número máximo opcional de elementos que se van a recuperar de la sesión. Si no es Ninguno, recupera todos los elementos.

Valor predeterminado: None
options

ToolOptions opcional para la personalización. Si no se proporciona, usa las opciones predeterminadas con orchestrator_name="OpenAI".

Valor predeterminado: None

Devoluciones

Tipo Description

OperationResult indica que se ha realizado correctamente o no. Si se ejecuta correctamente, devuelve OperationResult.success(). En caso de error, devuelve OperationResult.failed() con detalles de error.

Excepciones

Tipo Description

Si turn_context es None o session es None.

Ejemplos


>>> from agents import Agent, Runner
>>> from microsoft_agents_a365.tooling.extensions.openai import (
...     McpToolRegistrationService
... )
>>>
>>> service = McpToolRegistrationService()
>>> agent = Agent(name="my-agent", model="gpt-4")
>>>
>>> # In your agent handler:
>>> async with Runner.run(agent, messages) as result:
...     session = result.session
...     op_result = await service.send_chat_history(
...         turn_context, session
...     )
...     if op_result.succeeded:
...         print("Chat history sent successfully")

send_chat_history_messages

Envíe mensajes del historial de chat de OpenAI a la plataforma MCP para la protección contra amenazas.

Este método acepta una lista de mensajes TResponseInputItem de OpenAI, los convierte en formato ChatHistoryMessage y los envía a la plataforma MCP.

Nota:

Incluso si los mensajes están vacíos o todos los mensajes se filtran durante la conversión,

La solicitud se seguirá enviando a la plataforma MCP. Esto garantiza que el usuario

message de turn_context.activity.text está registrado correctamente para

Protección contra amenazas en tiempo real.

async send_chat_history_messages(turn_context: TurnContext, messages: List[EasyInputMessageParam | Message | ResponseOutputMessageParam | ResponseFileSearchToolCallParam | ResponseComputerToolCallParam | ComputerCallOutput | ResponseFunctionWebSearchParam | ResponseFunctionToolCallParam | FunctionCallOutput | ToolSearchCall | ResponseToolSearchOutputItemParamParam | ResponseReasoningItemParam | ResponseCompactionItemParamParam | ImageGenerationCall | ResponseCodeInterpreterToolCallParam | LocalShellCall | LocalShellCallOutput | ShellCall | ShellCallOutput | ApplyPatchCall | ApplyPatchCallOutput | McpListTools | McpApprovalRequest | McpApprovalResponse | McpCall | ResponseCustomToolCallOutputParam | ResponseCustomToolCallParam | ItemReference], options: ToolOptions | None = None) -> OperationResult

Parámetros

Nombre Description
turn_context
Requerido

TurnContext del SDK de agentes que contiene información de conversación. Debe tener una actividad válida con conversation.id, activity.id y activity.text.

messages
Requerido
List[<xref:openai.types.responses.easy_input_message_param.EasyInputMessageParam> | <xref:openai.types.responses.response_input_item_param.Message> | <xref:openai.types.responses.response_output_message_param.ResponseOutputMessageParam> | <xref:openai.types.responses.response_file_search_tool_call_param.ResponseFileSearchToolCallParam> | <xref:openai.types.responses.response_computer_tool_call_param.ResponseComputerToolCallParam> | <xref:openai.types.responses.response_input_item_param.ComputerCallOutput> | <xref:openai.types.responses.response_function_web_search_param.ResponseFunctionWebSearchParam> | <xref:openai.types.responses.response_function_tool_call_param.ResponseFunctionToolCallParam> | <xref:openai.types.responses.response_input_item_param.FunctionCallOutput> | <xref:openai.types.responses.response_input_item_param.ToolSearchCall> | <xref:openai.types.responses.response_tool_search_output_item_param_param.ResponseToolSearchOutputItemParamParam> | <xref:openai.types.responses.response_reasoning_item_param.ResponseReasoningItemParam> | <xref:openai.types.responses.response_compaction_item_param_param.ResponseCompactionItemParamParam> | <xref:openai.types.responses.response_input_item_param.ImageGenerationCall> | <xref:openai.types.responses.response_code_interpreter_tool_call_param.ResponseCodeInterpreterToolCallParam> | <xref:openai.types.responses.response_input_item_param.LocalShellCall> | <xref:openai.types.responses.response_input_item_param.LocalShellCallOutput> | <xref:openai.types.responses.response_input_item_param.ShellCall> | <xref:openai.types.responses.response_input_item_param.ShellCallOutput> | <xref:openai.types.responses.response_input_item_param.ApplyPatchCall> | <xref:openai.types.responses.response_input_item_param.ApplyPatchCallOutput> | <xref:openai.types.responses.response_input_item_param.McpListTools> | <xref:openai.types.responses.response_input_item_param.McpApprovalRequest> | <xref:openai.types.responses.response_input_item_param.McpApprovalResponse> | <xref:openai.types.responses.response_input_item_param.McpCall> | <xref:openai.types.responses.response_custom_tool_call_output_param.ResponseCustomToolCallOutputParam> | <xref:openai.types.responses.response_custom_tool_call_param.ResponseCustomToolCallParam> | <xref:openai.types.responses.response_input_item_param.ItemReference>]

Lista de mensajes TResponseInputItem de OpenAI que se van a enviar. Admite UserMessage, AssistantMessage, SystemMessage y otros tipos de mensajes openAI. Puede estar vacío: la solicitud se seguirá enviando para registrar el mensaje de usuario desde turn_context.activity.text.

options

ToolOptions opcional para la personalización. Si no se proporciona, usa las opciones predeterminadas con orchestrator_name="OpenAI".

Valor predeterminado: None

Devoluciones

Tipo Description

OperationResult indica que se ha realizado correctamente o no. Si se ejecuta correctamente, devuelve OperationResult.success(). En caso de error, devuelve OperationResult.failed() con detalles de error.

Excepciones

Tipo Description

Si turn_context es None o messages es None.

Ejemplos


>>> from microsoft_agents_a365.tooling.extensions.openai import (
...     McpToolRegistrationService
... )
>>>
>>> service = McpToolRegistrationService()
>>> messages = [
...     {"role": "user", "content": "Hello"},
...     {"role": "assistant", "content": "Hi there!"},
... ]
>>>
>>> result = await service.send_chat_history_messages(
...     turn_context, messages
... )
>>> if result.succeeded:
...     print("Chat history sent successfully")