Source code for autogen_ext.tools.mcp._stdio

from autogen_core import Component
from mcp import Tool
from pydantic import BaseModel
from typing_extensions import Self

from ._base import McpToolAdapter
from ._config import StdioServerParams


class StdioMcpToolAdapterConfig(BaseModel):
    """Configuration for the MCP tool adapter."""

    server_params: StdioServerParams
    tool: Tool


[docs] class StdioMcpToolAdapter( McpToolAdapter[StdioServerParams], Component[StdioMcpToolAdapterConfig], ): """Allows you to wrap an MCP tool running over STDIO and make it available to AutoGen. This adapter enables using MCP-compatible tools that communicate over standard input/output with AutoGen agents. Common use cases include wrapping command-line tools and local services that implement the Model Context Protocol (MCP). .. note:: To use this class, you need to install `mcp` extra for the `autogen-ext` package. .. code-block:: bash pip install -U "autogen-ext[mcp]" Args: server_params (StdioServerParams): Parameters for the MCP server connection, including command to run and its arguments tool (Tool): The MCP tool to wrap See :func:`~autogen_ext.tools.mcp.mcp_server_tools` for examples. """ component_config_schema = StdioMcpToolAdapterConfig component_provider_override = "autogen_ext.tools.mcp.StdioMcpToolAdapter" def __init__(self, server_params: StdioServerParams, tool: Tool) -> None: super().__init__(server_params=server_params, tool=tool) def _to_config(self) -> StdioMcpToolAdapterConfig: """ Convert the adapter to its configuration representation. Returns: StdioMcpToolAdapterConfig: The configuration of the adapter. """ return StdioMcpToolAdapterConfig(server_params=self._server_params, tool=self._tool) @classmethod def _from_config(cls, config: StdioMcpToolAdapterConfig) -> Self: """ Create an instance of StdioMcpToolAdapter from its configuration. Args: config (StdioMcpToolAdapterConfig): The configuration of the adapter. Returns: StdioMcpToolAdapter: An instance of StdioMcpToolAdapter. """ return cls(server_params=config.server_params, tool=config.tool)