MCP Client Call Reference Documentation¶
This document provides a comprehensive reference for the MCP (Model Control Protocol) client call functions, including detailed parameter descriptions, return types, and usage examples.
Table of Contents¶
Function Reference¶
aget_mcp_tools¶
Asynchronously fetches available MCP tools from the server with retry logic.
Parameters¶
| Parameter | Type | Required | Description | 
|---|---|---|---|
| server_path | Optional[str] | No | Path to the MCP server script | 
| format | str | No | Format of the returned tools (default: "openai") | 
| connection | Optional[MCPConnection] | No | MCP connection object | 
| *args | Any | No | Additional positional arguments | 
| **kwargs | Any | No | Additional keyword arguments | 
Returns¶
List[Dict[str, Any]]: List of available MCP tools in OpenAI format
Raises¶
- 
MCPValidationError: If server_path is invalid - 
MCPConnectionError: If connection to server fails 
Example¶
import asyncio
from swarms.tools.mcp_client_tools import aget_mcp_tools
from swarms.tools.mcp_connection import MCPConnection
async def main():
    # Using server path
    tools = await aget_mcp_tools(server_path="http://localhost:8000")
    # Using connection object
    connection = MCPConnection(
        host="localhost",
        port=8000,
        headers={"Authorization": "Bearer token"}
    )
    tools = await aget_mcp_tools(connection=connection)
    print(f"Found {len(tools)} tools")
if __name__ == "__main__":
    asyncio.run(main())
get_mcp_tools_sync¶
Synchronous version of get_mcp_tools that handles event loop management.
Parameters¶
| Parameter | Type | Required | Description | 
|---|---|---|---|
| server_path | Optional[str] | No | Path to the MCP server script | 
| format | str | No | Format of the returned tools (default: "openai") | 
| connection | Optional[MCPConnection] | No | MCP connection object | 
| *args | Any | No | Additional positional arguments | 
| **kwargs | Any | No | Additional keyword arguments | 
Returns¶
List[Dict[str, Any]]: List of available MCP tools in OpenAI format
Raises¶
- 
MCPValidationError: If server_path is invalid - 
MCPConnectionError: If connection to server fails - 
MCPExecutionError: If event loop management fails 
Example¶
from swarms.tools.mcp_client_tools import get_mcp_tools_sync
from swarms.tools.mcp_connection import MCPConnection
# Using server path
tools = get_mcp_tools_sync(server_path="http://localhost:8000")
# Using connection object
connection = MCPConnection(
    host="localhost",
    port=8000,
    headers={"Authorization": "Bearer token"}
)
tools = get_mcp_tools_sync(connection=connection)
print(f"Found {len(tools)} tools")
get_tools_for_multiple_mcp_servers¶
Get tools for multiple MCP servers concurrently using ThreadPoolExecutor.
Parameters¶
| Parameter | Type | Required | Description | 
|---|---|---|---|
| urls | List[str] | Yes | List of server URLs to fetch tools from | 
| connections | List[MCPConnection] | No | Optional list of MCPConnection objects | 
| format | str | No | Format to return tools in (default: "openai") | 
| output_type | Literal["json", "dict", "str"] | No | Type of output format (default: "str") | 
| max_workers | Optional[int] | No | Maximum number of worker threads | 
Returns¶
List[Dict[str, Any]]: Combined list of tools from all servers
Raises¶
MCPExecutionError: If fetching tools from any server fails
Example¶
from swarms.tools.mcp_client_tools import get_tools_for_multiple_mcp_servers
from swarms.tools.mcp_connection import MCPConnection
# Define server URLs
urls = [
    "http://server1:8000",
    "http://server2:8000"
]
# Optional: Define connections
connections = [
    MCPConnection(host="server1", port=8000),
    MCPConnection(host="server2", port=8000)
]
# Get tools from all servers
tools = get_tools_for_multiple_mcp_servers(
    urls=urls,
    connections=connections,
    format="openai",
    output_type="dict",
    max_workers=4
)
print(f"Found {len(tools)} tools across all servers")
execute_tool_call_simple¶
Execute a tool call using the MCP client.
Parameters¶
| Parameter | Type | Required | Description | 
|---|---|---|---|
| response | Any | No | Tool call response object | 
| server_path | str | No | Path to the MCP server | 
| connection | Optional[MCPConnection] | No | MCP connection object | 
| output_type | Literal["json", "dict", "str", "formatted"] | No | Type of output format (default: "str") | 
| *args | Any | No | Additional positional arguments | 
| **kwargs | Any | No | Additional keyword arguments | 
Returns¶
List[Dict[str, Any]]: Result of the tool execution
Raises¶
- 
MCPConnectionError: If connection to server fails - 
MCPExecutionError: If tool execution fails 
Example¶
import asyncio
from swarms.tools.mcp_client_tools import execute_tool_call_simple
from swarms.tools.mcp_connection import MCPConnection
async def main():
    # Example tool call response
    response = {
        "name": "example_tool",
        "parameters": {"param1": "value1"}
    }
    # Using server path
    result = await execute_tool_call_simple(
        response=response,
        server_path="http://localhost:8000",
        output_type="json"
    )
    # Using connection object
    connection = MCPConnection(
        host="localhost",
        port=8000,
        headers={"Authorization": "Bearer token"}
    )
    result = await execute_tool_call_simple(
        response=response,
        connection=connection,
        output_type="dict"
    )
    print(f"Tool execution result: {result}")
if __name__ == "__main__":
    asyncio.run(main())
Error Handling¶
The MCP client functions use a retry mechanism with exponential backoff for failed requests. The following error types may be raised:
- 
MCPValidationError: Raised when input validation fails - 
MCPConnectionError: Raised when connection to the MCP server fails - 
MCPExecutionError: Raised when tool execution fails 
Best Practices¶
- Always handle potential exceptions when using these functions
 - Use connection objects for authenticated requests
 - Consider using the async versions for better performance in async applications
 - Use appropriate output types based on your needs
 - When working with multiple servers, adjust max_workers based on your system's capabilities