McpToolRegistrationService Klasse

Dienst für die Verwaltung von MCP-Tools und -Servern für einen Agent

Konstruktor

McpToolRegistrationService()

Parameter

Name Beschreibung
logger
Standardwert: None

Methoden

__init__

Initialisieren Sie den MCP-Toolregistrierungsdienst für OpenAI.

__new__
add_tool_servers_to_agent

Fügen Sie dem Agent neue MCP-Server hinzu, indem Sie eine neue Agent-Instanz erstellen.

Hinweis: Aufgrund von OpenAI Agents SDK-Einschränkungen müssen MCP-Server während der Agent-Erstellung festgelegt werden. Wenn neue Server gefunden werden, erstellt diese Methode eine neue Agent-Instanz mit allen MCP-Servern (vorhandenen + neuen) ordnungsgemäß initialisiert.

cleanup_all_servers

Bereinigen aller verbundenen MCP-Server

send_chat_history

Extrahieren Sie den Chatverlauf aus einer OpenAI-Sitzung, und senden Sie ihn an die MCP-Plattform.

Diese Methode extrahiert Nachrichten aus einem OpenAI Session-Objekt mithilfe von get_items() und sendet sie zur Echtzeit-Bedrohungsschutz an die MCP-Plattform.

send_chat_history_messages

Senden Von OpenAI-Chatverlaufsnachrichten an die MCP-Plattform zum Schutz vor Bedrohungen.

Diese Methode akzeptiert eine Liste der OpenAI TResponseInputItem-Nachrichten, konvertiert sie in das ChatHistoryMessage-Format und sendet sie an die MCP-Plattform.

Note

Auch wenn Nachrichten leer sind oder alle Nachrichten während der Konvertierung gefiltert werden,

die Anforderung wird weiterhin an die MCP-Plattform gesendet. Dadurch wird sichergestellt, dass der Benutzer

nachricht von turn_context.activity.text ist richtig registriert für

Echtzeit-Bedrohungsschutz.

__init__

Initialisieren Sie den MCP-Toolregistrierungsdienst für OpenAI.

__init__(logger: Logger | None = None)

Parameter

Name Beschreibung
logger

Loggerinstanz für Protokollierungsvorgänge.

Standardwert: None

__new__

__new__(**kwargs)

add_tool_servers_to_agent

Fügen Sie dem Agent neue MCP-Server hinzu, indem Sie eine neue Agent-Instanz erstellen.

Hinweis: Aufgrund von OpenAI Agents SDK-Einschränkungen müssen MCP-Server während der Agent-Erstellung festgelegt werden. Wenn neue Server gefunden werden, erstellt diese Methode eine neue Agent-Instanz mit allen MCP-Servern (vorhandenen + neuen) ordnungsgemäß initialisiert.

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

Parameter

Name Beschreibung
agent
Erforderlich
<xref:agents.agent.Agent>

Der vorhandene Agent zum Hinzufügen von Servern zu

auth
Erforderlich

Autorisierungshandler für den Tokenaustausch.

auth_handler_name
Erforderlich
str

Name des Autorisierungshandlers.

context
Erforderlich

Kontext für den aktuellen Vorgang drehen.

auth_token
str | None

Authentifizierungstoken für den Zugriff auf die MCP-Server.

Standardwert: None

Gibt zurück

Typ Beschreibung
<xref:agents.agent.Agent>

Neue Agent-Instanz mit allen MCP-Servern oder dem ursprünglichen Agent, wenn keine neuen Server vorhanden sind

cleanup_all_servers

Bereinigen aller verbundenen MCP-Server

async cleanup_all_servers() -> None

Gibt zurück

Typ Beschreibung

send_chat_history

Extrahieren Sie den Chatverlauf aus einer OpenAI-Sitzung, und senden Sie ihn an die MCP-Plattform.

Diese Methode extrahiert Nachrichten aus einem OpenAI Session-Objekt mithilfe von get_items() und sendet sie zur Echtzeit-Bedrohungsschutz an die MCP-Plattform.

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

Parameter

Name Beschreibung
turn_context
Erforderlich

TurnContext aus dem Agents SDK mit Unterhaltungsinformationen. Muss über eine gültige Aktivität mit conversation.id, activity.id und activity.text verfügen.

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

OpenAI-Sitzungsinstanz zum Extrahieren von Nachrichten aus. Muss die get_items()-Methode unterstützen, die eine Liste von TResponseInputItem zurückgibt.

limit
int | None

Optionale maximale Anzahl von Elementen, die aus der Sitzung abgerufen werden sollen. Wenn keines vorhanden ist, werden alle Elemente abgerufen.

Standardwert: None
options

Optionale ToolOptions zum Anpassen. Wenn nicht angegeben, werden Standardoptionen mit orchestrator_name="OpenAI" verwendet.

Standardwert: None

Gibt zurück

Typ Beschreibung

OperationResult, das Erfolg oder Fehler angibt. Bei Erfolg gibt OperationResult.success() zurück. Gibt "OperationResult.failed()" mit Fehlerdetails zurück.

Ausnahmen

Typ Beschreibung

Wenn turn_context "None" oder "Session" ist "None".

Beispiele


>>> 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

Senden Von OpenAI-Chatverlaufsnachrichten an die MCP-Plattform zum Schutz vor Bedrohungen.

Diese Methode akzeptiert eine Liste der OpenAI TResponseInputItem-Nachrichten, konvertiert sie in das ChatHistoryMessage-Format und sendet sie an die MCP-Plattform.

Note

Auch wenn Nachrichten leer sind oder alle Nachrichten während der Konvertierung gefiltert werden,

die Anforderung wird weiterhin an die MCP-Plattform gesendet. Dadurch wird sichergestellt, dass der Benutzer

nachricht von turn_context.activity.text ist richtig registriert für

Echtzeit-Bedrohungsschutz.

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

Parameter

Name Beschreibung
turn_context
Erforderlich

TurnContext aus dem Agents SDK mit Unterhaltungsinformationen. Muss über eine gültige Aktivität mit conversation.id, activity.id und activity.text verfügen.

messages
Erforderlich
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>]

Liste der zu sendenden OpenAI-TResponseInputItem-Nachrichten. Unterstützt UserMessage, AssistantMessage, SystemMessage und andere OpenAI-Nachrichtentypen. Kann leer sein – die Anforderung wird weiterhin gesendet, um die Benutzernachricht von turn_context.activity.text zu registrieren.

options

Optionale ToolOptions zum Anpassen. Wenn nicht angegeben, werden Standardoptionen mit orchestrator_name="OpenAI" verwendet.

Standardwert: None

Gibt zurück

Typ Beschreibung

OperationResult, das Erfolg oder Fehler angibt. Bei Erfolg gibt OperationResult.success() zurück. Gibt "OperationResult.failed()" mit Fehlerdetails zurück.

Ausnahmen

Typ Beschreibung

Wenn turn_context "Keine" ist oder "Keine" lautet.

Beispiele


>>> 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")