Gen-AI Developer Classroom notes 13/Jan/2026

MCP-Client

  • Lets build a mcp client with langchain as client library which uses both llm and mcp tools

  • Lets create a new project

uv init
uv add mcp[cli] httpx
uv add langchain langchain-google-vertexai
uv add langchain-mcp-adapters
  • Create a server.py with the following
from mcp.server.fastmcp import FastMCP

# creating a server
mcp = FastMCP("hello-mcp")

# define tools
@mcp.tool()
def add(a:int|float, b:int|float) -> int|float:
    """This method adds two numbers

    Args:
        a (int | float): number 
        b (int | float): number

    Returns:
        int|float: a + b
    """
    return a + b

@mcp.tool()
def subtract(a:int|float, b:int|float) -> int|float:
    """This method subtracts two numbers

    Args:
        a (int | float): number
        b (int | float): number

    Returns:
        int|float: a - b
    """
    return a - b

@mcp.tool()
def multiply(a:int|float, b:int|float) -> int|float:
    """This method multiplies two numbers

    Args:
        a (int | float): number
        b (int | float): number

    Returns:
        int|float: a * b
    """
    return a * b

@mcp.tool()
def divide(a:int|float, b:int|float) -> int|float:
    """This method divides two numbers

    Args:
        a (int | float): number
        b (int | float): number

    Returns:
        int|float: a / b
    """
    return a / b

@mcp.tool()
def mod(a:int|float, b:int|float) -> int|float:
    """This method returns the remainder of a divided by b

    Args:
        a (int | float): number
        b (int | float): number

    Returns:
        int|float: a % b
    """
    return a % b

if __name__ == "__main__":
    mcp.run(transport="stdio")

  • Using mcp tools from langchain (for this lets create a notebook) Refer Here for all the changes
  • For client i.e. main.py using stdio
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model

async def main():
    # create a  client
    client = MultiServerMCPClient({
        "hello-mcp": {
            "transport": "stdio",
            "command": "python",
            "args": ["C:\\khajaclassroom\\GenerativeAI\\agenticai\\dec25\\mcp\\langchain_mcp_client\\server.py"]
        }
    })
    tools = await client.get_tools()
    # for tool in tools:
    #     print(tool)
    llm = init_chat_model("gemini-2.5-flash-lite", model_provider="google_vertexai")
    agent = create_agent(model=llm, tools=tools)

    result = await agent.ainvoke({
        "messages" : [
            {
                "role": "user",
                "content": "What is 2 + 2?"
            }
        ]
    })
    #print(result)
    for message in result["messages"]:
        print(message.content)



if __name__ == "__main__":
    asyncio.run(main())

By continuous learner

enthusiastic technology learner

Leave a comment