Sample code for 30+ languages & platforms
DataFlex Requires Chilkat v11.6.0+

Call a Tool on an MCP Server

See more MCP Client Examples

Demonstrates Mcp.CallTool, which calls the MCP tools/call method for a named tool, passing a JSON arguments object and receiving the tool's result. The example calls the Microsoft Learn microsoft_docs_search tool.

Tip: Code to parse the returned JSON can be generated with Chilkat's online tool at https://tools.chilkat.io/jsonParse.

Background. The members of the arguments object are defined by the tool's input schema, which is reported by ListTools. This example uses the public, no-authentication Microsoft Learn MCP server.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMcp
    Variant vArgs
    Handle hoArgs
    Variant vResult
    Handle hoResult
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatMcp)) To hoMcp
    If (Not(IsComObjectCreated(hoMcp))) Begin
        Send CreateComObject of hoMcp
    End

    //  Connect to a public MCP (Model Context Protocol) server over its Streamable HTTP endpoint.  The
    //  Microsoft Learn MCP server is public and requires no authentication.
    Get ComConnect Of hoMcp "https://learn.microsoft.com/api/mcp" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoMcp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  Build the tool's input arguments.  The members required depend on the tool's input schema (see
    //  ListTools).  Here the Microsoft Learn "microsoft_docs_search" tool takes a search query.
    Get Create (RefClass(cComChilkatJsonObject)) To hoArgs
    If (Not(IsComObjectCreated(hoArgs))) Begin
        Send CreateComObject of hoArgs
    End
    Get ComUpdateString Of hoArgs "query" "How do I create an Azure storage account?" To iSuccess

    //  Call the MCP tools/call method for the named tool.  The tool's result is placed in the result
    //  JsonObject.
    Get Create (RefClass(cComChilkatJsonObject)) To hoResult
    If (Not(IsComObjectCreated(hoResult))) Begin
        Send CreateComObject of hoResult
    End
    Get pvComObject of hoArgs to vArgs
    Get pvComObject of hoResult to vResult
    Get ComCallTool Of hoMcp "microsoft_docs_search" vArgs vResult To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoMcp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Set ComEmitCompact Of hoResult To False
    Get ComEmit Of hoResult To sTemp1
    Showln sTemp1
    //  JSON parsing code for this result can be generated at Chilkat's online tool:
    //  https://tools.chilkat.io/jsonParse


End_Procedure