Skip to main content

MCP Reference

This page provides detailed reference information for Tyler's Model Context Protocol (MCP) integration components.

MCPService​

The MCPService class manages connections to MCP servers, discovers tools, and handles tool execution.

Methods​

async initialize(server_configs: List[Dict[str, Any]]) -> None​

Initializes the MCP service with the provided server configurations.

Parameters:

  • server_configs: List of server configuration dictionaries

Example:

await mcp_service.initialize([
{
"name": "brave-search",
"transport": "stdio",
"command": ["python", "-m", "brave_search.server"],
"auto_start": True
}
])

async _connect_to_server(name: str, config: Dict[str, Any]) -> Optional[ClientSession]​

Connects to an MCP server using the specified configuration.

Parameters:

  • name: Server name
  • config: Server configuration dictionary

Returns:

  • ClientSession object if connection is successful, None otherwise

async _discover_tools(name: str, session: ClientSession) -> None​

Discovers available tools from an MCP server.

Parameters:

  • name: Server name
  • session: MCP client session

_convert_mcp_tool_to_tyler_tool(server_name: str, tool, session: ClientSession) -> Dict​

Converts an MCP tool definition to a Tyler-compatible tool definition.

Parameters:

  • server_name: Server name
  • tool: MCP tool definition
  • session: MCP client session

Returns:

  • Tyler-compatible tool definition dictionary

_create_tool_implementation(server_name: str, tool_name: str)​

Creates a function that implements an MCP tool.

Parameters:

  • server_name: Server name
  • tool_name: Tool name

Returns:

  • Function that executes the MCP tool

get_tools_for_agent(server_names=None)​

Gets all available tools for use with a Tyler agent.

Parameters:

  • server_names: Optional list of server names to filter tools by

Returns:

  • List of Tyler-compatible tool definitions

async cleanup()​

Cleans up all MCP server connections.

MCPServerManager​

The MCPServerManager class handles starting, stopping, and managing MCP server processes.

Methods​

async start_server(name: str, config: Dict[str, Any]) -> bool​

Starts an MCP server with the specified configuration.

Parameters:

  • name: Server name
  • config: Server configuration dictionary

Returns:

  • True if server started successfully, False otherwise

Example:

success = await server_manager.start_server("brave-search", {
"transport": "stdio",
"command": ["python", "-m", "brave_search.server"],
"auto_start": True
})

async stop_server(name: str) -> bool​

Stops a running MCP server.

Parameters:

  • name: Server name

Returns:

  • True if server stopped successfully, False otherwise

Example:

success = await server_manager.stop_server("brave-search")

async stop_all_servers() -> None​

Stops all running MCP servers.

Example:

await server_manager.stop_all_servers()

Utility Functions​

async initialize_mcp_service(server_configs: List[Dict[str, Any]]) -> MCPService​

Initializes and returns an MCPService instance.

Parameters:

  • server_configs: List of server configuration dictionaries

Returns:

  • Initialized MCPService instance

Example:

mcp_service = await initialize_mcp_service([
{
"name": "brave-search",
"transport": "stdio",
"command": ["python", "-m", "brave_search.server"],
"auto_start": True
}
])

async cleanup_mcp_service(mcp_service: MCPService) -> None​

Cleans up an MCPService instance.

Parameters:

  • mcp_service: MCPService instance to clean up

Example:

await cleanup_mcp_service(mcp_service)

Server Configuration​

MCP servers can be configured with the following options:

OptionDescriptionRequiredDefault
nameUnique identifier for the serverYes-
transportTransport protocol: stdio, sse, or websocketYes-
commandCommand to start the server (for stdio transport with auto_start: true)For stdio with auto_start: true-
auto_startWhether Tyler should automatically start and manage the serverNoFalse
urlURL for connecting to the server (for sse and websocket transports)For sse and websocket-
headersOptional HTTP headers for connection (for sse and websocket transports)No{}