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__
__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
|
Nombre del controlador de autorización. |
|
context
Requerido
|
Active el contexto de la operación actual. |
|
auth_token
|
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
|
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")