Skip to content

helpers

Class info

🛈 DocStrings

Helper functions for MCP server client operations.

This module contains stateless utility functions that support MCP tool conversion and content handling for PydanticAI integration.

extract_text_content

extract_text_content(mcp_content: list[ContentBlock]) -> str

Extract text content from MCP content blocks.

Parameters:

Name Type Description Default
mcp_content list[ContentBlock]

List of MCP content blocks

required

Returns:

Type Description
str

First available text content or fallback string

Source code in src/llmling_agent/mcp_server/helpers.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def extract_text_content(mcp_content: list[ContentBlock]) -> str:
    """Extract text content from MCP content blocks.

    Args:
        mcp_content: List of MCP content blocks

    Returns:
        First available text content or fallback string
    """
    from mcp.types import TextContent

    for block in mcp_content:
        match block:
            case TextContent(text=text):
                return text

    # Fallback: stringify the content
    return str(mcp_content[0]) if mcp_content else "Tool executed successfully"

extract_tool_call_args

extract_tool_call_args(messages: list[ModelMessage], tool_call_id: str) -> dict[str, Any]

Extract tool call arguments from message history.

Parameters:

Name Type Description Default
messages list[ModelMessage]

List of messages to search through

required
tool_call_id str

ID of the tool call to find

required

Returns:

Type Description
dict[str, Any]

Dictionary of tool call arguments

Source code in src/llmling_agent/mcp_server/helpers.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
def extract_tool_call_args(
    messages: list[ModelMessage], tool_call_id: str
) -> dict[str, Any]:
    """Extract tool call arguments from message history.

    Args:
        messages: List of messages to search through
        tool_call_id: ID of the tool call to find

    Returns:
        Dictionary of tool call arguments
    """
    for message in messages:
        if isinstance(message, ModelRequest):
            continue
        for part in message.parts:
            if (
                isinstance(part, BuiltinToolCallPart | ToolCallPart)
                and part.tool_call_id == tool_call_id
            ):
                return part.args_as_dict()

    return {}

mcp_tool_to_fn_schema

mcp_tool_to_fn_schema(tool: Tool) -> dict[str, Any]

Convert MCP tool to OpenAI function schema format.

Source code in src/llmling_agent/mcp_server/helpers.py
24
25
26
27
28
29
30
def mcp_tool_to_fn_schema(tool: MCPTool) -> dict[str, Any]:
    """Convert MCP tool to OpenAI function schema format."""
    return {
        "name": tool.name,
        "description": tool.description or "",
        "parameters": tool.inputSchema or {"type": "object", "properties": {}},
    }